Bladeren bron

ipv6: drop the use of syscall package in platform-independent code

Change-Id: I001c4b5ffceb97a599da10b21b8df1b1d6740ccc
Reviewed-on: https://go-review.googlesource.com/121883
Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Mikio Hara 7 jaren geleden
bovenliggende
commit
ed29d75add
7 gewijzigde bestanden met toevoegingen van 36 en 46 verwijderingen
  1. 2 3
      ipv6/batch.go
  2. 17 18
      ipv6/dgramopt.go
  3. 6 7
      ipv6/endpoint.go
  4. 4 6
      ipv6/genericopt.go
  5. 1 0
      ipv6/helper.go
  6. 3 6
      ipv6/payload_cmsg.go
  7. 3 6
      ipv6/payload_nocmsg.go

+ 2 - 3
ipv6/batch.go

@@ -9,7 +9,6 @@ package ipv6
 import (
 	"net"
 	"runtime"
-	"syscall"
 
 	"golang.org/x/net/internal/socket"
 )
@@ -67,7 +66,7 @@ type Message = socket.Message
 // On other platforms, this method will read only a single message.
 func (c *payloadHandler) ReadBatch(ms []Message, flags int) (int, error) {
 	if !c.ok() {
-		return 0, syscall.EINVAL
+		return 0, errInvalidConn
 	}
 	switch runtime.GOOS {
 	case "linux":
@@ -98,7 +97,7 @@ func (c *payloadHandler) ReadBatch(ms []Message, flags int) (int, error) {
 // On other platforms, this method will write only a single message.
 func (c *payloadHandler) WriteBatch(ms []Message, flags int) (int, error) {
 	if !c.ok() {
-		return 0, syscall.EINVAL
+		return 0, errInvalidConn
 	}
 	switch runtime.GOOS {
 	case "linux":

+ 17 - 18
ipv6/dgramopt.go

@@ -6,7 +6,6 @@ package ipv6
 
 import (
 	"net"
-	"syscall"
 
 	"golang.org/x/net/bpf"
 )
@@ -15,7 +14,7 @@ import (
 // multicast packets.
 func (c *dgramOpt) MulticastHopLimit() (int, error) {
 	if !c.ok() {
-		return 0, syscall.EINVAL
+		return 0, errInvalidConn
 	}
 	so, ok := sockOpts[ssoMulticastHopLimit]
 	if !ok {
@@ -28,7 +27,7 @@ func (c *dgramOpt) MulticastHopLimit() (int, error) {
 // outgoing multicast packets.
 func (c *dgramOpt) SetMulticastHopLimit(hoplim int) error {
 	if !c.ok() {
-		return syscall.EINVAL
+		return errInvalidConn
 	}
 	so, ok := sockOpts[ssoMulticastHopLimit]
 	if !ok {
@@ -41,7 +40,7 @@ func (c *dgramOpt) SetMulticastHopLimit(hoplim int) error {
 // packet transmissions.
 func (c *dgramOpt) MulticastInterface() (*net.Interface, error) {
 	if !c.ok() {
-		return nil, syscall.EINVAL
+		return nil, errInvalidConn
 	}
 	so, ok := sockOpts[ssoMulticastInterface]
 	if !ok {
@@ -54,7 +53,7 @@ func (c *dgramOpt) MulticastInterface() (*net.Interface, error) {
 // multicast packet transmissions.
 func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error {
 	if !c.ok() {
-		return syscall.EINVAL
+		return errInvalidConn
 	}
 	so, ok := sockOpts[ssoMulticastInterface]
 	if !ok {
@@ -67,7 +66,7 @@ func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error {
 // should be copied and send back to the originator.
 func (c *dgramOpt) MulticastLoopback() (bool, error) {
 	if !c.ok() {
-		return false, syscall.EINVAL
+		return false, errInvalidConn
 	}
 	so, ok := sockOpts[ssoMulticastLoopback]
 	if !ok {
@@ -84,7 +83,7 @@ func (c *dgramOpt) MulticastLoopback() (bool, error) {
 // should be copied and send back to the originator.
 func (c *dgramOpt) SetMulticastLoopback(on bool) error {
 	if !c.ok() {
-		return syscall.EINVAL
+		return errInvalidConn
 	}
 	so, ok := sockOpts[ssoMulticastLoopback]
 	if !ok {
@@ -104,7 +103,7 @@ func (c *dgramOpt) SetMulticastLoopback(on bool) error {
 // configuration.
 func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error {
 	if !c.ok() {
-		return syscall.EINVAL
+		return errInvalidConn
 	}
 	so, ok := sockOpts[ssoJoinGroup]
 	if !ok {
@@ -122,7 +121,7 @@ func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error {
 // source-specific group.
 func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error {
 	if !c.ok() {
-		return syscall.EINVAL
+		return errInvalidConn
 	}
 	so, ok := sockOpts[ssoLeaveGroup]
 	if !ok {
@@ -143,7 +142,7 @@ func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error {
 // routing configuration.
 func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
 	if !c.ok() {
-		return syscall.EINVAL
+		return errInvalidConn
 	}
 	so, ok := sockOpts[ssoJoinSourceGroup]
 	if !ok {
@@ -164,7 +163,7 @@ func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net
 // interface ifi.
 func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
 	if !c.ok() {
-		return syscall.EINVAL
+		return errInvalidConn
 	}
 	so, ok := sockOpts[ssoLeaveSourceGroup]
 	if !ok {
@@ -186,7 +185,7 @@ func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source ne
 // ifi.
 func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
 	if !c.ok() {
-		return syscall.EINVAL
+		return errInvalidConn
 	}
 	so, ok := sockOpts[ssoBlockSourceGroup]
 	if !ok {
@@ -207,7 +206,7 @@ func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source
 // group by ExcludeSourceSpecificGroup again on the interface ifi.
 func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
 	if !c.ok() {
-		return syscall.EINVAL
+		return errInvalidConn
 	}
 	so, ok := sockOpts[ssoUnblockSourceGroup]
 	if !ok {
@@ -230,7 +229,7 @@ func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source
 // field is located.
 func (c *dgramOpt) Checksum() (on bool, offset int, err error) {
 	if !c.ok() {
-		return false, 0, syscall.EINVAL
+		return false, 0, errInvalidConn
 	}
 	so, ok := sockOpts[ssoChecksum]
 	if !ok {
@@ -251,7 +250,7 @@ func (c *dgramOpt) Checksum() (on bool, offset int, err error) {
 // checksum field is located.
 func (c *dgramOpt) SetChecksum(on bool, offset int) error {
 	if !c.ok() {
-		return syscall.EINVAL
+		return errInvalidConn
 	}
 	so, ok := sockOpts[ssoChecksum]
 	if !ok {
@@ -266,7 +265,7 @@ func (c *dgramOpt) SetChecksum(on bool, offset int) error {
 // ICMPFilter returns an ICMP filter.
 func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) {
 	if !c.ok() {
-		return nil, syscall.EINVAL
+		return nil, errInvalidConn
 	}
 	so, ok := sockOpts[ssoICMPFilter]
 	if !ok {
@@ -278,7 +277,7 @@ func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) {
 // SetICMPFilter deploys the ICMP filter.
 func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error {
 	if !c.ok() {
-		return syscall.EINVAL
+		return errInvalidConn
 	}
 	so, ok := sockOpts[ssoICMPFilter]
 	if !ok {
@@ -292,7 +291,7 @@ func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error {
 // Only supported on Linux.
 func (c *dgramOpt) SetBPF(filter []bpf.RawInstruction) error {
 	if !c.ok() {
-		return syscall.EINVAL
+		return errInvalidConn
 	}
 	so, ok := sockOpts[ssoAttachFilter]
 	if !ok {

+ 6 - 7
ipv6/endpoint.go

@@ -6,7 +6,6 @@ package ipv6
 
 import (
 	"net"
-	"syscall"
 	"time"
 
 	"golang.org/x/net/internal/socket"
@@ -34,7 +33,7 @@ func (c *genericOpt) ok() bool { return c != nil && c.Conn != nil }
 // with the endpoint.
 func (c *Conn) PathMTU() (int, error) {
 	if !c.ok() {
-		return 0, syscall.EINVAL
+		return 0, errInvalidConn
 	}
 	so, ok := sockOpts[ssoPathMTU]
 	if !ok {
@@ -76,7 +75,7 @@ func (c *dgramOpt) ok() bool { return c != nil && c.Conn != nil }
 // socket options.
 func (c *PacketConn) SetControlMessage(cf ControlFlags, on bool) error {
 	if !c.payloadHandler.ok() {
-		return syscall.EINVAL
+		return errInvalidConn
 	}
 	return setControlMessage(c.dgramOpt.Conn, &c.payloadHandler.rawOpt, cf, on)
 }
@@ -85,7 +84,7 @@ func (c *PacketConn) SetControlMessage(cf ControlFlags, on bool) error {
 // endpoint.
 func (c *PacketConn) SetDeadline(t time.Time) error {
 	if !c.payloadHandler.ok() {
-		return syscall.EINVAL
+		return errInvalidConn
 	}
 	return c.payloadHandler.SetDeadline(t)
 }
@@ -94,7 +93,7 @@ func (c *PacketConn) SetDeadline(t time.Time) error {
 // endpoint.
 func (c *PacketConn) SetReadDeadline(t time.Time) error {
 	if !c.payloadHandler.ok() {
-		return syscall.EINVAL
+		return errInvalidConn
 	}
 	return c.payloadHandler.SetReadDeadline(t)
 }
@@ -103,7 +102,7 @@ func (c *PacketConn) SetReadDeadline(t time.Time) error {
 // endpoint.
 func (c *PacketConn) SetWriteDeadline(t time.Time) error {
 	if !c.payloadHandler.ok() {
-		return syscall.EINVAL
+		return errInvalidConn
 	}
 	return c.payloadHandler.SetWriteDeadline(t)
 }
@@ -111,7 +110,7 @@ func (c *PacketConn) SetWriteDeadline(t time.Time) error {
 // Close closes the endpoint.
 func (c *PacketConn) Close() error {
 	if !c.payloadHandler.ok() {
-		return syscall.EINVAL
+		return errInvalidConn
 	}
 	return c.payloadHandler.Close()
 }

+ 4 - 6
ipv6/genericopt.go

@@ -4,13 +4,11 @@
 
 package ipv6
 
-import "syscall"
-
 // TrafficClass returns the traffic class field value for outgoing
 // packets.
 func (c *genericOpt) TrafficClass() (int, error) {
 	if !c.ok() {
-		return 0, syscall.EINVAL
+		return 0, errInvalidConn
 	}
 	so, ok := sockOpts[ssoTrafficClass]
 	if !ok {
@@ -23,7 +21,7 @@ func (c *genericOpt) TrafficClass() (int, error) {
 // outgoing packets.
 func (c *genericOpt) SetTrafficClass(tclass int) error {
 	if !c.ok() {
-		return syscall.EINVAL
+		return errInvalidConn
 	}
 	so, ok := sockOpts[ssoTrafficClass]
 	if !ok {
@@ -35,7 +33,7 @@ func (c *genericOpt) SetTrafficClass(tclass int) error {
 // HopLimit returns the hop limit field value for outgoing packets.
 func (c *genericOpt) HopLimit() (int, error) {
 	if !c.ok() {
-		return 0, syscall.EINVAL
+		return 0, errInvalidConn
 	}
 	so, ok := sockOpts[ssoHopLimit]
 	if !ok {
@@ -48,7 +46,7 @@ func (c *genericOpt) HopLimit() (int, error) {
 // packets.
 func (c *genericOpt) SetHopLimit(hoplim int) error {
 	if !c.ok() {
-		return syscall.EINVAL
+		return errInvalidConn
 	}
 	so, ok := sockOpts[ssoHopLimit]
 	if !ok {

+ 1 - 0
ipv6/helper.go

@@ -10,6 +10,7 @@ import (
 )
 
 var (
+	errInvalidConn     = errors.New("invalid connection")
 	errMissingAddress  = errors.New("missing address")
 	errHeaderTooShort  = errors.New("header too short")
 	errInvalidConnType = errors.New("invalid conn type")

+ 3 - 6
ipv6/payload_cmsg.go

@@ -6,10 +6,7 @@
 
 package ipv6
 
-import (
-	"net"
-	"syscall"
-)
+import "net"
 
 // ReadFrom reads a payload of the received IPv6 datagram, from the
 // endpoint c, copying the payload into b. It returns the number of
@@ -17,7 +14,7 @@ import (
 // src of the received datagram.
 func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) {
 	if !c.ok() {
-		return 0, nil, nil, syscall.EINVAL
+		return 0, nil, nil, errInvalidConn
 	}
 	return c.readFrom(b)
 }
@@ -29,7 +26,7 @@ func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.
 // cm may be nil if control of the outgoing datagram is not required.
 func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) {
 	if !c.ok() {
-		return 0, syscall.EINVAL
+		return 0, errInvalidConn
 	}
 	return c.writeTo(b, cm, dst)
 }

+ 3 - 6
ipv6/payload_nocmsg.go

@@ -6,10 +6,7 @@
 
 package ipv6
 
-import (
-	"net"
-	"syscall"
-)
+import "net"
 
 // ReadFrom reads a payload of the received IPv6 datagram, from the
 // endpoint c, copying the payload into b. It returns the number of
@@ -17,7 +14,7 @@ import (
 // src of the received datagram.
 func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) {
 	if !c.ok() {
-		return 0, nil, nil, syscall.EINVAL
+		return 0, nil, nil, errInvalidConn
 	}
 	if n, src, err = c.PacketConn.ReadFrom(b); err != nil {
 		return 0, nil, nil, err
@@ -32,7 +29,7 @@ func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.
 // cm may be nil if control of the outgoing datagram is not required.
 func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) {
 	if !c.ok() {
-		return 0, syscall.EINVAL
+		return 0, errInvalidConn
 	}
 	if dst == nil {
 		return 0, errMissingAddress