@@ -578,7 +578,7 @@ AC_C_BIGENDIAN
GCC_CHECK_UNWIND_GETIPINFO
-AC_CHECK_HEADERS(port.h sched.h semaphore.h sys/file.h sys/mman.h syscall.h sys/epoll.h sys/event.h sys/inotify.h sys/ptrace.h sys/syscall.h sys/user.h sys/utsname.h sys/select.h sys/socket.h net/if.h net/if_arp.h net/route.h netpacket/packet.h sys/prctl.h sys/mount.h sys/vfs.h sys/statfs.h sys/timex.h sys/sysinfo.h utime.h linux/ether.h linux/fs.h linux/reboot.h netinet/icmp6.h netinet/in_syst.h netinet/ip.h netinet/ip_mroute.h netinet/if_ether.h)
+AC_CHECK_HEADERS(port.h sched.h semaphore.h sys/file.h sys/mman.h syscall.h sys/epoll.h sys/event.h sys/inotify.h sys/ptrace.h sys/syscall.h sys/user.h sys/utsname.h sys/select.h sys/socket.h net/if.h net/if_arp.h net/route.h netpacket/packet.h sys/prctl.h sys/mount.h sys/vfs.h sys/statfs.h sys/timex.h sys/sysinfo.h utime.h linux/ether.h linux/fs.h linux/reboot.h netinet/icmp6.h netinet/in_syst.h netinet/ip.h netinet/ip_mroute.h netinet/if_ether.h sys/sockio.h net/if_types.h)
AC_CHECK_HEADERS([linux/filter.h linux/if_addr.h linux/if_ether.h linux/if_tun.h linux/netlink.h linux/rtnetlink.h], [], [],
[#ifdef HAVE_SYS_SOCKET_H
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build ignore
+// +build solaris
// +godefs map struct_in_addr [4]byte /* in_addr */
// +godefs map struct_in6_addr [16]byte /* in6_addr */
@@ -16,75 +16,76 @@ package lif
#include <net/if.h>
#include <net/if_types.h>
*/
-import "C"
+import "syscall"
const (
- sysAF_UNSPEC = C.AF_UNSPEC
- sysAF_INET = C.AF_INET
- sysAF_INET6 = C.AF_INET6
+ sysAF_UNSPEC = syscall.AF_UNSPEC
+ sysAF_INET = syscall.AF_INET
+ sysAF_INET6 = syscall.AF_INET6
- sysSOCK_DGRAM = C.SOCK_DGRAM
+ sysSOCK_DGRAM = syscall.SOCK_DGRAM
)
-type sockaddrStorage C.struct_sockaddr_storage
+type sockaddrStorage syscall._sockaddr_storage
const (
- sysLIFC_NOXMIT = C.LIFC_NOXMIT
- sysLIFC_EXTERNAL_SOURCE = C.LIFC_EXTERNAL_SOURCE
- sysLIFC_TEMPORARY = C.LIFC_TEMPORARY
- sysLIFC_ALLZONES = C.LIFC_ALLZONES
- sysLIFC_UNDER_IPMP = C.LIFC_UNDER_IPMP
- sysLIFC_ENABLED = C.LIFC_ENABLED
+ sysLIFC_NOXMIT = syscall.LIFC_NOXMIT
+ sysLIFC_EXTERNAL_SOURCE = syscall.LIFC_EXTERNAL_SOURCE
+ sysLIFC_TEMPORARY = syscall.LIFC_TEMPORARY
+ sysLIFC_ALLZONES = syscall.LIFC_ALLZONES
+ sysLIFC_UNDER_IPMP = syscall.LIFC_UNDER_IPMP
+ // Not in Solaris 12, unused.
+ // sysLIFC_ENABLED = syscall.LIFC_ENABLED
- sysSIOCGLIFADDR = C.SIOCGLIFADDR
- sysSIOCGLIFDSTADDR = C.SIOCGLIFDSTADDR
- sysSIOCGLIFFLAGS = C.SIOCGLIFFLAGS
- sysSIOCGLIFMTU = C.SIOCGLIFMTU
- sysSIOCGLIFNETMASK = C.SIOCGLIFNETMASK
- sysSIOCGLIFMETRIC = C.SIOCGLIFMETRIC
- sysSIOCGLIFNUM = C.SIOCGLIFNUM
- sysSIOCGLIFINDEX = C.SIOCGLIFINDEX
- sysSIOCGLIFSUBNET = C.SIOCGLIFSUBNET
- sysSIOCGLIFLNKINFO = C.SIOCGLIFLNKINFO
- sysSIOCGLIFCONF = C.SIOCGLIFCONF
- sysSIOCGLIFHWADDR = C.SIOCGLIFHWADDR
+ sysSIOCGLIFADDR = syscall.SIOCGLIFADDR
+ sysSIOCGLIFDSTADDR = syscall.SIOCGLIFDSTADDR
+ sysSIOCGLIFFLAGS = syscall.SIOCGLIFFLAGS
+ sysSIOCGLIFMTU = syscall.SIOCGLIFMTU
+ sysSIOCGLIFNETMASK = syscall.SIOCGLIFNETMASK
+ sysSIOCGLIFMETRIC = syscall.SIOCGLIFMETRIC
+ sysSIOCGLIFNUM = syscall.SIOCGLIFNUM
+ sysSIOCGLIFINDEX = syscall.SIOCGLIFINDEX
+ sysSIOCGLIFSUBNET = syscall.SIOCGLIFSUBNET
+ sysSIOCGLIFLNKINFO = syscall.SIOCGLIFLNKINFO
+ sysSIOCGLIFCONF = syscall.SIOCGLIFCONF
+ sysSIOCGLIFHWADDR = syscall.SIOCGLIFHWADDR
)
const (
- sysIFF_UP = C.IFF_UP
- sysIFF_BROADCAST = C.IFF_BROADCAST
- sysIFF_DEBUG = C.IFF_DEBUG
- sysIFF_LOOPBACK = C.IFF_LOOPBACK
- sysIFF_POINTOPOINT = C.IFF_POINTOPOINT
- sysIFF_NOTRAILERS = C.IFF_NOTRAILERS
- sysIFF_RUNNING = C.IFF_RUNNING
- sysIFF_NOARP = C.IFF_NOARP
- sysIFF_PROMISC = C.IFF_PROMISC
- sysIFF_ALLMULTI = C.IFF_ALLMULTI
- sysIFF_INTELLIGENT = C.IFF_INTELLIGENT
- sysIFF_MULTICAST = C.IFF_MULTICAST
- sysIFF_MULTI_BCAST = C.IFF_MULTI_BCAST
- sysIFF_UNNUMBERED = C.IFF_UNNUMBERED
- sysIFF_PRIVATE = C.IFF_PRIVATE
+ sysIFF_UP = syscall.IFF_UP
+ sysIFF_BROADCAST = syscall.IFF_BROADCAST
+ sysIFF_DEBUG = syscall.IFF_DEBUG
+ sysIFF_LOOPBACK = syscall.IFF_LOOPBACK
+ sysIFF_POINTOPOINT = syscall.IFF_POINTOPOINT
+ sysIFF_NOTRAILERS = syscall.IFF_NOTRAILERS
+ sysIFF_RUNNING = syscall.IFF_RUNNING
+ sysIFF_NOARP = syscall.IFF_NOARP
+ sysIFF_PROMISC = syscall.IFF_PROMISC
+ sysIFF_ALLMULTI = syscall.IFF_ALLMULTI
+ sysIFF_INTELLIGENT = syscall.IFF_INTELLIGENT
+ sysIFF_MULTICAST = syscall.IFF_MULTICAST
+ sysIFF_MULTI_BCAST = syscall.IFF_MULTI_BCAST
+ sysIFF_UNNUMBERED = syscall.IFF_UNNUMBERED
+ sysIFF_PRIVATE = syscall.IFF_PRIVATE
)
const (
- sizeofLifnum = C.sizeof_struct_lifnum
- sizeofLifreq = C.sizeof_struct_lifreq
- sizeofLifconf = C.sizeof_struct_lifconf
- sizeofLifIfinfoReq = C.sizeof_struct_lif_ifinfo_req
+ sizeofLifnum = syscall._sizeof_lifnum
+ sizeofLifreq = syscall._sizeof_lifreq
+ sizeofLifconf = syscall._sizeof_lifconf
+ sizeofLifIfinfoReq = syscall._sizeof_lif_ifinfo_req
)
-type sysLifnum C.struct_lifnum
+type sysLifnum syscall._lifnum
-type lifreq C.struct_lifreq
+type lifreq syscall._lifreq
-type lifconf C.struct_lifconf
+type lifconf syscall._lifconf
-type lifIfinfoReq C.struct_lif_ifinfo_req
+type lifIfinfoReq syscall._lif_ifinfo_req
const (
- sysIFT_IPV4 = C.IFT_IPV4
- sysIFT_IPV6 = C.IFT_IPV6
- sysIFT_6TO4 = C.IFT_6TO4
+ sysIFT_IPV4 = syscall.IFT_IPV4
+ sysIFT_IPV6 = syscall.IFT_IPV6
+ sysIFT_6TO4 = syscall.IFT_6TO4
)
@@ -11,20 +11,12 @@ import (
"unsafe"
)
-//go:cgo_import_dynamic libc_ioctl ioctl "libc.so"
-
-//go:linkname procIoctl libc_ioctl
-
-var procIoctl uintptr
-
-func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (uintptr, uintptr, syscall.Errno)
-
// TODO: replace with runtime.KeepAlive when available
//go:noescape
func keepAlive(p unsafe.Pointer)
func ioctl(s, ioc uintptr, arg unsafe.Pointer) error {
- _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procIoctl)), 3, s, ioc, uintptr(arg), 0, 0, 0)
+ _, _, errno := syscall.Ioctl(s, ioc, uintptr(arg))
keepAlive(arg)
if errno != 0 {
return error(errno)
@@ -82,6 +82,9 @@
#if defined(HAVE_SYS_SELECT_H)
#include <sys/select.h>
#endif
+#if defined(HAVE_SYS_SOCKIO_H)
+#include <sys/sockio.h>
+#endif
#include <time.h>
#include <unistd.h>
#include <netdb.h>
@@ -111,6 +114,9 @@
#if defined(HAVE_NET_IF_ARP_H)
#include <net/if_arp.h>
#endif
+#if defined(HAVE_NET_IF_TYPES_H)
+#include <net/if_types.h>
+#endif
#if defined(HAVE_NET_ROUTE_H)
#include <net/route.h>
#endif