gomemif: Add mode support

Type: feature

Change-Id: I0bc51288bc63a0583b98314e4e2a62383b0d6e43
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
diff --git a/extras/gomemif/memif/control_channel.go b/extras/gomemif/memif/control_channel.go
index 32e3493..12672e6 100644
--- a/extras/gomemif/memif/control_channel.go
+++ b/extras/gomemif/memif/control_channel.go
@@ -375,7 +375,6 @@
 		return fmt.Errorf("Failed to create UNIX domain socket")
 	}
 	usa := &syscall.SockaddrUnix{Name: socket.filename}
-
 	// Bind to address and start listening
 	err = syscall.SetsockoptInt(fd, syscall.SOL_SOCKET, syscall.SO_PASSCRED, 1)
 	if err != nil {
@@ -518,7 +517,7 @@
 	init := MsgInit{
 		Version: Version,
 		Id:      cc.i.args.Id,
-		Mode:    interfaceModeEthernet,
+		Mode:    cc.i.args.Mode,
 	}
 
 	copy(init.Name[:], []byte(cc.socket.appName))
diff --git a/extras/gomemif/memif/interface.go b/extras/gomemif/memif/interface.go
index a571deb..15a8e87 100644
--- a/extras/gomemif/memif/interface.go
+++ b/extras/gomemif/memif/interface.go
@@ -71,6 +71,7 @@
 type Arguments struct {
 	Id               uint32 // Interface identifier unique across socket. Used to identify peer interface when connecting
 	IsMaster         bool   // Interface role master/slave
+	Mode             interfaceMode
 	Name             string
 	Secret           [24]byte // optional parameter, secrets of the interfaces must match if they are to connect
 	MemoryConfig     MemoryConfig
diff --git a/extras/gomemif/memif/memif.go b/extras/gomemif/memif/memif.go
index 1a7857d..bc1c560 100644
--- a/extras/gomemif/memif/memif.go
+++ b/extras/gomemif/memif/memif.go
@@ -52,9 +52,9 @@
 type interfaceMode uint8
 
 const (
-	interfaceModeEthernet interfaceMode = iota
-	interfaceModeIp
-	interfaceModePuntInject
+	InterfaceModeEthernet interfaceMode = iota
+	InterfaceModeIp
+	InterfaceModePuntInject
 )
 
 const msgSize = 128