aboutsummaryrefslogtreecommitdiffstats
path: root/adapter/socketclient
diff options
context:
space:
mode:
authorOndrej Fabry <ofabry@cisco.com>2019-07-19 05:42:41 +0200
committerOndrej Fabry <ofabry@cisco.com>2019-07-19 05:42:41 +0200
commitbde85d422c7949ec32fb067e9c36320ccc47fb9e (patch)
tree10203b958ed04f12da7556356b5dcf3f70571bc7 /adapter/socketclient
parent4dca07c803308611275f78b490ac0352c1052fe2 (diff)
Print info for users to stderr when socket files are missing
Change-Id: Ibdbfcb78b05cf80945a93ed424a7a2a03b6ea06d Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
Diffstat (limited to 'adapter/socketclient')
-rw-r--r--adapter/socketclient/socketclient.go26
1 files changed, 24 insertions, 2 deletions
diff --git a/adapter/socketclient/socketclient.go b/adapter/socketclient/socketclient.go
index 96f23e6..2144d24 100644
--- a/adapter/socketclient/socketclient.go
+++ b/adapter/socketclient/socketclient.go
@@ -40,6 +40,20 @@ const (
DefaultSocketName = adapter.DefaultBinapiSocket
)
+const socketMissing = `
+------------------------------------------------------------
+ VPP binary API socket file %s is missing!
+
+ - is VPP running with socket for binapi enabled?
+ - is the correct socket name configured?
+
+ To enable it add following section to your VPP config:
+ socksvr {
+ default
+ }
+------------------------------------------------------------
+`
+
var (
// DefaultConnectTimeout is default timeout for connecting
DefaultConnectTimeout = time.Second * 3
@@ -165,7 +179,13 @@ func (c *vppClient) SetMsgCallback(cb adapter.MsgCallback) {
}
func (c *vppClient) Connect() error {
- Log.Debugf("Connecting to: %v", c.sockAddr)
+ // check if socket exists
+ if _, err := os.Stat(c.sockAddr); os.IsNotExist(err) {
+ fmt.Fprintf(os.Stderr, socketMissing, c.sockAddr)
+ return fmt.Errorf("VPP API socket file %s does not exist", c.sockAddr)
+ } else if err != nil {
+ return fmt.Errorf("VPP API socket error: %v", err)
+ }
if err := c.connect(c.sockAddr); err != nil {
return err
@@ -212,12 +232,14 @@ func (c *vppClient) Disconnect() error {
func (c *vppClient) connect(sockAddr string) error {
addr := &net.UnixAddr{Name: sockAddr, Net: "unix"}
+ Log.Debugf("Connecting to: %v", c.sockAddr)
+
conn, err := net.DialUnix("unix", nil, addr)
if err != nil {
// we try different type of socket for backwards compatbility with VPP<=19.04
if strings.Contains(err.Error(), "wrong type for socket") {
addr.Net = "unixpacket"
- Log.Warnf("%s, retrying connect with type unixpacket", err)
+ Log.Debugf("%s, retrying connect with type unixpacket", err)
conn, err = net.DialUnix("unixpacket", nil, addr)
}
if err != nil {