internal/socket: make not implemented errors more descriptive

Change-Id: I7c1447849dc664ae54229345f2fce8f59204ecdf
Reviewed-on: https://go-review.googlesource.com/c/150117
Reviewed-by: Ian Lance Taylor <iant@golang.org>
diff --git a/internal/socket/rawconn_nommsg.go b/internal/socket/rawconn_nommsg.go
index f78832a..6ce6fd8 100644
--- a/internal/socket/rawconn_nommsg.go
+++ b/internal/socket/rawconn_nommsg.go
@@ -7,12 +7,10 @@
 
 package socket
 
-import "errors"
-
 func (c *Conn) recvMsgs(ms []Message, flags int) (int, error) {
-	return 0, errors.New("not implemented")
+	return 0, errNotImplemented
 }
 
 func (c *Conn) sendMsgs(ms []Message, flags int) (int, error) {
-	return 0, errors.New("not implemented")
+	return 0, errNotImplemented
 }
diff --git a/internal/socket/rawconn_nomsg.go b/internal/socket/rawconn_nomsg.go
index 96733cb..681e251 100644
--- a/internal/socket/rawconn_nomsg.go
+++ b/internal/socket/rawconn_nomsg.go
@@ -7,12 +7,10 @@
 
 package socket
 
-import "errors"
-
 func (c *Conn) recvMsg(m *Message, flags int) error {
-	return errors.New("not implemented")
+	return errNotImplemented
 }
 
 func (c *Conn) sendMsg(m *Message, flags int) error {
-	return errors.New("not implemented")
+	return errNotImplemented
 }
diff --git a/internal/socket/rawconn_stub.go b/internal/socket/rawconn_stub.go
index d2add1a..4c14e23 100644
--- a/internal/socket/rawconn_stub.go
+++ b/internal/socket/rawconn_stub.go
@@ -6,20 +6,18 @@
 
 package socket
 
-import "errors"
-
 func (c *Conn) recvMsg(m *Message, flags int) error {
-	return errors.New("not implemented")
+	return errNotImplemented
 }
 
 func (c *Conn) sendMsg(m *Message, flags int) error {
-	return errors.New("not implemented")
+	return errNotImplemented
 }
 
 func (c *Conn) recvMsgs(ms []Message, flags int) (int, error) {
-	return 0, errors.New("not implemented")
+	return 0, errNotImplemented
 }
 
 func (c *Conn) sendMsgs(ms []Message, flags int) (int, error) {
-	return 0, errors.New("not implemented")
+	return 0, errNotImplemented
 }
diff --git a/internal/socket/socket.go b/internal/socket/socket.go
index 5f9730e..23571b8 100644
--- a/internal/socket/socket.go
+++ b/internal/socket/socket.go
@@ -9,9 +9,12 @@
 import (
 	"errors"
 	"net"
+	"runtime"
 	"unsafe"
 )
 
+var errNotImplemented = errors.New("not implemented on " + runtime.GOOS + "/" + runtime.GOARCH)
+
 // An Option represents a sticky socket option.
 type Option struct {
 	Level int // level
diff --git a/internal/socket/sys_bsd.go b/internal/socket/sys_bsd.go
index f13e14f..a15c9e3 100644
--- a/internal/socket/sys_bsd.go
+++ b/internal/socket/sys_bsd.go
@@ -6,12 +6,10 @@
 
 package socket
 
-import "errors"
-
 func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
-	return 0, errors.New("not implemented")
+	return 0, errNotImplemented
 }
 
 func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
-	return 0, errors.New("not implemented")
+	return 0, errNotImplemented
 }
diff --git a/internal/socket/sys_solaris.go b/internal/socket/sys_solaris.go
index cced74e..66b5547 100644
--- a/internal/socket/sys_solaris.go
+++ b/internal/socket/sys_solaris.go
@@ -5,7 +5,6 @@
 package socket
 
 import (
-	"errors"
 	"runtime"
 	"syscall"
 	"unsafe"
@@ -63,9 +62,9 @@
 }
 
 func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
-	return 0, errors.New("not implemented")
+	return 0, errNotImplemented
 }
 
 func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
-	return 0, errors.New("not implemented")
+	return 0, errNotImplemented
 }
diff --git a/internal/socket/sys_stub.go b/internal/socket/sys_stub.go
index d9f06d0..e895290 100644
--- a/internal/socket/sys_stub.go
+++ b/internal/socket/sys_stub.go
@@ -7,7 +7,6 @@
 package socket
 
 import (
-	"errors"
 	"net"
 	"runtime"
 	"unsafe"
@@ -36,29 +35,29 @@
 }
 
 func parseInetAddr(b []byte, network string) (net.Addr, error) {
-	return nil, errors.New("not implemented")
+	return nil, errNotImplemented
 }
 
 func getsockopt(s uintptr, level, name int, b []byte) (int, error) {
-	return 0, errors.New("not implemented")
+	return 0, errNotImplemented
 }
 
 func setsockopt(s uintptr, level, name int, b []byte) error {
-	return errors.New("not implemented")
+	return errNotImplemented
 }
 
 func recvmsg(s uintptr, h *msghdr, flags int) (int, error) {
-	return 0, errors.New("not implemented")
+	return 0, errNotImplemented
 }
 
 func sendmsg(s uintptr, h *msghdr, flags int) (int, error) {
-	return 0, errors.New("not implemented")
+	return 0, errNotImplemented
 }
 
 func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
-	return 0, errors.New("not implemented")
+	return 0, errNotImplemented
 }
 
 func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
-	return 0, errors.New("not implemented")
+	return 0, errNotImplemented
 }
diff --git a/internal/socket/sys_windows.go b/internal/socket/sys_windows.go
index 54a470e..924e327 100644
--- a/internal/socket/sys_windows.go
+++ b/internal/socket/sys_windows.go
@@ -5,7 +5,6 @@
 package socket
 
 import (
-	"errors"
 	"syscall"
 	"unsafe"
 )
@@ -54,17 +53,17 @@
 }
 
 func recvmsg(s uintptr, h *msghdr, flags int) (int, error) {
-	return 0, errors.New("not implemented")
+	return 0, errNotImplemented
 }
 
 func sendmsg(s uintptr, h *msghdr, flags int) (int, error) {
-	return 0, errors.New("not implemented")
+	return 0, errNotImplemented
 }
 
 func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
-	return 0, errors.New("not implemented")
+	return 0, errNotImplemented
 }
 
 func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) {
-	return 0, errors.New("not implemented")
+	return 0, errNotImplemented
 }