ipv4: use of internal/netreflect package

Change-Id: Idffb7eace4d7913e7dfad2715d10dcd1762f83e4
Reviewed-on: https://go-review.googlesource.com/27733
Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
diff --git a/ipv4/genericopt_posix.go b/ipv4/genericopt_posix.go
index fefa0be..53bc79f 100644
--- a/ipv4/genericopt_posix.go
+++ b/ipv4/genericopt_posix.go
@@ -6,18 +6,22 @@
 
 package ipv4
 
-import "syscall"
+import (
+	"syscall"
+
+	"golang.org/x/net/internal/netreflect"
+)
 
 // TOS returns the type-of-service field value for outgoing packets.
 func (c *genericOpt) TOS() (int, error) {
 	if !c.ok() {
 		return 0, syscall.EINVAL
 	}
-	fd, err := c.sysfd()
+	s, err := netreflect.SocketOf(c.Conn)
 	if err != nil {
 		return 0, err
 	}
-	return getInt(fd, &sockOpts[ssoTOS])
+	return getInt(s, &sockOpts[ssoTOS])
 }
 
 // SetTOS sets the type-of-service field value for future outgoing
@@ -26,11 +30,11 @@
 	if !c.ok() {
 		return syscall.EINVAL
 	}
-	fd, err := c.sysfd()
+	s, err := netreflect.SocketOf(c.Conn)
 	if err != nil {
 		return err
 	}
-	return setInt(fd, &sockOpts[ssoTOS], tos)
+	return setInt(s, &sockOpts[ssoTOS], tos)
 }
 
 // TTL returns the time-to-live field value for outgoing packets.
@@ -38,11 +42,11 @@
 	if !c.ok() {
 		return 0, syscall.EINVAL
 	}
-	fd, err := c.sysfd()
+	s, err := netreflect.SocketOf(c.Conn)
 	if err != nil {
 		return 0, err
 	}
-	return getInt(fd, &sockOpts[ssoTTL])
+	return getInt(s, &sockOpts[ssoTTL])
 }
 
 // SetTTL sets the time-to-live field value for future outgoing
@@ -51,9 +55,9 @@
 	if !c.ok() {
 		return syscall.EINVAL
 	}
-	fd, err := c.sysfd()
+	s, err := netreflect.SocketOf(c.Conn)
 	if err != nil {
 		return err
 	}
-	return setInt(fd, &sockOpts[ssoTTL], ttl)
+	return setInt(s, &sockOpts[ssoTTL], ttl)
 }