aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVladimir Lavor <vlavor@cisco.com>2020-07-10 13:33:05 +0200
committerVladimir Lavor <vlavor@cisco.com>2020-07-10 13:33:05 +0200
commitf4f4a8613711d724cd4dc7224e8d7a1de4b8050e (patch)
tree62df695c22285610d8234f8095e04148243cce44
parent2fdb2acee79b43af3e4edb7cac4a5cae428f587e (diff)
Fix: generate (un)marshall for memory client messages
* use generated Marshall/Unmarshall for socket client connection messages instead of the generic wrapper Change-Id: Ie1049e080630dbc60085debc6875e17962e93a0e Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
-rw-r--r--adapter/socketclient/binapi.go120
-rw-r--r--adapter/socketclient/binapi/gen.go5
-rw-r--r--adapter/socketclient/binapi/memclnt/memclnt.ba.go (renamed from examples/binapi/memclnt/memclnt.ba.go)0
-rw-r--r--adapter/socketclient/socketclient.go9
-rw-r--r--examples/binapi/gen.go2
-rw-r--r--examples/binapi/mactime/mactime.ba.go39
-rw-r--r--examples/binapi/memclnt/memclnt_rpc.ba.go141
7 files changed, 33 insertions, 283 deletions
diff --git a/adapter/socketclient/binapi.go b/adapter/socketclient/binapi.go
deleted file mode 100644
index 5de0c30..0000000
--- a/adapter/socketclient/binapi.go
+++ /dev/null
@@ -1,120 +0,0 @@
-package socketclient
-
-import (
- "git.fd.io/govpp.git/api"
-)
-
-// MessageTableEntry represents VPP binary API type 'message_table_entry'.
-type MessageTableEntry struct {
- Index uint16
- Name string `struc:"[64]byte"`
-}
-
-func (*MessageTableEntry) GetTypeName() string {
- return "message_table_entry"
-}
-
-// SockclntCreate represents VPP binary API message 'sockclnt_create'.
-type SockclntCreate struct {
- Name string `struc:"[64]byte"`
-}
-
-func (*SockclntCreate) GetMessageName() string {
- return "sockclnt_create"
-}
-func (*SockclntCreate) GetCrcString() string {
- return "455fb9c4"
-}
-func (*SockclntCreate) GetMessageType() api.MessageType {
- return api.ReplyMessage
-}
-
-// SockclntCreateReply represents VPP binary API message 'sockclnt_create_reply'.
-type SockclntCreateReply struct {
- Response int32
- Index uint32
- Count uint16 `struc:"sizeof=MessageTable"`
- MessageTable []MessageTableEntry
-}
-
-func (*SockclntCreateReply) GetMessageName() string {
- return "sockclnt_create_reply"
-}
-func (*SockclntCreateReply) GetCrcString() string {
- return "35166268"
-}
-func (*SockclntCreateReply) GetMessageType() api.MessageType {
- return api.RequestMessage
-}
-
-// SockclntDelete represents VPP binary API message 'sockclnt_delete'.
-type SockclntDelete struct {
- Index uint32
-}
-
-func (*SockclntDelete) GetMessageName() string {
- return "sockclnt_delete"
-}
-func (*SockclntDelete) GetCrcString() string {
- return "8ac76db6"
-}
-func (*SockclntDelete) GetMessageType() api.MessageType {
- return api.RequestMessage
-}
-
-// SockclntDeleteReply represents VPP binary API message 'sockclnt_delete_reply'.
-type SockclntDeleteReply struct {
- Response int32
-}
-
-func (*SockclntDeleteReply) GetMessageName() string {
- return "sockclnt_delete_reply"
-}
-func (*SockclntDeleteReply) GetCrcString() string {
- return "8f38b1ee"
-}
-func (*SockclntDeleteReply) GetMessageType() api.MessageType {
- return api.ReplyMessage
-}
-
-// ModuleVersion represents VPP binary API type 'module_version'.
-type ModuleVersion struct {
- Major uint32
- Minor uint32
- Patch uint32
- Name string `struc:"[64]byte"`
-}
-
-func (*ModuleVersion) GetTypeName() string {
- return "module_version"
-}
-
-// APIVersions represents VPP binary API message 'api_versions'.
-type APIVersions struct{}
-
-func (*APIVersions) GetMessageName() string {
- return "api_versions"
-}
-func (*APIVersions) GetCrcString() string {
- return "51077d14"
-}
-func (*APIVersions) GetMessageType() api.MessageType {
- return api.RequestMessage
-}
-
-// APIVersionsReply represents VPP binary API message 'api_versions_reply'.
-type APIVersionsReply struct {
- Retval int32
- Count uint32 `struc:"sizeof=APIVersions"`
- APIVersions []ModuleVersion
-}
-
-func (*APIVersionsReply) GetMessageName() string {
- return "api_versions_reply"
-}
-func (*APIVersionsReply) GetCrcString() string {
- return "5f0d99d6"
-}
-func (*APIVersionsReply) GetMessageType() api.MessageType {
- return api.ReplyMessage
-}
diff --git a/adapter/socketclient/binapi/gen.go b/adapter/socketclient/binapi/gen.go
new file mode 100644
index 0000000..eb64401
--- /dev/null
+++ b/adapter/socketclient/binapi/gen.go
@@ -0,0 +1,5 @@
+package binapi
+
+// Generate Go code from the VPP APIs located in the /usr/share/vpp/api directory.
+
+//go:generate binapi-generator -include-services=false memclnt
diff --git a/examples/binapi/memclnt/memclnt.ba.go b/adapter/socketclient/binapi/memclnt/memclnt.ba.go
index 7dba64e..7dba64e 100644
--- a/examples/binapi/memclnt/memclnt.ba.go
+++ b/adapter/socketclient/binapi/memclnt/memclnt.ba.go
diff --git a/adapter/socketclient/socketclient.go b/adapter/socketclient/socketclient.go
index 867278b..b2c5d47 100644
--- a/adapter/socketclient/socketclient.go
+++ b/adapter/socketclient/socketclient.go
@@ -19,6 +19,7 @@ import (
"encoding/binary"
"errors"
"fmt"
+ "git.fd.io/govpp.git/adapter/socketclient/binapi/memclnt"
"io"
"net"
"os"
@@ -325,7 +326,7 @@ func (c *socketClient) open() error {
var msgCodec = codec.DefaultCodec
// Request socket client create
- req := &SockclntCreate{
+ req := &memclnt.SockclntCreate{
Name: c.clientName,
}
msg, err := msgCodec.EncodeMsg(req, sockCreateMsgId)
@@ -346,7 +347,7 @@ func (c *socketClient) open() error {
return err
}
- reply := new(SockclntCreateReply)
+ reply := new(memclnt.SockclntCreateReply)
if err := msgCodec.DecodeMsg(msgReply, reply); err != nil {
log.Println("Decoding sockclnt_create_reply failed:", err)
return err
@@ -377,7 +378,7 @@ func (c *socketClient) open() error {
func (c *socketClient) close() error {
var msgCodec = codec.DefaultCodec
- req := &SockclntDelete{
+ req := &memclnt.SockclntDelete{
Index: c.clientIndex,
}
msg, err := msgCodec.EncodeMsg(req, c.sockDelMsgId)
@@ -405,7 +406,7 @@ func (c *socketClient) close() error {
return err
}
- reply := new(SockclntDeleteReply)
+ reply := new(memclnt.SockclntDeleteReply)
if err := msgCodec.DecodeMsg(msgReply, reply); err != nil {
log.Debugln("Decoding sockclnt_delete_reply failed:", err)
return err
diff --git a/examples/binapi/gen.go b/examples/binapi/gen.go
index 46399f4..fe08d7f 100644
--- a/examples/binapi/gen.go
+++ b/examples/binapi/gen.go
@@ -2,4 +2,4 @@ package binapi
// Generate Go code from the VPP APIs located in the /usr/share/vpp/api directory.
-//go:generate binapi-generator --import-types=false mactime af_packet interface interface_types ip memclnt vpe sr acl memif ip_types fib_types
+//go:generate binapi-generator --import-types=false mactime af_packet interface interface_types ip vpe sr acl memif ip_types fib_types
diff --git a/examples/binapi/mactime/mactime.ba.go b/examples/binapi/mactime/mactime.ba.go
index 38a206e..7b9a0b2 100644
--- a/examples/binapi/mactime/mactime.ba.go
+++ b/examples/binapi/mactime/mactime.ba.go
@@ -19,9 +19,12 @@ import (
"bytes"
"context"
"encoding/binary"
+ "fmt"
"io"
"math"
+ "net"
"strconv"
+ "strings"
api "git.fd.io/govpp.git/api"
codec "git.fd.io/govpp.git/codec"
@@ -45,23 +48,22 @@ const (
VersionCrc = 0x9283d3e
)
-type IfStatusFlags = interface_types.IfStatusFlags
-
-type IfType = interface_types.IfType
-
-type LinkDuplex = interface_types.LinkDuplex
-
-type MtuProto = interface_types.MtuProto
-
-type RxMode = interface_types.RxMode
-
-type SubIfFlags = interface_types.SubIfFlags
-
-type InterfaceIndex = interface_types.InterfaceIndex
-
// MacAddress represents VPP binary API alias 'mac_address'.
type MacAddress [6]uint8
+func ParseMAC(mac string) (parsed MacAddress, err error) {
+ var hw net.HardwareAddr
+ if hw, err = net.ParseMAC(mac); err != nil {
+ return
+ }
+ copy(parsed[:], hw[:])
+ return
+}
+
+func (m *MacAddress) ToString() string {
+ return net.HardwareAddr(m[:]).String()
+}
+
// MactimeTimeRange represents VPP binary API type 'mactime_time_range'.
type MactimeTimeRange struct {
Start float64 `binapi:"f64,name=start" json:"start,omitempty"`
@@ -547,8 +549,8 @@ func (m *MactimeDumpReply) Unmarshal(tmp []byte) error {
// MactimeEnableDisable represents VPP binary API message 'mactime_enable_disable'.
type MactimeEnableDisable struct {
- EnableDisable bool `binapi:"bool,name=enable_disable" json:"enable_disable,omitempty"`
- SwIfIndex InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
+ EnableDisable bool `binapi:"bool,name=enable_disable" json:"enable_disable,omitempty"`
+ SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"`
}
func (m *MactimeEnableDisable) Reset() { *m = MactimeEnableDisable{} }
@@ -597,7 +599,7 @@ func (m *MactimeEnableDisable) Unmarshal(tmp []byte) error {
m.EnableDisable = tmp[pos] != 0
pos += 1
// field[1] m.SwIfIndex
- m.SwIfIndex = InterfaceIndex(o.Uint32(tmp[pos : pos+4]))
+ m.SwIfIndex = interface_types.InterfaceIndex(o.Uint32(tmp[pos : pos+4]))
pos += 4
return nil
}
@@ -679,6 +681,9 @@ var _ = bytes.NewBuffer
var _ = context.Background
var _ = io.Copy
var _ = strconv.Itoa
+var _ = strings.Contains
var _ = struc.Pack
var _ = binary.BigEndian
var _ = math.Float32bits
+var _ = net.ParseIP
+var _ = fmt.Errorf
diff --git a/examples/binapi/memclnt/memclnt_rpc.ba.go b/examples/binapi/memclnt/memclnt_rpc.ba.go
deleted file mode 100644
index 05dfc28..0000000
--- a/examples/binapi/memclnt/memclnt_rpc.ba.go
+++ /dev/null
@@ -1,141 +0,0 @@
-// Code generated by GoVPP's binapi-generator. DO NOT EDIT.
-
-package memclnt
-
-import (
- "context"
- "io"
-
- api "git.fd.io/govpp.git/api"
-)
-
-// RPCService represents RPC service API for memclnt module.
-type RPCService interface {
- APIVersions(ctx context.Context, in *APIVersions) (*APIVersionsReply, error)
- GetFirstMsgID(ctx context.Context, in *GetFirstMsgID) (*GetFirstMsgIDReply, error)
- MemclntCreate(ctx context.Context, in *MemclntCreate) (*MemclntCreateReply, error)
- MemclntDelete(ctx context.Context, in *MemclntDelete) (*MemclntDeleteReply, error)
- MemclntKeepalive(ctx context.Context, in *MemclntKeepalive) (*MemclntKeepaliveReply, error)
- MemclntReadTimeout(ctx context.Context, in *MemclntReadTimeout) error
- MemclntRxThreadSuspend(ctx context.Context, in *MemclntRxThreadSuspend) error
- RPCCall(ctx context.Context, in *RPCCall) (*RPCCallReply, error)
- RxThreadExit(ctx context.Context, in *RxThreadExit) error
- SockInitShm(ctx context.Context, in *SockInitShm) (*SockInitShmReply, error)
- SockclntCreate(ctx context.Context, in *SockclntCreate) (*SockclntCreateReply, error)
- SockclntDelete(ctx context.Context, in *SockclntDelete) (*SockclntDeleteReply, error)
- TracePluginMsgIds(ctx context.Context, in *TracePluginMsgIds) error
-}
-
-type serviceClient struct {
- ch api.Channel
-}
-
-func NewServiceClient(ch api.Channel) RPCService {
- return &serviceClient{ch}
-}
-
-func (c *serviceClient) APIVersions(ctx context.Context, in *APIVersions) (*APIVersionsReply, error) {
- out := new(APIVersionsReply)
- err := c.ch.SendRequest(in).ReceiveReply(out)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *serviceClient) GetFirstMsgID(ctx context.Context, in *GetFirstMsgID) (*GetFirstMsgIDReply, error) {
- out := new(GetFirstMsgIDReply)
- err := c.ch.SendRequest(in).ReceiveReply(out)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *serviceClient) MemclntCreate(ctx context.Context, in *MemclntCreate) (*MemclntCreateReply, error) {
- out := new(MemclntCreateReply)
- err := c.ch.SendRequest(in).ReceiveReply(out)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *serviceClient) MemclntDelete(ctx context.Context, in *MemclntDelete) (*MemclntDeleteReply, error) {
- out := new(MemclntDeleteReply)
- err := c.ch.SendRequest(in).ReceiveReply(out)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *serviceClient) MemclntKeepalive(ctx context.Context, in *MemclntKeepalive) (*MemclntKeepaliveReply, error) {
- out := new(MemclntKeepaliveReply)
- err := c.ch.SendRequest(in).ReceiveReply(out)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *serviceClient) MemclntReadTimeout(ctx context.Context, in *MemclntReadTimeout) error {
- c.ch.SendRequest(in)
- return nil
-}
-
-func (c *serviceClient) MemclntRxThreadSuspend(ctx context.Context, in *MemclntRxThreadSuspend) error {
- c.ch.SendRequest(in)
- return nil
-}
-
-func (c *serviceClient) RPCCall(ctx context.Context, in *RPCCall) (*RPCCallReply, error) {
- out := new(RPCCallReply)
- err := c.ch.SendRequest(in).ReceiveReply(out)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *serviceClient) RxThreadExit(ctx context.Context, in *RxThreadExit) error {
- c.ch.SendRequest(in)
- return nil
-}
-
-func (c *serviceClient) SockInitShm(ctx context.Context, in *SockInitShm) (*SockInitShmReply, error) {
- out := new(SockInitShmReply)
- err := c.ch.SendRequest(in).ReceiveReply(out)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *serviceClient) SockclntCreate(ctx context.Context, in *SockclntCreate) (*SockclntCreateReply, error) {
- out := new(SockclntCreateReply)
- err := c.ch.SendRequest(in).ReceiveReply(out)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *serviceClient) SockclntDelete(ctx context.Context, in *SockclntDelete) (*SockclntDeleteReply, error) {
- out := new(SockclntDeleteReply)
- err := c.ch.SendRequest(in).ReceiveReply(out)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *serviceClient) TracePluginMsgIds(ctx context.Context, in *TracePluginMsgIds) error {
- c.ch.SendRequest(in)
- return nil
-}
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = api.RegisterMessage
-var _ = context.Background
-var _ = io.Copy