// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/abf.api.json
// Package abf contains generated bindings for API file abf.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/acl.api.json
// Package acl contains generated bindings for API file acl.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/acl_types.api.json
// Package acl_types contains generated bindings for API file acl_types.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/af_packet.api.json
// Package af_packet contains generated bindings for API file af_packet.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/arp.api.json
// Package arp contains generated bindings for API file arp.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/avf.api.json
// Package avf contains generated bindings for API file avf.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/bfd.api.json
// Package bfd contains generated bindings for API file bfd.api.
//
// 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.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/bond.api.json
// Package bond contains generated bindings for API file bond.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/builtinurl.api.json
// Package builtinurl contains generated bindings for API file builtinurl.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/cdp.api.json
// Package cdp contains generated bindings for API file cdp.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/classify.api.json
// Package classify contains generated bindings for API file classify.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/cop.api.json
// Package cop contains generated bindings for API file cop.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/ct6.api.json
// Package ct6 contains generated bindings for API file ct6.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/dhcp.api.json
// Package dhcp contains generated bindings for API file dhcp.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/dhcp6_ia_na_client_cp.api.json
// Package dhcp6_ia_na_client_cp contains generated bindings for API file dhcp6_ia_na_client_cp.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/dhcp6_pd_client_cp.api.json
// Package dhcp6_pd_client_cp contains generated bindings for API file dhcp6_pd_client_cp.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/dns.api.json
// Package dns contains generated bindings for API file dns.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/dslite.api.json
// Package dslite contains generated bindings for API file dslite.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/ethernet_types.api.json
// Package ethernet_types contains generated bindings for API file ethernet_types.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/feature.api.json
// Package feature contains generated bindings for API file feature.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/fib_types.api.json
// Package fib_types contains generated bindings for API file fib_types.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/flowprobe.api.json
// Package flowprobe contains generated bindings for API file flowprobe.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/gbp.api.json
// Package gbp contains generated bindings for API file gbp.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/geneve.api.json
// Package geneve contains generated bindings for API file geneve.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/gre.api.json
// Package gre contains generated bindings for API file gre.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/gso.api.json
// Package gso contains generated bindings for API file gso.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/gtpu.api.json
// Package gtpu contains generated bindings for API file gtpu.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/http_static.api.json
// Package http_static contains generated bindings for API file http_static.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/igmp.api.json
// Package igmp contains generated bindings for API file igmp.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/ikev2.api.json
// Package ikev2 contains generated bindings for API file ikev2.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/interface.api.json
// Package interfaces contains generated bindings for API file interface.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/interface_types.api.json
// Package interface_types contains generated bindings for API file interface_types.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/ioam_cache.api.json
// Package ioam_cache contains generated bindings for API file ioam_cache.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/ioam_export.api.json
// Package ioam_export contains generated bindings for API file ioam_export.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/ioam_vxlan_gpe.api.json
// Package ioam_vxlan_gpe contains generated bindings for API file ioam_vxlan_gpe.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/ip.api.json
// Package ip contains generated bindings for API file ip.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/ip6_nd.api.json
// Package ip6_nd contains generated bindings for API file ip6_nd.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/ip_neighbor.api.json
// Package ip_neighbor contains generated bindings for API file ip_neighbor.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/ip_types.api.json
// Package ip_types contains generated bindings for API file ip_types.api.
//
// AddressUnion defines union 'address_union'.
type AddressUnion struct {
- // IP4 *IP4Address
- // IP6 *IP6Address
+ // AddressUnion can be one of:
+ // - IP4 *IP4Address
+ // - IP6 *IP6Address
XXX_UnionData [16]byte
}
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/ipfix_export.api.json
// Package ipfix_export contains generated bindings for API file ipfix_export.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/ipip.api.json
// Package ipip contains generated bindings for API file ipip.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/ipsec.api.json
// Package ipsec contains generated bindings for API file ipsec.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/ipsec_types.api.json
// Package ipsec_types contains generated bindings for API file ipsec_types.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/l2.api.json
// Package l2 contains generated bindings for API file l2.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/l2e.api.json
// Package l2e contains generated bindings for API file l2e.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/l2tp.api.json
// Package l2tp contains generated bindings for API file l2tp.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/l3xc.api.json
// Package l3xc contains generated bindings for API file l3xc.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/lacp.api.json
// Package lacp contains generated bindings for API file lacp.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/lb.api.json
// Package lb contains generated bindings for API file lb.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/lb_types.api.json
// Package lb_types contains generated bindings for API file lb_types.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/lisp.api.json
// Package lisp contains generated bindings for API file lisp.api.
//
if m == nil {
return 0
}
- size += 1 // m.IsAdd
- size += 4 // m.Vni
- size += 1 // m.Reid.Type
- size += 1 * 6 // m.Reid.Address
- size += 1 // m.Leid.Type
- size += 1 * 6 // m.Leid.Address
+ size += 1 // m.IsAdd
+ size += 4 // m.Vni
+ size += 1 // m.Reid.Type
+ size += 1 * 18 // m.Reid.Address
+ size += 1 // m.Leid.Type
+ size += 1 * 18 // m.Leid.Address
return size
}
func (m *LispAddDelAdjacency) Marshal(b []byte) ([]byte, error) {
buf.EncodeBool(m.IsAdd)
buf.EncodeUint32(m.Vni)
buf.EncodeUint8(uint8(m.Reid.Type))
- buf.EncodeBytes(m.Reid.Address.XXX_UnionData[:], 6)
+ buf.EncodeBytes(m.Reid.Address.XXX_UnionData[:], 18)
buf.EncodeUint8(uint8(m.Leid.Type))
- buf.EncodeBytes(m.Leid.Address.XXX_UnionData[:], 6)
+ buf.EncodeBytes(m.Leid.Address.XXX_UnionData[:], 18)
return buf.Bytes(), nil
}
func (m *LispAddDelAdjacency) Unmarshal(b []byte) error {
m.IsAdd = buf.DecodeBool()
m.Vni = buf.DecodeUint32()
m.Reid.Type = lisp_types.EidType(buf.DecodeUint8())
- copy(m.Reid.Address.XXX_UnionData[:], buf.DecodeBytes(6))
+ copy(m.Reid.Address.XXX_UnionData[:], buf.DecodeBytes(18))
m.Leid.Type = lisp_types.EidType(buf.DecodeUint8())
- copy(m.Leid.Address.XXX_UnionData[:], buf.DecodeBytes(6))
+ copy(m.Leid.Address.XXX_UnionData[:], buf.DecodeBytes(18))
return nil
}
}
size += 1 // m.IsAdd
size += 1 // m.Eid.Type
- size += 1 * 6 // m.Eid.Address
+ size += 1 * 18 // m.Eid.Address
size += 64 // m.LocatorSetName
size += 4 // m.Vni
size += 1 // m.Key.ID
buf := codec.NewBuffer(b)
buf.EncodeBool(m.IsAdd)
buf.EncodeUint8(uint8(m.Eid.Type))
- buf.EncodeBytes(m.Eid.Address.XXX_UnionData[:], 6)
+ buf.EncodeBytes(m.Eid.Address.XXX_UnionData[:], 18)
buf.EncodeString(m.LocatorSetName, 64)
buf.EncodeUint32(m.Vni)
buf.EncodeUint8(uint8(m.Key.ID))
buf := codec.NewBuffer(b)
m.IsAdd = buf.DecodeBool()
m.Eid.Type = lisp_types.EidType(buf.DecodeUint8())
- copy(m.Eid.Address.XXX_UnionData[:], buf.DecodeBytes(6))
+ copy(m.Eid.Address.XXX_UnionData[:], buf.DecodeBytes(18))
m.LocatorSetName = buf.DecodeString(64)
m.Vni = buf.DecodeUint32()
m.Key.ID = lisp_types.HmacKeyID(buf.DecodeUint8())
if m == nil {
return 0
}
- size += 1 // m.IsAdd
- size += 1 // m.IsSrcDst
- size += 1 // m.DelAll
- size += 4 // m.Vni
- size += 1 // m.Action
- size += 1 // m.Deid.Type
- size += 1 * 6 // m.Deid.Address
- size += 1 // m.Seid.Type
- size += 1 * 6 // m.Seid.Address
- size += 4 // m.RlocNum
+ size += 1 // m.IsAdd
+ size += 1 // m.IsSrcDst
+ size += 1 // m.DelAll
+ size += 4 // m.Vni
+ size += 1 // m.Action
+ size += 1 // m.Deid.Type
+ size += 1 * 18 // m.Deid.Address
+ size += 1 // m.Seid.Type
+ size += 1 * 18 // m.Seid.Address
+ size += 4 // m.RlocNum
for j1 := 0; j1 < len(m.Rlocs); j1++ {
var s1 lisp_types.RemoteLocator
_ = s1
buf.EncodeUint32(m.Vni)
buf.EncodeUint8(m.Action)
buf.EncodeUint8(uint8(m.Deid.Type))
- buf.EncodeBytes(m.Deid.Address.XXX_UnionData[:], 6)
+ buf.EncodeBytes(m.Deid.Address.XXX_UnionData[:], 18)
buf.EncodeUint8(uint8(m.Seid.Type))
- buf.EncodeBytes(m.Seid.Address.XXX_UnionData[:], 6)
+ buf.EncodeBytes(m.Seid.Address.XXX_UnionData[:], 18)
buf.EncodeUint32(uint32(len(m.Rlocs)))
for j0 := 0; j0 < len(m.Rlocs); j0++ {
var v0 lisp_types.RemoteLocator // Rlocs
m.Vni = buf.DecodeUint32()
m.Action = buf.DecodeUint8()
m.Deid.Type = lisp_types.EidType(buf.DecodeUint8())
- copy(m.Deid.Address.XXX_UnionData[:], buf.DecodeBytes(6))
+ copy(m.Deid.Address.XXX_UnionData[:], buf.DecodeBytes(18))
m.Seid.Type = lisp_types.EidType(buf.DecodeUint8())
- copy(m.Seid.Address.XXX_UnionData[:], buf.DecodeBytes(6))
+ copy(m.Seid.Address.XXX_UnionData[:], buf.DecodeBytes(18))
m.RlocNum = buf.DecodeUint32()
m.Rlocs = make([]lisp_types.RemoteLocator, m.RlocNum)
for j0 := 0; j0 < len(m.Rlocs); j0++ {
if j1 < len(m.Adjacencies) {
s1 = m.Adjacencies[j1]
}
- size += 1 // s1.Reid.Type
- size += 1 * 6 // s1.Reid.Address
- size += 1 // s1.Leid.Type
- size += 1 * 6 // s1.Leid.Address
+ size += 1 // s1.Reid.Type
+ size += 1 * 18 // s1.Reid.Address
+ size += 1 // s1.Leid.Type
+ size += 1 * 18 // s1.Leid.Address
}
return size
}
v0 = m.Adjacencies[j0]
}
buf.EncodeUint8(uint8(v0.Reid.Type))
- buf.EncodeBytes(v0.Reid.Address.XXX_UnionData[:], 6)
+ buf.EncodeBytes(v0.Reid.Address.XXX_UnionData[:], 18)
buf.EncodeUint8(uint8(v0.Leid.Type))
- buf.EncodeBytes(v0.Leid.Address.XXX_UnionData[:], 6)
+ buf.EncodeBytes(v0.Leid.Address.XXX_UnionData[:], 18)
}
return buf.Bytes(), nil
}
m.Adjacencies = make([]LispAdjacency, m.Count)
for j0 := 0; j0 < len(m.Adjacencies); j0++ {
m.Adjacencies[j0].Reid.Type = lisp_types.EidType(buf.DecodeUint8())
- copy(m.Adjacencies[j0].Reid.Address.XXX_UnionData[:], buf.DecodeBytes(6))
+ copy(m.Adjacencies[j0].Reid.Address.XXX_UnionData[:], buf.DecodeBytes(18))
m.Adjacencies[j0].Leid.Type = lisp_types.EidType(buf.DecodeUint8())
- copy(m.Adjacencies[j0].Leid.Address.XXX_UnionData[:], buf.DecodeBytes(6))
+ copy(m.Adjacencies[j0].Leid.Address.XXX_UnionData[:], buf.DecodeBytes(18))
}
return nil
}
size += 1 // m.IsSrcDst
size += 4 // m.Vni
size += 1 // m.Deid.Type
- size += 1 * 6 // m.Deid.Address
+ size += 1 * 18 // m.Deid.Address
size += 1 // m.Seid.Type
- size += 1 * 6 // m.Seid.Address
+ size += 1 * 18 // m.Seid.Address
size += 4 // m.TTL
size += 1 // m.Authoritative
size += 1 // m.Key.ID
buf.EncodeBool(m.IsSrcDst)
buf.EncodeUint32(m.Vni)
buf.EncodeUint8(uint8(m.Deid.Type))
- buf.EncodeBytes(m.Deid.Address.XXX_UnionData[:], 6)
+ buf.EncodeBytes(m.Deid.Address.XXX_UnionData[:], 18)
buf.EncodeUint8(uint8(m.Seid.Type))
- buf.EncodeBytes(m.Seid.Address.XXX_UnionData[:], 6)
+ buf.EncodeBytes(m.Seid.Address.XXX_UnionData[:], 18)
buf.EncodeUint32(m.TTL)
buf.EncodeUint8(m.Authoritative)
buf.EncodeUint8(uint8(m.Key.ID))
m.IsSrcDst = buf.DecodeBool()
m.Vni = buf.DecodeUint32()
m.Deid.Type = lisp_types.EidType(buf.DecodeUint8())
- copy(m.Deid.Address.XXX_UnionData[:], buf.DecodeBytes(6))
+ copy(m.Deid.Address.XXX_UnionData[:], buf.DecodeBytes(18))
m.Seid.Type = lisp_types.EidType(buf.DecodeUint8())
- copy(m.Seid.Address.XXX_UnionData[:], buf.DecodeBytes(6))
+ copy(m.Seid.Address.XXX_UnionData[:], buf.DecodeBytes(18))
m.TTL = buf.DecodeUint32()
m.Authoritative = buf.DecodeUint8()
m.Key.ID = lisp_types.HmacKeyID(buf.DecodeUint8())
if m == nil {
return 0
}
- size += 1 // m.EidSet
- size += 1 // m.PrefixLength
- size += 4 // m.Vni
- size += 1 // m.Eid.Type
- size += 1 * 6 // m.Eid.Address
- size += 1 // m.Filter
+ size += 1 // m.EidSet
+ size += 1 // m.PrefixLength
+ size += 4 // m.Vni
+ size += 1 // m.Eid.Type
+ size += 1 * 18 // m.Eid.Address
+ size += 1 // m.Filter
return size
}
func (m *LispEidTableDump) Marshal(b []byte) ([]byte, error) {
buf.EncodeUint8(m.PrefixLength)
buf.EncodeUint32(m.Vni)
buf.EncodeUint8(uint8(m.Eid.Type))
- buf.EncodeBytes(m.Eid.Address.XXX_UnionData[:], 6)
+ buf.EncodeBytes(m.Eid.Address.XXX_UnionData[:], 18)
buf.EncodeUint8(uint8(m.Filter))
return buf.Bytes(), nil
}
m.PrefixLength = buf.DecodeUint8()
m.Vni = buf.DecodeUint32()
m.Eid.Type = lisp_types.EidType(buf.DecodeUint8())
- copy(m.Eid.Address.XXX_UnionData[:], buf.DecodeBytes(6))
+ copy(m.Eid.Address.XXX_UnionData[:], buf.DecodeBytes(18))
m.Filter = LispLocatorSetFilter(buf.DecodeUint8())
return nil
}
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/lisp_gpe.api.json
// Package lisp_gpe contains generated bindings for API file lisp_gpe.api.
//
if m == nil {
return 0
}
- size += 1 // m.IsAdd
- size += 1 // m.RmtEid.Type
- size += 1 * 6 // m.RmtEid.Address
- size += 1 // m.LclEid.Type
- size += 1 * 6 // m.LclEid.Address
- size += 4 // m.Vni
- size += 4 // m.DpTable
- size += 1 // m.Action
- size += 4 // m.LocNum
+ size += 1 // m.IsAdd
+ size += 1 // m.RmtEid.Type
+ size += 1 * 18 // m.RmtEid.Address
+ size += 1 // m.LclEid.Type
+ size += 1 * 18 // m.LclEid.Address
+ size += 4 // m.Vni
+ size += 4 // m.DpTable
+ size += 1 // m.Action
+ size += 4 // m.LocNum
for j1 := 0; j1 < len(m.Locs); j1++ {
var s1 GpeLocator
_ = s1
buf := codec.NewBuffer(b)
buf.EncodeBool(m.IsAdd)
buf.EncodeUint8(uint8(m.RmtEid.Type))
- buf.EncodeBytes(m.RmtEid.Address.XXX_UnionData[:], 6)
+ buf.EncodeBytes(m.RmtEid.Address.XXX_UnionData[:], 18)
buf.EncodeUint8(uint8(m.LclEid.Type))
- buf.EncodeBytes(m.LclEid.Address.XXX_UnionData[:], 6)
+ buf.EncodeBytes(m.LclEid.Address.XXX_UnionData[:], 18)
buf.EncodeUint32(m.Vni)
buf.EncodeUint32(m.DpTable)
buf.EncodeUint8(m.Action)
buf := codec.NewBuffer(b)
m.IsAdd = buf.DecodeBool()
m.RmtEid.Type = lisp_types.EidType(buf.DecodeUint8())
- copy(m.RmtEid.Address.XXX_UnionData[:], buf.DecodeBytes(6))
+ copy(m.RmtEid.Address.XXX_UnionData[:], buf.DecodeBytes(18))
m.LclEid.Type = lisp_types.EidType(buf.DecodeUint8())
- copy(m.LclEid.Address.XXX_UnionData[:], buf.DecodeBytes(6))
+ copy(m.LclEid.Address.XXX_UnionData[:], buf.DecodeBytes(18))
m.Vni = buf.DecodeUint32()
m.DpTable = buf.DecodeUint32()
m.Action = buf.DecodeUint8()
if j1 < len(m.Entries) {
s1 = m.Entries[j1]
}
- size += 4 // s1.FwdEntryIndex
- size += 4 // s1.DpTable
- size += 1 // s1.Leid.Type
- size += 1 * 6 // s1.Leid.Address
- size += 1 // s1.Reid.Type
- size += 1 * 6 // s1.Reid.Address
- size += 4 // s1.Vni
- size += 1 // s1.Action
+ size += 4 // s1.FwdEntryIndex
+ size += 4 // s1.DpTable
+ size += 1 // s1.Leid.Type
+ size += 1 * 18 // s1.Leid.Address
+ size += 1 // s1.Reid.Type
+ size += 1 * 18 // s1.Reid.Address
+ size += 4 // s1.Vni
+ size += 1 // s1.Action
}
return size
}
buf.EncodeUint32(v0.FwdEntryIndex)
buf.EncodeUint32(v0.DpTable)
buf.EncodeUint8(uint8(v0.Leid.Type))
- buf.EncodeBytes(v0.Leid.Address.XXX_UnionData[:], 6)
+ buf.EncodeBytes(v0.Leid.Address.XXX_UnionData[:], 18)
buf.EncodeUint8(uint8(v0.Reid.Type))
- buf.EncodeBytes(v0.Reid.Address.XXX_UnionData[:], 6)
+ buf.EncodeBytes(v0.Reid.Address.XXX_UnionData[:], 18)
buf.EncodeUint32(v0.Vni)
buf.EncodeUint8(v0.Action)
}
m.Entries[j0].FwdEntryIndex = buf.DecodeUint32()
m.Entries[j0].DpTable = buf.DecodeUint32()
m.Entries[j0].Leid.Type = lisp_types.EidType(buf.DecodeUint8())
- copy(m.Entries[j0].Leid.Address.XXX_UnionData[:], buf.DecodeBytes(6))
+ copy(m.Entries[j0].Leid.Address.XXX_UnionData[:], buf.DecodeBytes(18))
m.Entries[j0].Reid.Type = lisp_types.EidType(buf.DecodeUint8())
- copy(m.Entries[j0].Reid.Address.XXX_UnionData[:], buf.DecodeBytes(6))
+ copy(m.Entries[j0].Reid.Address.XXX_UnionData[:], buf.DecodeBytes(18))
m.Entries[j0].Vni = buf.DecodeUint32()
m.Entries[j0].Action = buf.DecodeUint8()
}
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/lisp_types.api.json
// Package lisp_types contains generated bindings for API file lisp_types.api.
//
// Eid defines type 'eid'.
type Eid struct {
- Type EidType `binapi:"eid_type,name=type" json:"type,omitempty"`
- Address EidAddress `binapi:"eid_address,name=address" json:"address,omitempty"`
+ Type EidType `binapi:"eid_type,name=type" json:"type,omitempty"`
+ Address EidAddressUnion `binapi:"eid_address,name=address" json:"address,omitempty"`
}
// HmacKey defines type 'hmac_key'.
IPAddress ip_types.Address `binapi:"address,name=ip_address" json:"ip_address,omitempty"`
}
-// EidAddress defines union 'eid_address'.
-type EidAddress struct {
- // Prefix *ip_types.Prefix
- // Mac *ethernet_types.MacAddress
- // Nsh *Nsh
- XXX_UnionData [6]byte
+// EidAddressUnion defines union 'eid_address'.
+type EidAddressUnion struct {
+ // EidAddressUnion can be one of:
+ // - Prefix *ip_types.Prefix
+ // - Mac *ethernet_types.MacAddress
+ // - Nsh *Nsh
+ XXX_UnionData [18]byte
}
-func EidAddressPrefix(a ip_types.Prefix) (u EidAddress) {
+func EidAddressUnionPrefix(a ip_types.Prefix) (u EidAddressUnion) {
u.SetPrefix(a)
return
}
-func (u *EidAddress) SetPrefix(a ip_types.Prefix) {
+func (u *EidAddressUnion) SetPrefix(a ip_types.Prefix) {
buf := codec.NewBuffer(u.XXX_UnionData[:])
buf.EncodeUint8(uint8(a.Address.Af))
buf.EncodeBytes(a.Address.Un.XXX_UnionData[:], 16)
buf.EncodeUint8(a.Len)
}
-func (u *EidAddress) GetPrefix() (a ip_types.Prefix) {
+func (u *EidAddressUnion) GetPrefix() (a ip_types.Prefix) {
buf := codec.NewBuffer(u.XXX_UnionData[:])
a.Address.Af = ip_types.AddressFamily(buf.DecodeUint8())
copy(a.Address.Un.XXX_UnionData[:], buf.DecodeBytes(16))
return
}
-func EidAddressMac(a ethernet_types.MacAddress) (u EidAddress) {
+func EidAddressUnionMac(a ethernet_types.MacAddress) (u EidAddressUnion) {
u.SetMac(a)
return
}
-func (u *EidAddress) SetMac(a ethernet_types.MacAddress) {
+func (u *EidAddressUnion) SetMac(a ethernet_types.MacAddress) {
buf := codec.NewBuffer(u.XXX_UnionData[:])
buf.EncodeBytes(a[:], 6)
}
-func (u *EidAddress) GetMac() (a ethernet_types.MacAddress) {
+func (u *EidAddressUnion) GetMac() (a ethernet_types.MacAddress) {
buf := codec.NewBuffer(u.XXX_UnionData[:])
copy(a[:], buf.DecodeBytes(6))
return
}
-func EidAddressNsh(a Nsh) (u EidAddress) {
+func EidAddressUnionNsh(a Nsh) (u EidAddressUnion) {
u.SetNsh(a)
return
}
-func (u *EidAddress) SetNsh(a Nsh) {
+func (u *EidAddressUnion) SetNsh(a Nsh) {
buf := codec.NewBuffer(u.XXX_UnionData[:])
buf.EncodeUint32(a.Spi)
buf.EncodeUint8(a.Si)
}
-func (u *EidAddress) GetNsh() (a Nsh) {
+func (u *EidAddressUnion) GetNsh() (a Nsh) {
buf := codec.NewBuffer(u.XXX_UnionData[:])
a.Spi = buf.DecodeUint32()
a.Si = buf.DecodeUint8()
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/lldp.api.json
// Package lldp contains generated bindings for API file lldp.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/mactime.api.json
// Package mactime contains generated bindings for API file mactime.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/map.api.json
// Package maps contains generated bindings for API file map.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/mdata.api.json
// Package mdata contains generated bindings for API file mdata.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/memclnt.api.json
// Package memclnt contains generated bindings for API file memclnt.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/memif.api.json
// Package memif contains generated bindings for API file memif.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/mfib_types.api.json
// Package mfib_types contains generated bindings for API file mfib_types.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/mpls.api.json
// Package mpls contains generated bindings for API file mpls.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/nat.api.json
// Package nat contains generated bindings for API file nat.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/nsh.api.json
// Package nsh contains generated bindings for API file nsh.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/nsim.api.json
// Package nsim contains generated bindings for API file nsim.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/oddbuf.api.json
// Package oddbuf contains generated bindings for API file oddbuf.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/one.api.json
// Package one contains generated bindings for API file one.api.
//
if m == nil {
return 0
}
- size += 1 // m.IsAdd
- size += 4 // m.Vni
- size += 1 // m.Reid.Type
- size += 1 * 6 // m.Reid.Address
- size += 1 // m.Leid.Type
- size += 1 * 6 // m.Leid.Address
+ size += 1 // m.IsAdd
+ size += 4 // m.Vni
+ size += 1 // m.Reid.Type
+ size += 1 * 18 // m.Reid.Address
+ size += 1 // m.Leid.Type
+ size += 1 * 18 // m.Leid.Address
return size
}
func (m *OneAddDelAdjacency) Marshal(b []byte) ([]byte, error) {
buf.EncodeUint8(m.IsAdd)
buf.EncodeUint32(m.Vni)
buf.EncodeUint8(uint8(m.Reid.Type))
- buf.EncodeBytes(m.Reid.Address.XXX_UnionData[:], 6)
+ buf.EncodeBytes(m.Reid.Address.XXX_UnionData[:], 18)
buf.EncodeUint8(uint8(m.Leid.Type))
- buf.EncodeBytes(m.Leid.Address.XXX_UnionData[:], 6)
+ buf.EncodeBytes(m.Leid.Address.XXX_UnionData[:], 18)
return buf.Bytes(), nil
}
func (m *OneAddDelAdjacency) Unmarshal(b []byte) error {
m.IsAdd = buf.DecodeUint8()
m.Vni = buf.DecodeUint32()
m.Reid.Type = lisp_types.EidType(buf.DecodeUint8())
- copy(m.Reid.Address.XXX_UnionData[:], buf.DecodeBytes(6))
+ copy(m.Reid.Address.XXX_UnionData[:], buf.DecodeBytes(18))
m.Leid.Type = lisp_types.EidType(buf.DecodeUint8())
- copy(m.Leid.Address.XXX_UnionData[:], buf.DecodeBytes(6))
+ copy(m.Leid.Address.XXX_UnionData[:], buf.DecodeBytes(18))
return nil
}
}
size += 1 // m.IsAdd
size += 1 // m.Eid.Type
- size += 1 * 6 // m.Eid.Address
+ size += 1 * 18 // m.Eid.Address
size += 64 // m.LocatorSetName
size += 4 // m.Vni
size += 1 // m.Key.ID
buf := codec.NewBuffer(b)
buf.EncodeBool(m.IsAdd)
buf.EncodeUint8(uint8(m.Eid.Type))
- buf.EncodeBytes(m.Eid.Address.XXX_UnionData[:], 6)
+ buf.EncodeBytes(m.Eid.Address.XXX_UnionData[:], 18)
buf.EncodeString(m.LocatorSetName, 64)
buf.EncodeUint32(m.Vni)
buf.EncodeUint8(uint8(m.Key.ID))
buf := codec.NewBuffer(b)
m.IsAdd = buf.DecodeBool()
m.Eid.Type = lisp_types.EidType(buf.DecodeUint8())
- copy(m.Eid.Address.XXX_UnionData[:], buf.DecodeBytes(6))
+ copy(m.Eid.Address.XXX_UnionData[:], buf.DecodeBytes(18))
m.LocatorSetName = buf.DecodeString(64)
m.Vni = buf.DecodeUint32()
m.Key.ID = lisp_types.HmacKeyID(buf.DecodeUint8())
if m == nil {
return 0
}
- size += 1 // m.IsAdd
- size += 1 // m.IsSrcDst
- size += 1 // m.DelAll
- size += 4 // m.Vni
- size += 1 // m.Action
- size += 1 // m.Deid.Type
- size += 1 * 6 // m.Deid.Address
- size += 1 // m.Seid.Type
- size += 1 * 6 // m.Seid.Address
- size += 4 // m.RlocNum
+ size += 1 // m.IsAdd
+ size += 1 // m.IsSrcDst
+ size += 1 // m.DelAll
+ size += 4 // m.Vni
+ size += 1 // m.Action
+ size += 1 // m.Deid.Type
+ size += 1 * 18 // m.Deid.Address
+ size += 1 // m.Seid.Type
+ size += 1 * 18 // m.Seid.Address
+ size += 4 // m.RlocNum
for j1 := 0; j1 < len(m.Rlocs); j1++ {
var s1 lisp_types.RemoteLocator
_ = s1
buf.EncodeUint32(m.Vni)
buf.EncodeUint8(m.Action)
buf.EncodeUint8(uint8(m.Deid.Type))
- buf.EncodeBytes(m.Deid.Address.XXX_UnionData[:], 6)
+ buf.EncodeBytes(m.Deid.Address.XXX_UnionData[:], 18)
buf.EncodeUint8(uint8(m.Seid.Type))
- buf.EncodeBytes(m.Seid.Address.XXX_UnionData[:], 6)
+ buf.EncodeBytes(m.Seid.Address.XXX_UnionData[:], 18)
buf.EncodeUint32(uint32(len(m.Rlocs)))
for j0 := 0; j0 < len(m.Rlocs); j0++ {
var v0 lisp_types.RemoteLocator // Rlocs
m.Vni = buf.DecodeUint32()
m.Action = buf.DecodeUint8()
m.Deid.Type = lisp_types.EidType(buf.DecodeUint8())
- copy(m.Deid.Address.XXX_UnionData[:], buf.DecodeBytes(6))
+ copy(m.Deid.Address.XXX_UnionData[:], buf.DecodeBytes(18))
m.Seid.Type = lisp_types.EidType(buf.DecodeUint8())
- copy(m.Seid.Address.XXX_UnionData[:], buf.DecodeBytes(6))
+ copy(m.Seid.Address.XXX_UnionData[:], buf.DecodeBytes(18))
m.RlocNum = buf.DecodeUint32()
m.Rlocs = make([]lisp_types.RemoteLocator, m.RlocNum)
for j0 := 0; j0 < len(m.Rlocs); j0++ {
if j1 < len(m.Adjacencies) {
s1 = m.Adjacencies[j1]
}
- size += 1 // s1.Reid.Type
- size += 1 * 6 // s1.Reid.Address
- size += 1 // s1.Leid.Type
- size += 1 * 6 // s1.Leid.Address
+ size += 1 // s1.Reid.Type
+ size += 1 * 18 // s1.Reid.Address
+ size += 1 // s1.Leid.Type
+ size += 1 * 18 // s1.Leid.Address
}
return size
}
v0 = m.Adjacencies[j0]
}
buf.EncodeUint8(uint8(v0.Reid.Type))
- buf.EncodeBytes(v0.Reid.Address.XXX_UnionData[:], 6)
+ buf.EncodeBytes(v0.Reid.Address.XXX_UnionData[:], 18)
buf.EncodeUint8(uint8(v0.Leid.Type))
- buf.EncodeBytes(v0.Leid.Address.XXX_UnionData[:], 6)
+ buf.EncodeBytes(v0.Leid.Address.XXX_UnionData[:], 18)
}
return buf.Bytes(), nil
}
m.Adjacencies = make([]OneAdjacency, m.Count)
for j0 := 0; j0 < len(m.Adjacencies); j0++ {
m.Adjacencies[j0].Reid.Type = lisp_types.EidType(buf.DecodeUint8())
- copy(m.Adjacencies[j0].Reid.Address.XXX_UnionData[:], buf.DecodeBytes(6))
+ copy(m.Adjacencies[j0].Reid.Address.XXX_UnionData[:], buf.DecodeBytes(18))
m.Adjacencies[j0].Leid.Type = lisp_types.EidType(buf.DecodeUint8())
- copy(m.Adjacencies[j0].Leid.Address.XXX_UnionData[:], buf.DecodeBytes(6))
+ copy(m.Adjacencies[j0].Leid.Address.XXX_UnionData[:], buf.DecodeBytes(18))
}
return nil
}
size += 1 // m.IsSrcDst
size += 4 // m.Vni
size += 1 // m.Deid.Type
- size += 1 * 6 // m.Deid.Address
+ size += 1 * 18 // m.Deid.Address
size += 1 // m.Seid.Type
- size += 1 * 6 // m.Seid.Address
+ size += 1 * 18 // m.Seid.Address
size += 4 // m.TTL
size += 1 // m.Authoritative
size += 1 // m.Key.ID
buf.EncodeBool(m.IsSrcDst)
buf.EncodeUint32(m.Vni)
buf.EncodeUint8(uint8(m.Deid.Type))
- buf.EncodeBytes(m.Deid.Address.XXX_UnionData[:], 6)
+ buf.EncodeBytes(m.Deid.Address.XXX_UnionData[:], 18)
buf.EncodeUint8(uint8(m.Seid.Type))
- buf.EncodeBytes(m.Seid.Address.XXX_UnionData[:], 6)
+ buf.EncodeBytes(m.Seid.Address.XXX_UnionData[:], 18)
buf.EncodeUint32(m.TTL)
buf.EncodeUint8(m.Authoritative)
buf.EncodeUint8(uint8(m.Key.ID))
m.IsSrcDst = buf.DecodeBool()
m.Vni = buf.DecodeUint32()
m.Deid.Type = lisp_types.EidType(buf.DecodeUint8())
- copy(m.Deid.Address.XXX_UnionData[:], buf.DecodeBytes(6))
+ copy(m.Deid.Address.XXX_UnionData[:], buf.DecodeBytes(18))
m.Seid.Type = lisp_types.EidType(buf.DecodeUint8())
- copy(m.Seid.Address.XXX_UnionData[:], buf.DecodeBytes(6))
+ copy(m.Seid.Address.XXX_UnionData[:], buf.DecodeBytes(18))
m.TTL = buf.DecodeUint32()
m.Authoritative = buf.DecodeUint8()
m.Key.ID = lisp_types.HmacKeyID(buf.DecodeUint8())
if m == nil {
return 0
}
- size += 1 // m.EidSet
- size += 4 // m.Vni
- size += 1 // m.Eid.Type
- size += 1 * 6 // m.Eid.Address
- size += 4 // m.Filter
+ size += 1 // m.EidSet
+ size += 4 // m.Vni
+ size += 1 // m.Eid.Type
+ size += 1 * 18 // m.Eid.Address
+ size += 4 // m.Filter
return size
}
func (m *OneEidTableDump) Marshal(b []byte) ([]byte, error) {
buf.EncodeBool(m.EidSet)
buf.EncodeUint32(m.Vni)
buf.EncodeUint8(uint8(m.Eid.Type))
- buf.EncodeBytes(m.Eid.Address.XXX_UnionData[:], 6)
+ buf.EncodeBytes(m.Eid.Address.XXX_UnionData[:], 18)
buf.EncodeUint32(uint32(m.Filter))
return buf.Bytes(), nil
}
m.EidSet = buf.DecodeBool()
m.Vni = buf.DecodeUint32()
m.Eid.Type = lisp_types.EidType(buf.DecodeUint8())
- copy(m.Eid.Address.XXX_UnionData[:], buf.DecodeBytes(6))
+ copy(m.Eid.Address.XXX_UnionData[:], buf.DecodeBytes(18))
m.Filter = OneFilter(buf.DecodeUint32())
return nil
}
}
size += 4 // m.Vni
size += 1 // m.Deid.Type
- size += 1 * 6 // m.Deid.Address
+ size += 1 * 18 // m.Deid.Address
size += 1 // m.Seid.Type
- size += 1 * 6 // m.Seid.Address
+ size += 1 * 18 // m.Seid.Address
size += 1 // m.Rloc.Af
size += 1 * 16 // m.Rloc.Un
size += 1 // m.Lloc.Af
buf := codec.NewBuffer(b)
buf.EncodeUint32(m.Vni)
buf.EncodeUint8(uint8(m.Deid.Type))
- buf.EncodeBytes(m.Deid.Address.XXX_UnionData[:], 6)
+ buf.EncodeBytes(m.Deid.Address.XXX_UnionData[:], 18)
buf.EncodeUint8(uint8(m.Seid.Type))
- buf.EncodeBytes(m.Seid.Address.XXX_UnionData[:], 6)
+ buf.EncodeBytes(m.Seid.Address.XXX_UnionData[:], 18)
buf.EncodeUint8(uint8(m.Rloc.Af))
buf.EncodeBytes(m.Rloc.Un.XXX_UnionData[:], 16)
buf.EncodeUint8(uint8(m.Lloc.Af))
buf := codec.NewBuffer(b)
m.Vni = buf.DecodeUint32()
m.Deid.Type = lisp_types.EidType(buf.DecodeUint8())
- copy(m.Deid.Address.XXX_UnionData[:], buf.DecodeBytes(6))
+ copy(m.Deid.Address.XXX_UnionData[:], buf.DecodeBytes(18))
m.Seid.Type = lisp_types.EidType(buf.DecodeUint8())
- copy(m.Seid.Address.XXX_UnionData[:], buf.DecodeBytes(6))
+ copy(m.Seid.Address.XXX_UnionData[:], buf.DecodeBytes(18))
m.Rloc.Af = ip_types.AddressFamily(buf.DecodeUint8())
copy(m.Rloc.Un.XXX_UnionData[:], buf.DecodeBytes(16))
m.Lloc.Af = ip_types.AddressFamily(buf.DecodeUint8())
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/p2p_ethernet.api.json
// Package p2p_ethernet contains generated bindings for API file p2p_ethernet.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/pci_types.api.json
// Package pci_types contains generated bindings for API file pci_types.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/pg.api.json
// Package pg contains generated bindings for API file pg.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/pipe.api.json
// Package pipe contains generated bindings for API file pipe.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/policer.api.json
// Package policer contains generated bindings for API file policer.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/policer_types.api.json
// Package policer_types contains generated bindings for API file policer_types.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/pot.api.json
// Package pot contains generated bindings for API file pot.api.
//
+++ /dev/null
-// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
-// versions:
-// binapi-generator: v0.4.0-dev
-// VPP: 20.05-release
-
-// Package pp2 contains generated bindings for API file pp2.api.
-//
-// Contents:
-// 4 messages
-//
-package pp2
-
-import (
- api "git.fd.io/govpp.git/api"
- interface_types "git.fd.io/govpp.git/binapi/interface_types"
- codec "git.fd.io/govpp.git/codec"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the GoVPP api package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// GoVPP api package needs to be updated.
-const _ = api.GoVppAPIPackageIsVersion2
-
-const (
- APIFile = "pp2"
- APIVersion = "1.0.0"
- VersionCrc = 0x85d7546b
-)
-
-// MrvlPp2Create defines message 'mrvl_pp2_create'.
-type MrvlPp2Create struct {
- IfName string `binapi:"string[64],name=if_name" json:"if_name,omitempty"`
- RxQSz uint16 `binapi:"u16,name=rx_q_sz" json:"rx_q_sz,omitempty"`
- TxQSz uint16 `binapi:"u16,name=tx_q_sz" json:"tx_q_sz,omitempty"`
-}
-
-func (m *MrvlPp2Create) Reset() { *m = MrvlPp2Create{} }
-func (*MrvlPp2Create) GetMessageName() string { return "mrvl_pp2_create" }
-func (*MrvlPp2Create) GetCrcString() string { return "3a108396" }
-func (*MrvlPp2Create) GetMessageType() api.MessageType {
- return api.RequestMessage
-}
-
-func (m *MrvlPp2Create) Size() (size int) {
- if m == nil {
- return 0
- }
- size += 64 // m.IfName
- size += 2 // m.RxQSz
- size += 2 // m.TxQSz
- return size
-}
-func (m *MrvlPp2Create) Marshal(b []byte) ([]byte, error) {
- if b == nil {
- b = make([]byte, m.Size())
- }
- buf := codec.NewBuffer(b)
- buf.EncodeString(m.IfName, 64)
- buf.EncodeUint16(m.RxQSz)
- buf.EncodeUint16(m.TxQSz)
- return buf.Bytes(), nil
-}
-func (m *MrvlPp2Create) Unmarshal(b []byte) error {
- buf := codec.NewBuffer(b)
- m.IfName = buf.DecodeString(64)
- m.RxQSz = buf.DecodeUint16()
- m.TxQSz = buf.DecodeUint16()
- return nil
-}
-
-// MrvlPp2CreateReply defines message 'mrvl_pp2_create_reply'.
-type MrvlPp2CreateReply struct {
- Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
- SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
-}
-
-func (m *MrvlPp2CreateReply) Reset() { *m = MrvlPp2CreateReply{} }
-func (*MrvlPp2CreateReply) GetMessageName() string { return "mrvl_pp2_create_reply" }
-func (*MrvlPp2CreateReply) GetCrcString() string { return "5383d31f" }
-func (*MrvlPp2CreateReply) GetMessageType() api.MessageType {
- return api.ReplyMessage
-}
-
-func (m *MrvlPp2CreateReply) Size() (size int) {
- if m == nil {
- return 0
- }
- size += 4 // m.Retval
- size += 4 // m.SwIfIndex
- return size
-}
-func (m *MrvlPp2CreateReply) Marshal(b []byte) ([]byte, error) {
- if b == nil {
- b = make([]byte, m.Size())
- }
- buf := codec.NewBuffer(b)
- buf.EncodeInt32(m.Retval)
- buf.EncodeUint32(uint32(m.SwIfIndex))
- return buf.Bytes(), nil
-}
-func (m *MrvlPp2CreateReply) Unmarshal(b []byte) error {
- buf := codec.NewBuffer(b)
- m.Retval = buf.DecodeInt32()
- m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
- return nil
-}
-
-// MrvlPp2Delete defines message 'mrvl_pp2_delete'.
-type MrvlPp2Delete struct {
- SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
-}
-
-func (m *MrvlPp2Delete) Reset() { *m = MrvlPp2Delete{} }
-func (*MrvlPp2Delete) GetMessageName() string { return "mrvl_pp2_delete" }
-func (*MrvlPp2Delete) GetCrcString() string { return "f9e6675e" }
-func (*MrvlPp2Delete) GetMessageType() api.MessageType {
- return api.RequestMessage
-}
-
-func (m *MrvlPp2Delete) Size() (size int) {
- if m == nil {
- return 0
- }
- size += 4 // m.SwIfIndex
- return size
-}
-func (m *MrvlPp2Delete) Marshal(b []byte) ([]byte, error) {
- if b == nil {
- b = make([]byte, m.Size())
- }
- buf := codec.NewBuffer(b)
- buf.EncodeUint32(uint32(m.SwIfIndex))
- return buf.Bytes(), nil
-}
-func (m *MrvlPp2Delete) Unmarshal(b []byte) error {
- buf := codec.NewBuffer(b)
- m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32())
- return nil
-}
-
-// MrvlPp2DeleteReply defines message 'mrvl_pp2_delete_reply'.
-type MrvlPp2DeleteReply struct {
- Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"`
-}
-
-func (m *MrvlPp2DeleteReply) Reset() { *m = MrvlPp2DeleteReply{} }
-func (*MrvlPp2DeleteReply) GetMessageName() string { return "mrvl_pp2_delete_reply" }
-func (*MrvlPp2DeleteReply) GetCrcString() string { return "e8d4e804" }
-func (*MrvlPp2DeleteReply) GetMessageType() api.MessageType {
- return api.ReplyMessage
-}
-
-func (m *MrvlPp2DeleteReply) Size() (size int) {
- if m == nil {
- return 0
- }
- size += 4 // m.Retval
- return size
-}
-func (m *MrvlPp2DeleteReply) Marshal(b []byte) ([]byte, error) {
- if b == nil {
- b = make([]byte, m.Size())
- }
- buf := codec.NewBuffer(b)
- buf.EncodeInt32(m.Retval)
- return buf.Bytes(), nil
-}
-func (m *MrvlPp2DeleteReply) Unmarshal(b []byte) error {
- buf := codec.NewBuffer(b)
- m.Retval = buf.DecodeInt32()
- return nil
-}
-
-func init() { file_pp2_binapi_init() }
-func file_pp2_binapi_init() {
- api.RegisterMessage((*MrvlPp2Create)(nil), "mrvl_pp2_create_3a108396")
- api.RegisterMessage((*MrvlPp2CreateReply)(nil), "mrvl_pp2_create_reply_5383d31f")
- api.RegisterMessage((*MrvlPp2Delete)(nil), "mrvl_pp2_delete_f9e6675e")
- api.RegisterMessage((*MrvlPp2DeleteReply)(nil), "mrvl_pp2_delete_reply_e8d4e804")
-}
-
-// Messages returns list of all messages in this module.
-func AllMessages() []api.Message {
- return []api.Message{
- (*MrvlPp2Create)(nil),
- (*MrvlPp2CreateReply)(nil),
- (*MrvlPp2Delete)(nil),
- (*MrvlPp2DeleteReply)(nil),
- }
-}
+++ /dev/null
-// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
-
-package pp2
-
-import (
- "encoding/json"
- "io/ioutil"
- "net/http"
-)
-
-func RESTHandler(rpc RPCService) http.Handler {
- mux := http.NewServeMux()
- mux.HandleFunc("/mrvl_pp2_create", func(w http.ResponseWriter, req *http.Request) {
- var request = new(MrvlPp2Create)
- b, err := ioutil.ReadAll(req.Body)
- if err != nil {
- http.Error(w, "read body failed", http.StatusBadRequest)
- return
- }
- if err := json.Unmarshal(b, request); err != nil {
- http.Error(w, "unmarshal data failed", http.StatusBadRequest)
- return
- }
- reply, err := rpc.MrvlPp2Create(req.Context(), request)
- if err != nil {
- http.Error(w, "request failed: "+err.Error(), http.StatusInternalServerError)
- return
- }
- rep, err := json.MarshalIndent(reply, "", " ")
- if err != nil {
- http.Error(w, "marshal failed: "+err.Error(), http.StatusInternalServerError)
- return
- }
- w.Write(rep)
- })
- mux.HandleFunc("/mrvl_pp2_delete", func(w http.ResponseWriter, req *http.Request) {
- var request = new(MrvlPp2Delete)
- b, err := ioutil.ReadAll(req.Body)
- if err != nil {
- http.Error(w, "read body failed", http.StatusBadRequest)
- return
- }
- if err := json.Unmarshal(b, request); err != nil {
- http.Error(w, "unmarshal data failed", http.StatusBadRequest)
- return
- }
- reply, err := rpc.MrvlPp2Delete(req.Context(), request)
- if err != nil {
- http.Error(w, "request failed: "+err.Error(), http.StatusInternalServerError)
- return
- }
- rep, err := json.MarshalIndent(reply, "", " ")
- if err != nil {
- http.Error(w, "marshal failed: "+err.Error(), http.StatusInternalServerError)
- return
- }
- w.Write(rep)
- })
- return http.HandlerFunc(mux.ServeHTTP)
-}
+++ /dev/null
-// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
-
-package pp2
-
-import (
- "context"
-
- api "git.fd.io/govpp.git/api"
-)
-
-// RPCService defines RPC service pp2.
-type RPCService interface {
- MrvlPp2Create(ctx context.Context, in *MrvlPp2Create) (*MrvlPp2CreateReply, error)
- MrvlPp2Delete(ctx context.Context, in *MrvlPp2Delete) (*MrvlPp2DeleteReply, error)
-}
-
-type serviceClient struct {
- conn api.Connection
-}
-
-func NewServiceClient(conn api.Connection) RPCService {
- return &serviceClient{conn}
-}
-
-func (c *serviceClient) MrvlPp2Create(ctx context.Context, in *MrvlPp2Create) (*MrvlPp2CreateReply, error) {
- out := new(MrvlPp2CreateReply)
- err := c.conn.Invoke(ctx, in, out)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *serviceClient) MrvlPp2Delete(ctx context.Context, in *MrvlPp2Delete) (*MrvlPp2DeleteReply, error) {
- out := new(MrvlPp2DeleteReply)
- err := c.conn.Invoke(ctx, in, out)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/pppoe.api.json
// Package pppoe contains generated bindings for API file pppoe.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/punt.api.json
// Package punt contains generated bindings for API file punt.api.
//
// PuntUnion defines union 'punt_union'.
type PuntUnion struct {
- // Exception *PuntException
- // L4 *PuntL4
- // IPProto *PuntIPProto
+ // PuntUnion can be one of:
+ // - Exception *PuntException
+ // - L4 *PuntL4
+ // - IPProto *PuntIPProto
XXX_UnionData [4]byte
}
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/qos.api.json
// Package qos contains generated bindings for API file qos.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/rd_cp.api.json
// Package rd_cp contains generated bindings for API file rd_cp.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/rdma.api.json
// Package rdma contains generated bindings for API file rdma.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/session.api.json
// Package session contains generated bindings for API file session.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/span.api.json
// Package span contains generated bindings for API file span.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/sr.api.json
// Package sr contains generated bindings for API file sr.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/sr_mpls.api.json
// Package sr_mpls contains generated bindings for API file sr_mpls.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/sr_types.api.json
// Package sr_types contains generated bindings for API file sr_types.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/stn.api.json
// Package stn contains generated bindings for API file stn.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/svs.api.json
// Package svs contains generated bindings for API file svs.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/syslog.api.json
// Package syslog contains generated bindings for API file syslog.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/tapv2.api.json
// Package tapv2 contains generated bindings for API file tapv2.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/tcp.api.json
// Package tcp contains generated bindings for API file tcp.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/teib.api.json
// Package teib contains generated bindings for API file teib.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/tls_openssl.api.json
// Package tls_openssl contains generated bindings for API file tls_openssl.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/trace.api.json
// Package trace contains generated bindings for API file trace.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/tunnel_types.api.json
// Package tunnel_types contains generated bindings for API file tunnel_types.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/udp.api.json
// Package udp contains generated bindings for API file udp.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/udp_ping.api.json
// Package udp_ping contains generated bindings for API file udp_ping.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/urpf.api.json
// Package urpf contains generated bindings for API file urpf.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/vhost_user.api.json
// Package vhost_user contains generated bindings for API file vhost_user.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/virtio.api.json
// Package virtio contains generated bindings for API file virtio.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/virtio_types.api.json
// Package virtio_types contains generated bindings for API file virtio_types.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/vmxnet3.api.json
// Package vmxnet3 contains generated bindings for API file vmxnet3.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/vpe.api.json
// Package vpe contains generated bindings for API file vpe.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/vpe_types.api.json
// Package vpe_types contains generated bindings for API file vpe_types.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/vrrp.api.json
// Package vrrp contains generated bindings for API file vrrp.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/vxlan.api.json
// Package vxlan contains generated bindings for API file vxlan.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/vxlan_gbp.api.json
// Package vxlan_gbp contains generated bindings for API file vxlan_gbp.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/core/vxlan_gpe.api.json
// Package vxlan_gpe contains generated bindings for API file vxlan_gpe.api.
//
// versions:
// binapi-generator: v0.4.0-dev
// VPP: 20.05-release
+// source: /usr/share/vpp/api/plugins/vxlan_gpe_ioam_export.api.json
// Package vxlan_gpe_ioam_export contains generated bindings for API file vxlan_gpe_ioam_export.api.
//
package binapigen
import (
+ "fmt"
+ "git.fd.io/govpp.git/binapigen/vppapi"
+ . "github.com/onsi/gomega"
"testing"
)
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
- size := getSizeOfBinapiTypeLength(test.input, 1)
+ size := getSizeOfBinapiBaseType(test.input, 1)
if size != test.expsize {
t.Errorf("expected %d, got %d", test.expsize, size)
}
})
}
}
+
+func TestBinapiUnionSizes(t *testing.T) {
+ RegisterTestingT(t)
+ tests := []struct {
+ testName string
+ input *Union
+ expsize int
+ }{
+ {testName: "union_alias", input: typeTestData{
+ typ: "union", fields: []*typeTestData{{typ: "alias", value: U16},
+ }}.getUnion("union1"), expsize: 2},
+ {testName: "union_enum", input: typeTestData{
+ typ: "union", fields: []*typeTestData{{typ: "enum", value: U32},
+ }}.getUnion("union2"), expsize: 4},
+ {testName: "union_struct", input: typeTestData{
+ typ: "union", fields: []*typeTestData{
+ {typ: "struct", fields: []*typeTestData{{value: U8}, {value: U16}, {value: U32}}},
+ }}.getUnion("union3"), expsize: 7},
+ {testName: "union_structs", input: typeTestData{
+ typ: "union", fields: []*typeTestData{
+ {typ: "struct", fields: []*typeTestData{{value: U8}, {value: BOOL}}},
+ {typ: "struct", fields: []*typeTestData{{value: U16}, {value: U32}}},
+ {typ: "struct", fields: []*typeTestData{{value: U32}, {value: U64}}},
+ }}.getUnion("union4"), expsize: 12},
+ {testName: "union_unions", input: typeTestData{
+ typ: "union", fields: []*typeTestData{
+ {typ: "union", fields: []*typeTestData{
+ {typ: "struct", fields: []*typeTestData{{value: STRING}}},
+ }},
+ {typ: "union", fields: []*typeTestData{
+ {typ: "struct", fields: []*typeTestData{{value: U32}}},
+ }},
+ {typ: "union", fields: []*typeTestData{
+ {typ: "struct", fields: []*typeTestData{{value: U64}}},
+ }},
+ }}.getUnion("union5"), expsize: 8},
+ {testName: "union_combined", input: typeTestData{
+ typ: "union", fields: []*typeTestData{
+ {typ: "alias", value: U8},
+ {typ: "enum", value: U16},
+ {typ: "struct", fields: []*typeTestData{{value: U8}, {value: U16}, {value: U32}}}, // <-
+ {typ: "union", fields: []*typeTestData{
+ {typ: "alias", value: U16},
+ {typ: "enum", value: U16},
+ {typ: "struct", fields: []*typeTestData{{value: U32}}},
+ }},
+ }}.getUnion("union6"), expsize: 7},
+ }
+ for _, test := range tests {
+ t.Run(test.testName, func(t *testing.T) {
+ size := getUnionSize(test.input)
+ Expect(size).To(Equal(test.expsize))
+ })
+ }
+}
+
+// Typed data used for union size evaluation testing.
+type typeTestData struct {
+ typ string
+ value string
+ fields []*typeTestData
+}
+
+func (t typeTestData) getUnion(name string) *Union {
+ return &Union{
+ UnionType: vppapi.UnionType{Name: name},
+ Fields: t.getUnionFields(name),
+ }
+}
+
+func (t typeTestData) getUnionFields(parentName string) (fields []*Field) {
+ for i, field := range t.fields {
+ var (
+ dataType string
+ aliasType *Alias
+ enumType *Enum
+ structType *Struct
+ unionType *Union
+ )
+ switch field.typ {
+ case "alias":
+ aliasType = &Alias{AliasType: vppapi.AliasType{Name: fmt.Sprintf("%s_alias_%d", parentName, i), Type: field.value}}
+ case "enum":
+ enumType = &Enum{EnumType: vppapi.EnumType{Name: fmt.Sprintf("%s_enum_%d", parentName, i), Type: field.value}}
+ case "struct":
+ structType = &Struct{Fields: field.getUnionFields(fmt.Sprintf("%s_struct_%d", parentName, i))}
+ case "union":
+ unionType = field.getUnion(parentName)
+ default:
+ dataType = field.value
+ }
+ fields = append(fields, &Field{
+ Field: vppapi.Field{Name: fmt.Sprintf("%s_field_%d", parentName, i), Type: dataType},
+ TypeAlias: aliasType,
+ TypeEnum: enumType,
+ TypeStruct: structType,
+ TypeUnion: unionType,
+ })
+ }
+ return fields
+}
return gotype
}
-func getSizeOfBinapiTypeLength(typ string, length int) (size int) {
- if n := BaseTypeSizes[typ]; n > 0 {
- if length > 0 {
- return n * length
- } else {
- return n
+func getUnionSize(union *Union) (maxSize int) {
+ for _, field := range union.Fields {
+ if size, isBaseType := getSizeOfField(field); isBaseType {
+ logrus.Panicf("union %s field %s has unexpected type %q", union.Name, field.Name, field.Type)
+ } else if size > maxSize {
+ maxSize = size
}
}
+ //logf("getUnionSize: %s %+v max=%v", union.Name, union.Fields, maxSize)
return
}
-func getSizeOfType(typ *Struct) (size int) {
+func getSizeOfField(field *Field) (size int, isBaseType bool) {
+ if alias := field.TypeAlias; alias != nil {
+ size = getSizeOfBinapiBaseType(alias.Type, alias.Length)
+ return
+ }
+ if enum := field.TypeEnum; enum != nil {
+ size = getSizeOfBinapiBaseType(enum.Type, field.Length)
+ return
+ }
+ if structType := field.TypeStruct; structType != nil {
+ size = getSizeOfStruct(structType)
+ return
+ }
+ if union := field.TypeUnion; union != nil {
+ size = getUnionSize(union)
+ return
+ }
+ return size, true
+}
+
+func getSizeOfStruct(typ *Struct) (size int) {
for _, field := range typ.Fields {
- if enum := field.TypeEnum; enum != nil {
- size += getSizeOfBinapiTypeLength(enum.Type, field.Length)
+ fieldSize, isBaseType := getSizeOfField(field)
+ if isBaseType {
+ size += getSizeOfBinapiBaseType(field.Type, field.Length)
continue
}
- size += getSizeOfBinapiTypeLength(field.Type, field.Length)
+ size += fieldSize
}
return size
}
-func getUnionSize(union *Union) (maxSize int) {
- for _, field := range union.Fields {
- if typ := field.TypeStruct; typ != nil {
- if size := getSizeOfType(typ); size > maxSize {
- maxSize = size
- }
- continue
- }
- if alias := field.TypeAlias; alias != nil {
- if size := getSizeOfBinapiTypeLength(alias.Type, alias.Length); size > maxSize {
- maxSize = size
- }
- continue
+// Returns size of base type multiplied by length. Length equal to zero
+// returns base type size.
+func getSizeOfBinapiBaseType(typ string, length int) (size int) {
+ if n := BaseTypeSizes[typ]; n > 0 {
+ if length > 1 {
+ return n * length
} else {
- logrus.Panicf("no type or alias found for union %s field type %q", union.Name, field.Type)
+ return n
}
}
- //logf("getUnionSize: %s %+v max=%v", union.Name, union.Fields, maxSize)
return
}