]> Cypherpunks repositories - gostls13.git/commitdiff
syscall: openbsd amd64 syscall support
authorJoel Sing <jsing@google.com>
Tue, 23 Aug 2011 03:24:32 +0000 (23:24 -0400)
committerRuss Cox <rsc@golang.org>
Tue, 23 Aug 2011 03:24:32 +0000 (23:24 -0400)
Add support for syscalls on openbsd amd64. This is based on the
existing freebsd amd64 implementation.

R=mikioh.mikioh, rsc, yourcomputerpal
CC=golang-dev
https://golang.org/cl/4798060

14 files changed:
src/pkg/syscall/Makefile
src/pkg/syscall/asm_openbsd_amd64.s [new file with mode: 0644]
src/pkg/syscall/mkall.sh
src/pkg/syscall/mkerrors.sh
src/pkg/syscall/mksyscall.pl
src/pkg/syscall/mksysnum_openbsd.pl [new file with mode: 0755]
src/pkg/syscall/route_openbsd.go [new file with mode: 0644]
src/pkg/syscall/syscall_openbsd.go [new file with mode: 0644]
src/pkg/syscall/syscall_openbsd_amd64.go [new file with mode: 0644]
src/pkg/syscall/types_openbsd.c [new file with mode: 0644]
src/pkg/syscall/zerrors_openbsd_amd64.go [new file with mode: 0644]
src/pkg/syscall/zsyscall_openbsd_amd64.go [new file with mode: 0644]
src/pkg/syscall/zsysnum_openbsd_amd64.go [new file with mode: 0644]
src/pkg/syscall/ztypes_openbsd_amd64.go [new file with mode: 0644]

index f626d099879f3f27cafa9dffc64587dae7c32087..d4dbc3891ec83d3dc4e83dde60e3472662cd8024 100644 (file)
@@ -42,6 +42,15 @@ GOFILES_linux=\
        sockcmsg_unix.go\
        syscall_unix.go\
 
+GOFILES_openbsd=\
+       bpf_bsd.go\
+       exec_unix.go\
+       route_bsd.go\
+       route_openbsd.go\
+       sockcmsg_unix.go\
+       syscall_bsd.go\
+       syscall_unix.go\
+
 GOFILES_windows=\
        exec_windows.go\
        zerrors_windows.go\
diff --git a/src/pkg/syscall/asm_openbsd_amd64.s b/src/pkg/syscall/asm_openbsd_amd64.s
new file mode 100644 (file)
index 0000000..e19c6a9
--- /dev/null
@@ -0,0 +1,130 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//
+// System call support for AMD64, OpenBSD
+//
+
+// func Syscall(trap int64, a1, a2, a3 int64) (r1, r2, err int64);
+// func Syscall6(trap int64, a1, a2, a3, a4, a5, a6 int64) (r1, r2, err int64);
+// func Syscall9(trap int64, a1, a2, a3, a4, a5, a6, a7, a8, a9 int64) (r1, r2, err int64);
+// Trap # in AX, args in DI SI DX, return in AX DX
+
+TEXT   ·Syscall(SB),7,$0
+       CALL    runtime·entersyscall(SB)
+       MOVQ    8(SP), AX       // syscall entry
+       MOVQ    16(SP), DI
+       MOVQ    24(SP), SI
+       MOVQ    32(SP), DX
+       MOVQ    $0, R10
+       MOVQ    $0, R8
+       MOVQ    $0, R9
+       SYSCALL
+       JCC     ok
+       MOVQ    $-1, 40(SP)     // r1
+       MOVQ    $0, 48(SP)      // r2
+       MOVQ    AX, 56(SP)      // errno
+       CALL    runtime·exitsyscall(SB)
+       RET
+ok:
+       MOVQ    AX, 40(SP)      // r1
+       MOVQ    DX, 48(SP)      // r2
+       MOVQ    $0, 56(SP)      // errno
+       CALL    runtime·exitsyscall(SB)
+       RET
+
+TEXT   ·Syscall6(SB),7,$0
+       CALL    runtime·entersyscall(SB)
+       MOVQ    8(SP), AX       // syscall entry
+       MOVQ    16(SP), DI
+       MOVQ    24(SP), SI
+       MOVQ    32(SP), DX
+       MOVQ    40(SP), R10
+       MOVQ    48(SP), R8
+       MOVQ    56(SP), R9
+       SYSCALL
+       JCC     ok6
+       MOVQ    $-1, 64(SP)     // r1
+       MOVQ    $0, 72(SP)      // r2
+       MOVQ    AX, 80(SP)      // errno
+       CALL    runtime·exitsyscall(SB)
+       RET
+ok6:
+       MOVQ    AX, 64(SP)      // r1
+       MOVQ    DX, 72(SP)      // r2
+       MOVQ    $0, 80(SP)      // errno
+       CALL    runtime·exitsyscall(SB)
+       RET
+
+TEXT   ·Syscall9(SB),7,$0
+       CALL    runtime·entersyscall(SB)
+       MOVQ    8(SP), AX       // syscall entry
+       MOVQ    16(SP), DI
+       MOVQ    24(SP), SI
+       MOVQ    32(SP), DX
+       MOVQ    40(SP), R10
+       MOVQ    48(SP), R8
+       MOVQ    56(SP), R9
+       MOVQ    64(SP), R11
+       MOVQ    72(SP), R12
+       MOVQ    80(SP), R13
+       SUBQ    $32, SP
+       MOVQ    R11, 8(SP)      // arg 7
+       MOVQ    R12, 16(SP)     // arg 8
+       MOVQ    R13, 24(SP)     // arg 9
+       SYSCALL
+       JCC     ok9
+       ADDQ    $32, SP
+       MOVQ    $-1, 64(SP)     // r1
+       MOVQ    $0, 72(SP)      // r2
+       MOVQ    AX, 80(SP)      // errno
+       CALL    runtime·exitsyscall(SB)
+       RET
+ok9:
+       ADDQ    $32, SP
+       MOVQ    AX, 64(SP)      // r1
+       MOVQ    DX, 72(SP)      // r2
+       MOVQ    $0, 80(SP)      // errno
+       CALL    runtime·exitsyscall(SB)
+       RET
+
+TEXT   ·RawSyscall(SB),7,$0
+       MOVQ    16(SP), DI
+       MOVQ    24(SP), SI
+       MOVQ    32(SP), DX
+       MOVQ    $0, R10
+       MOVQ    $0, R8
+       MOVQ    $0, R9
+       MOVQ    8(SP), AX       // syscall entry
+       SYSCALL
+       JCC     ok1
+       MOVQ    $-1, 40(SP)     // r1
+       MOVQ    $0, 48(SP)      // r2
+       MOVQ    AX, 56(SP)      // errno
+       RET
+ok1:
+       MOVQ    AX, 40(SP)      // r1
+       MOVQ    DX, 48(SP)      // r2
+       MOVQ    $0, 56(SP)      // errno
+       RET
+
+TEXT   ·RawSyscall6(SB),7,$0
+       MOVQ    16(SP), DI
+       MOVQ    24(SP), SI
+       MOVQ    32(SP), DX
+       MOVQ    40(SP), R10
+       MOVQ    48(SP), R8
+       MOVQ    56(SP), R9
+       MOVQ    8(SP), AX       // syscall entry
+       SYSCALL
+       JCC     ok2
+       MOVQ    $-1, 64(SP)     // r1
+       MOVQ    $0, 72(SP)      // r2
+       MOVQ    AX, 80(SP)      // errno
+       RET
+ok2:
+       MOVQ    AX, 64(SP)      // r1
+       MOVQ    DX, 72(SP)      // r2
+       MOVQ    $0, 80(SP)      // errno
+       RET
index 7d0c1ac2abf1352d955ef498c24aeac984170d09..d01177262bd185728015999a12b24eda70399ef1 100755 (executable)
@@ -166,6 +166,12 @@ plan9_386)
        mksysnum="./mksysnum_plan9.sh /n/sources/plan9/sys/src/libc/9syscall/sys.h"
        mktypes="godefs -gsyscall -f -m32"
        ;;
+openbsd_amd64)
+       mkerrors="$mkerrors -f -m64"
+       mksyscall="./mksyscall.pl -openbsd"
+       mksysnum="curl -s 'http://www.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl"
+       mktypes="godefs -gsyscall -f-m64"
+       ;;
 *)
        echo 'unrecognized $GOOS_$GOARCH: ' "$GOOSARCH" 1>&2
        exit 1
@@ -176,7 +182,7 @@ esac
        if [ -n "$mkerrors" ]; then echo "$mkerrors |gofmt >$zerrors"; fi
        syscall_goos="syscall_$GOOS.go"
        case "$GOOS" in
-       darwin | freebsd)
+       darwin | freebsd | openbsd)
                syscall_goos="syscall_bsd.go $syscall_goos"
                ;;
        esac
index c90cd1c00ec7cf16ab262be6ccf45d9c40cfb0ae..9384e9bece0ce2e5045fc1ff52161a1cec74222b 100755 (executable)
@@ -83,6 +83,28 @@ includes_FreeBSD='
 #include <netinet/ip_mroute.h>
 '
 
+includes_OpenBSD='
+#include <sys/types.h>
+#include <sys/param.h>
+#include <sys/event.h>
+#include <sys/socket.h>
+#include <sys/sockio.h>
+#include <sys/sysctl.h>
+#include <sys/termios.h>
+#include <sys/ttycom.h>
+#include <sys/wait.h>
+#include <net/bpf.h>
+#include <net/if.h>
+#include <net/if_types.h>
+#include <net/route.h>
+#include <netinet/in.h>
+#include <netinet/in_systm.h>
+#include <netinet/ip.h>
+#include <netinet/ip_mroute.h>
+#include <netinet/if_ether.h>
+#include <net/if_bridge.h>
+'
+
 includes='
 #include <sys/types.h>
 #include <fcntl.h>
@@ -120,7 +142,7 @@ done
        # it encounters while processing the input
        echo "${!indirect} $includes" | $GCC -x c - -E -dM $ccflags |
        awk '
-               $1 != "#define" || $2 ~ /\(/ {next}
+               $1 != "#define" || $2 ~ /\(/ || $3 == "" {next}
 
                $2 ~ /^E([ABCD]X|[BIS]P|[SD]I|S|FL)$/ {next}  # 386 registers
                $2 ~ /^(SIGEV_|SIGSTKSZ|SIGRT(MIN|MAX))/ {next}
index ed6525972c2a82959cd427a7ef9be2a553bf0da8..b15af23e0e8c43ee2620565bc55523738b059787 100755 (executable)
@@ -25,6 +25,7 @@ my $cmdline = "mksyscall.pl " . join(' ', @ARGV);
 my $errors = 0;
 my $_32bit = "";
 my $plan9 = 0;
+my $openbsd = 0;
 
 if($ARGV[0] eq "-b32") {
        $_32bit = "big-endian";
@@ -37,6 +38,10 @@ if($ARGV[0] eq "-plan9") {
        $plan9 = 1;
        shift;
 }
+if($ARGV[0] eq "-openbsd") {
+       $openbsd = 1;
+       shift;
+}
 
 if($ARGV[0] =~ /^-/) {
        print STDERR "usage: mksyscall.pl [-b32 | -l32] [file ...]\n";
@@ -115,6 +120,8 @@ while(<>) {
                        $text .= "\n";
                        push @args, "uintptr(_p$n)", "uintptr(len($name))";
                        $n++;
+               } elsif($type eq "int64" && $openbsd) {
+                       push @args, "0", "uintptr($name)";
                } elsif($type eq "int64" && $_32bit ne "") {
                        if($_32bit eq "big-endian") {
                                push @args, "uintptr($name>>32)", "uintptr($name)";
diff --git a/src/pkg/syscall/mksysnum_openbsd.pl b/src/pkg/syscall/mksysnum_openbsd.pl
new file mode 100755 (executable)
index 0000000..e041888
--- /dev/null
@@ -0,0 +1,43 @@
+#!/usr/bin/perl
+# Copyright 2009 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+#
+# Generate system call table for OpenBSD from master list
+# (for example, /usr/src/sys/kern/syscalls.master).
+
+use strict;
+
+my $command = "mksysnum_openbsd.pl " . join(' ', @ARGV);
+
+print <<EOF;
+// $command
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+package syscall
+
+const (
+EOF
+
+while(<>){
+       if(/^([0-9]+)\s+STD\s+(NOLOCK\s+)?({ \S+\s+\*?(\w+).*)$/){
+               my $num = $1;
+               my $proto = $3;
+               my $name = $4;
+               $name =~ y/a-z/A-Z/;
+
+               # There are multiple entries for enosys and nosys, so comment them out.
+               if($name =~ /^SYS_E?NOSYS$/){
+                       $name = "// $name";
+               }
+               if($name eq 'SYS_SYS_EXIT'){
+                       $name = 'SYS_EXIT';
+               }
+
+               print " $name = $num;  // $proto\n";
+       }
+}
+
+print <<EOF;
+)
+EOF
diff --git a/src/pkg/syscall/route_openbsd.go b/src/pkg/syscall/route_openbsd.go
new file mode 100644 (file)
index 0000000..30e1cac
--- /dev/null
@@ -0,0 +1,35 @@
+// Copyright 2011 The Go Authors.  All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Routing sockets and messages for OpenBSD
+
+package syscall
+
+import (
+       "unsafe"
+)
+
+func (any *anyMessage) toRoutingMessage(buf []byte) RoutingMessage {
+       switch any.Type {
+       case RTM_ADD, RTM_DELETE, RTM_CHANGE, RTM_GET, RTM_LOSING, RTM_REDIRECT, RTM_MISS, RTM_LOCK, RTM_RESOLVE:
+               p := (*RouteMessage)(unsafe.Pointer(any))
+               rtm := &RouteMessage{}
+               rtm.Header = p.Header
+               rtm.Data = buf[SizeofRtMsghdr:any.Msglen]
+               return rtm
+       case RTM_IFINFO:
+               p := (*InterfaceMessage)(unsafe.Pointer(any))
+               ifm := &InterfaceMessage{}
+               ifm.Header = p.Header
+               ifm.Data = buf[SizeofIfMsghdr:any.Msglen]
+               return ifm
+       case RTM_NEWADDR, RTM_DELADDR:
+               p := (*InterfaceAddrMessage)(unsafe.Pointer(any))
+               ifam := &InterfaceAddrMessage{}
+               ifam.Header = p.Header
+               ifam.Data = buf[SizeofIfaMsghdr:any.Msglen]
+               return ifam
+       }
+       return nil
+}
diff --git a/src/pkg/syscall/syscall_openbsd.go b/src/pkg/syscall/syscall_openbsd.go
new file mode 100644 (file)
index 0000000..da1bd4d
--- /dev/null
@@ -0,0 +1,261 @@
+// Copyright 2009,2010 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// OpenBSD system calls.
+// This file is compiled as ordinary Go code,
+// but it is also input to mksyscall,
+// which parses the //sys lines and generates system call stubs.
+// Note that sometimes we use a lowercase //sys name and wrap
+// it in our own nicer implementation, either here or in
+// syscall_bsd.go or syscall_unix.go.
+
+package syscall
+
+import "unsafe"
+
+const OS = "openbsd"
+
+type SockaddrDatalink struct {
+       Len    uint8
+       Family uint8
+       Index  uint16
+       Type   uint8
+       Nlen   uint8
+       Alen   uint8
+       Slen   uint8
+       Data   [24]int8
+       raw    RawSockaddrDatalink
+}
+
+func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2, err uintptr)
+
+// ParseDirent parses up to max directory entries in buf,
+// appending the names to names. It returns the number
+// bytes consumed from buf, the number of entries added
+// to names, and the new names slice.
+func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) {
+       origlen := len(buf)
+       for max != 0 && len(buf) > 0 {
+               dirent := (*Dirent)(unsafe.Pointer(&buf[0]))
+               if dirent.Reclen == 0 {
+                       buf = nil
+                       break
+               }
+               buf = buf[dirent.Reclen:]
+               if dirent.Fileno == 0 { // File absent in directory.
+                       continue
+               }
+               bytes := (*[10000]byte)(unsafe.Pointer(&dirent.Name[0]))
+               var name = string(bytes[0:dirent.Namlen])
+               if name == "." || name == ".." { // Useless names
+                       continue
+               }
+               max--
+               count++
+               names = append(names, name)
+       }
+       return origlen - len(buf), count, names
+}
+
+//sysnb pipe(p *[2]_C_int) (errno int)
+func Pipe(p []int) (errno int) {
+       if len(p) != 2 {
+               return EINVAL
+       }
+       var pp [2]_C_int
+       errno = pipe(&pp)
+       p[0] = int(pp[0])
+       p[1] = int(pp[1])
+       return
+}
+
+// TODO
+func Sendfile(outfd int, infd int, offset *int64, count int) (written int, errno int) {
+       return -1, ENOSYS
+}
+
+/*
+ * Exposed directly
+ */
+//sys  Access(path string, mode uint32) (errno int)
+//sys  Adjtime(delta *Timeval, olddelta *Timeval) (errno int)
+//sys  Chdir(path string) (errno int)
+//sys  Chflags(path string, flags int) (errno int)
+//sys  Chmod(path string, mode uint32) (errno int)
+//sys  Chown(path string, uid int, gid int) (errno int)
+//sys  Chroot(path string) (errno int)
+//sys  Close(fd int) (errno int)
+//sysnb        Dup(fd int) (nfd int, errno int)
+//sysnb        Dup2(from int, to int) (errno int)
+//sys  Exit(code int)
+//sys  Fchdir(fd int) (errno int)
+//sys  Fchflags(path string, flags int) (errno int)
+//sys  Fchmod(fd int, mode uint32) (errno int)
+//sys  Fchown(fd int, uid int, gid int) (errno int)
+//sys  Flock(fd int, how int) (errno int)
+//sys  Fpathconf(fd int, name int) (val int, errno int)
+//sys  Fstat(fd int, stat *Stat_t) (errno int)
+//sys  Fstatfs(fd int, stat *Statfs_t) (errno int)
+//sys  Fsync(fd int) (errno int)
+//sys  Ftruncate(fd int, length int64) (errno int)
+//sys  Getdirentries(fd int, buf []byte, basep *uintptr) (n int, errno int)
+//sysnb        Getegid() (egid int)
+//sysnb        Geteuid() (uid int)
+//sys  Getfsstat(buf []Statfs_t, flags int) (n int, errno int)
+//sysnb        Getgid() (gid int)
+//sysnb        Getpgid(pid int) (pgid int, errno int)
+//sysnb        Getpgrp() (pgrp int)
+//sysnb        Getpid() (pid int)
+//sysnb        Getppid() (ppid int)
+//sys  Getpriority(which int, who int) (prio int, errno int)
+//sysnb        Getrlimit(which int, lim *Rlimit) (errno int)
+//sysnb        Getrusage(who int, rusage *Rusage) (errno int)
+//sysnb        Getsid(pid int) (sid int, errno int)
+//sysnb        Gettimeofday(tv *Timeval) (errno int)
+//sysnb        Getuid() (uid int)
+//sys  Issetugid() (tainted bool)
+//sys  Kill(pid int, signum int) (errno int)
+//sys  Kqueue() (fd int, errno int)
+//sys  Lchown(path string, uid int, gid int) (errno int)
+//sys  Link(path string, link string) (errno int)
+//sys  Listen(s int, backlog int) (errno int)
+//sys  Lstat(path string, stat *Stat_t) (errno int)
+//sys  Mkdir(path string, mode uint32) (errno int)
+//sys  Mkfifo(path string, mode uint32) (errno int)
+//sys  Mknod(path string, mode uint32, dev int) (errno int)
+//sys  Nanosleep(time *Timespec, leftover *Timespec) (errno int)
+//sys  Open(path string, mode int, perm uint32) (fd int, errno int)
+//sys  Pathconf(path string, name int) (val int, errno int)
+//sys  Pread(fd int, p []byte, offset int64) (n int, errno int)
+//sys  Pwrite(fd int, p []byte, offset int64) (n int, errno int)
+//sys  Read(fd int, p []byte) (n int, errno int)
+//sys  Readlink(path string, buf []byte) (n int, errno int)
+//sys  Rename(from string, to string) (errno int)
+//sys  Revoke(path string) (errno int)
+//sys  Rmdir(path string) (errno int)
+//sys  Seek(fd int, offset int64, whence int) (newoffset int64, errno int) = SYS_LSEEK
+//sys  Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (errno int)
+//sysnb        Setegid(egid int) (errno int)
+//sysnb        Seteuid(euid int) (errno int)
+//sysnb        Setgid(gid int) (errno int)
+//sys  Setlogin(name string) (errno int)
+//sysnb        Setpgid(pid int, pgid int) (errno int)
+//sys  Setpriority(which int, who int, prio int) (errno int)
+//sysnb        Setregid(rgid int, egid int) (errno int)
+//sysnb        Setreuid(ruid int, euid int) (errno int)
+//sysnb        Setrlimit(which int, lim *Rlimit) (errno int)
+//sysnb        Setsid() (pid int, errno int)
+//sysnb        Settimeofday(tp *Timeval) (errno int)
+//sysnb        Setuid(uid int) (errno int)
+//sys  Stat(path string, stat *Stat_t) (errno int)
+//sys  Statfs(path string, stat *Statfs_t) (errno int)
+//sys  Symlink(path string, link string) (errno int)
+//sys  Sync() (errno int)
+//sys  Truncate(path string, length int64) (errno int)
+//sys  Umask(newmask int) (oldmask int)
+//sys  Unlink(path string) (errno int)
+//sys  Unmount(path string, flags int) (errno int)
+//sys  Write(fd int, p []byte) (n int, errno int)
+//sys  mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, errno int)
+//sys  munmap(addr uintptr, length uintptr) (errno int)
+//sys  read(fd int, buf *byte, nbuf int) (n int, errno int)
+//sys  write(fd int, buf *byte, nbuf int) (n int, errno int)
+
+/*
+ * Unimplemented
+ */
+// __getcwd
+// __semctl
+// __syscall
+// __sysctl
+// adjfreq
+// break
+// clock_getres
+// clock_gettime
+// clock_settime
+// closefrom
+// execve
+// faccessat
+// fchmodat
+// fchownat
+// fcntl
+// fhopen
+// fhstat
+// fhstatfs
+// fork
+// fstatat
+// futimens
+// getfh
+// getgid
+// getitimer
+// getlogin
+// getresgid
+// getresuid
+// getrtable
+// getthrid
+// ioctl
+// ktrace
+// lfs_bmapv
+// lfs_markv
+// lfs_segclean
+// lfs_segwait
+// linkat
+// mincore
+// minherit
+// mkdirat
+// mkfifoat
+// mknodat
+// mlock
+// mlockall
+// mount
+// mquery
+// msgctl
+// msgget
+// msgrcv
+// msgsnd
+// munlock
+// munlockall
+// nfssvc
+// nnpfspioctl
+// openat
+// poll
+// preadv
+// profil
+// pwritev
+// quotactl
+// readlinkat
+// readv
+// reboot
+// renameat
+// rfork
+// sched_yield
+// semget
+// semop
+// setgroups
+// setitimer
+// setresgid
+// setresuid
+// setrtable
+// setsockopt
+// shmat
+// shmctl
+// shmdt
+// shmget
+// sigaction
+// sigaltstack
+// sigpending
+// sigprocmask
+// sigreturn
+// sigsuspend
+// symlinkat
+// sysarch
+// syscall
+// threxit
+// thrsigdivert
+// thrsleep
+// thrwakeup
+// unlinkat
+// utimensat
+// vfork
+// writev
diff --git a/src/pkg/syscall/syscall_openbsd_amd64.go b/src/pkg/syscall/syscall_openbsd_amd64.go
new file mode 100644 (file)
index 0000000..c356ad4
--- /dev/null
@@ -0,0 +1,42 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package syscall
+
+func Getpagesize() int { return 4096 }
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+       ts.Sec = int32(nsec / 1e9)
+       ts.Nsec = nsec % 1e9
+       return
+}
+
+func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 }
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+       nsec += 999 // round up to microsecond
+       tv.Usec = nsec % 1e9 / 1e3
+       tv.Sec = int64(nsec / 1e9)
+       return
+}
+
+func SetKevent(k *Kevent_t, fd, mode, flags int) {
+       k.Ident = uint32(fd)
+       k.Filter = int16(mode)
+       k.Flags = uint16(flags)
+}
+
+func (iov *Iovec) SetLen(length int) {
+       iov.Len = uint64(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+       msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+       cmsg.Len = uint32(length)
+}
diff --git a/src/pkg/syscall/types_openbsd.c b/src/pkg/syscall/types_openbsd.c
new file mode 100644 (file)
index 0000000..e51c64e
--- /dev/null
@@ -0,0 +1,182 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+/*
+Input to godefs.  See also mkerrors.sh and mkall.sh
+ */
+
+#define KERNEL
+#include <dirent.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/event.h>
+#include <sys/mman.h>
+#include <sys/mount.h>
+#include <sys/ptrace.h>
+#include <sys/resource.h>
+#include <sys/select.h>
+#include <sys/signal.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <sys/uio.h>
+#include <sys/un.h>
+#include <sys/wait.h>
+#include <net/bpf.h>
+#include <net/if.h>
+#include <net/if_dl.h>
+#include <net/route.h>
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+
+// Machine characteristics; for internal use.
+
+enum {
+       $sizeofPtr = sizeof(void*),
+       $sizeofShort = sizeof(short),
+       $sizeofInt = sizeof(int),
+       $sizeofLong = sizeof(long),
+       $sizeofLongLong = sizeof(long long),
+};
+
+// Basic types
+
+typedef short $_C_short;
+typedef int $_C_int;
+typedef long $_C_long;
+typedef long long $_C_long_long;
+
+// Time
+
+typedef struct timespec $Timespec;
+typedef struct timeval $Timeval;
+
+// Processes
+
+typedef struct rusage $Rusage;
+typedef struct rlimit $Rlimit;
+
+typedef gid_t $_Gid_t;
+
+// Files
+
+enum { // Directory mode bits
+       $S_IFMT = S_IFMT,
+       $S_IFIFO = S_IFIFO,
+       $S_IFCHR = S_IFCHR,
+       $S_IFDIR = S_IFDIR,
+       $S_IFBLK = S_IFBLK,
+       $S_IFREG = S_IFREG,
+       $S_IFLNK = S_IFLNK,
+       $S_IFSOCK = S_IFSOCK,
+       $S_ISUID = S_ISUID,
+       $S_ISGID = S_ISGID,
+       $S_ISVTX = S_ISVTX,
+       $S_IRUSR = S_IRUSR,
+       $S_IWUSR = S_IWUSR,
+       $S_IXUSR = S_IXUSR,
+};
+
+typedef struct stat $Stat_t;
+typedef struct statfs $Statfs_t;
+typedef struct flock $Flock_t;
+
+typedef struct dirent $Dirent;
+
+// Sockets
+
+union sockaddr_all {
+       struct sockaddr s1;     // this one gets used for fields
+       struct sockaddr_in s2;  // these pad it out
+       struct sockaddr_in6 s3;
+       struct sockaddr_un s4;
+       struct sockaddr_dl s5;
+};
+
+struct sockaddr_any {
+       struct sockaddr addr;
+       char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
+};
+
+typedef struct sockaddr_in $RawSockaddrInet4;
+typedef struct sockaddr_in6 $RawSockaddrInet6;
+typedef struct sockaddr_un $RawSockaddrUnix;
+typedef struct sockaddr_dl $RawSockaddrDatalink;
+typedef struct sockaddr $RawSockaddr;
+typedef struct sockaddr_any $RawSockaddrAny;
+typedef socklen_t $_Socklen;
+typedef struct linger $Linger;
+typedef struct iovec $Iovec;
+typedef struct ip_mreq $IPMreq;
+typedef struct ipv6_mreq $IPv6Mreq;
+typedef struct msghdr $Msghdr;
+typedef struct cmsghdr $Cmsghdr;
+typedef struct in6_pktinfo $Inet6Pktinfo;
+
+enum {
+       $SizeofSockaddrInet4 = sizeof(struct sockaddr_in),
+       $SizeofSockaddrInet6 = sizeof(struct sockaddr_in6),
+       $SizeofSockaddrAny = sizeof(struct sockaddr_any),
+       $SizeofSockaddrUnix = sizeof(struct sockaddr_un),
+       $SizeofSockaddrDatalink = sizeof(struct sockaddr_dl),
+       $SizeofLinger = sizeof(struct linger),
+       $SizeofIPMreq = sizeof(struct ip_mreq),
+       $SizeofIPv6Mreq = sizeof(struct ipv6_mreq),
+       $SizeofMsghdr = sizeof(struct msghdr),
+       $SizeofCmsghdr = sizeof(struct cmsghdr),
+       $SizeofInet6Pktinfo = sizeof(struct in6_pktinfo),
+};
+
+// Ptrace requests
+
+enum {
+       $PTRACE_TRACEME = PT_TRACE_ME,
+       $PTRACE_CONT = PT_CONTINUE,
+       $PTRACE_KILL = PT_KILL,
+};
+
+// Events (kqueue, kevent)
+
+typedef struct kevent $Kevent_t;
+
+// Select
+
+typedef fd_set $FdSet;
+
+// Routing and interface messages
+
+enum {
+       $SizeofIfMsghdr = sizeof(struct if_msghdr),
+       $SizeofIfData = sizeof(struct if_data),
+       $SizeofIfaMsghdr = sizeof(struct ifa_msghdr),
+       $SizeofRtMsghdr = sizeof(struct rt_msghdr),
+       $SizeofRtMetrics = sizeof(struct rt_metrics),
+};
+
+typedef struct if_msghdr $IfMsghdr;
+typedef struct if_data $IfData;
+typedef struct ifa_msghdr $IfaMsghdr;
+typedef struct rt_msghdr $RtMsghdr;
+typedef struct rt_metrics $RtMetrics;
+
+// Berkeley packet filter
+
+enum {
+       $SizeofBpfVersion = sizeof(struct bpf_version),
+       $SizeofBpfStat = sizeof(struct bpf_stat),
+       $SizeofBpfProgram = sizeof(struct bpf_program),
+       $SizeofBpfInsn = sizeof(struct bpf_insn),
+       $SizeofBpfHdr = sizeof(struct bpf_hdr),
+};
+
+typedef struct bpf_version $BpfVersion;
+typedef struct bpf_stat $BpfStat;
+typedef struct bpf_program $BpfProgram;
+typedef struct bpf_insn $BpfInsn;
+typedef struct bpf_hdr $BpfHdr;
+typedef struct bpf_timeval $BpfTimeval;
diff --git a/src/pkg/syscall/zerrors_openbsd_amd64.go b/src/pkg/syscall/zerrors_openbsd_amd64.go
new file mode 100644 (file)
index 0000000..10fa5e4
--- /dev/null
@@ -0,0 +1,1367 @@
+// mkerrors.sh -f -m64
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// godefs -c gcc -f -m64 -gsyscall -f -m64 _const.c
+
+// MACHINE GENERATED - DO NOT EDIT.
+
+package syscall
+
+// Constants
+const (
+       AF_APPLETALK                      = 0x10
+       AF_BLUETOOTH                      = 0x20
+       AF_CCITT                          = 0xa
+       AF_CHAOS                          = 0x5
+       AF_CNT                            = 0x15
+       AF_COIP                           = 0x14
+       AF_DATAKIT                        = 0x9
+       AF_DECnet                         = 0xc
+       AF_DLI                            = 0xd
+       AF_E164                           = 0x1a
+       AF_ECMA                           = 0x8
+       AF_ENCAP                          = 0x1c
+       AF_HYLINK                         = 0xf
+       AF_IMPLINK                        = 0x3
+       AF_INET                           = 0x2
+       AF_INET6                          = 0x18
+       AF_IPX                            = 0x17
+       AF_ISDN                           = 0x1a
+       AF_ISO                            = 0x7
+       AF_KEY                            = 0x1e
+       AF_LAT                            = 0xe
+       AF_LINK                           = 0x12
+       AF_LOCAL                          = 0x1
+       AF_MAX                            = 0x24
+       AF_MPLS                           = 0x21
+       AF_NATM                           = 0x1b
+       AF_NS                             = 0x6
+       AF_OSI                            = 0x7
+       AF_PUP                            = 0x4
+       AF_ROUTE                          = 0x11
+       AF_SIP                            = 0x1d
+       AF_SNA                            = 0xb
+       AF_UNIX                           = 0x1
+       AF_UNSPEC                         = 0
+       ARPHRD_ETHER                      = 0x1
+       ARPHRD_FRELAY                     = 0xf
+       ARPHRD_IEEE1394                   = 0x18
+       ARPHRD_IEEE802                    = 0x6
+       BIOCFLUSH                         = 0x20004268
+       BIOCGBLEN                         = 0x40044266
+       BIOCGDIRFILT                      = 0x4004427c
+       BIOCGDLT                          = 0x4004426a
+       BIOCGDLTLIST                      = 0xc010427b
+       BIOCGETIF                         = 0x4020426b
+       BIOCGFILDROP                      = 0x40044278
+       BIOCGHDRCMPLT                     = 0x40044274
+       BIOCGRSIG                         = 0x40044273
+       BIOCGRTIMEOUT                     = 0x4010426e
+       BIOCGSTATS                        = 0x4008426f
+       BIOCIMMEDIATE                     = 0x80044270
+       BIOCLOCK                          = 0x20004276
+       BIOCPROMISC                       = 0x20004269
+       BIOCSBLEN                         = 0xc0044266
+       BIOCSDIRFILT                      = 0x8004427d
+       BIOCSDLT                          = 0x8004427a
+       BIOCSETF                          = 0x80104267
+       BIOCSETIF                         = 0x8020426c
+       BIOCSETWF                         = 0x80104277
+       BIOCSFILDROP                      = 0x80044279
+       BIOCSHDRCMPLT                     = 0x80044275
+       BIOCSRSIG                         = 0x80044272
+       BIOCSRTIMEOUT                     = 0x8010426d
+       BIOCVERSION                       = 0x40044271
+       BPF_A                             = 0x10
+       BPF_ABS                           = 0x20
+       BPF_ADD                           = 0
+       BPF_ALIGNMENT                     = 0x4
+       BPF_ALU                           = 0x4
+       BPF_AND                           = 0x50
+       BPF_B                             = 0x10
+       BPF_DIRECTION_IN                  = 0x1
+       BPF_DIRECTION_OUT                 = 0x2
+       BPF_DIV                           = 0x30
+       BPF_H                             = 0x8
+       BPF_IMM                           = 0
+       BPF_IND                           = 0x40
+       BPF_JA                            = 0
+       BPF_JEQ                           = 0x10
+       BPF_JGE                           = 0x30
+       BPF_JGT                           = 0x20
+       BPF_JMP                           = 0x5
+       BPF_JSET                          = 0x40
+       BPF_K                             = 0
+       BPF_LD                            = 0
+       BPF_LDX                           = 0x1
+       BPF_LEN                           = 0x80
+       BPF_LSH                           = 0x60
+       BPF_MAJOR_VERSION                 = 0x1
+       BPF_MAXBUFSIZE                    = 0x200000
+       BPF_MAXINSNS                      = 0x200
+       BPF_MEM                           = 0x60
+       BPF_MEMWORDS                      = 0x10
+       BPF_MINBUFSIZE                    = 0x20
+       BPF_MINOR_VERSION                 = 0x1
+       BPF_MISC                          = 0x7
+       BPF_MSH                           = 0xa0
+       BPF_MUL                           = 0x20
+       BPF_NEG                           = 0x80
+       BPF_OR                            = 0x40
+       BPF_RELEASE                       = 0x30bb6
+       BPF_RET                           = 0x6
+       BPF_RSH                           = 0x70
+       BPF_ST                            = 0x2
+       BPF_STX                           = 0x3
+       BPF_SUB                           = 0x10
+       BPF_TAX                           = 0
+       BPF_TXA                           = 0x80
+       BPF_W                             = 0
+       BPF_X                             = 0x8
+       CTL_MAXNAME                       = 0xc
+       CTL_NET                           = 0x4
+       DLT_ARCNET                        = 0x7
+       DLT_ATM_RFC1483                   = 0xb
+       DLT_AX25                          = 0x3
+       DLT_CHAOS                         = 0x5
+       DLT_EN10MB                        = 0x1
+       DLT_EN3MB                         = 0x2
+       DLT_ENC                           = 0xd
+       DLT_FDDI                          = 0xa
+       DLT_IEEE802                       = 0x6
+       DLT_IEEE802_11                    = 0x69
+       DLT_IEEE802_11_RADIO              = 0x7f
+       DLT_LOOP                          = 0xc
+       DLT_MPLS                          = 0xdb
+       DLT_NULL                          = 0
+       DLT_PFLOG                         = 0x75
+       DLT_PFSYNC                        = 0x12
+       DLT_PPP                           = 0x9
+       DLT_PPP_BSDOS                     = 0x10
+       DLT_PPP_ETHER                     = 0x33
+       DLT_PRONET                        = 0x4
+       DLT_RAW                           = 0xe
+       DLT_SLIP                          = 0x8
+       DLT_SLIP_BSDOS                    = 0xf
+       DT_BLK                            = 0x6
+       DT_CHR                            = 0x2
+       DT_DIR                            = 0x4
+       DT_FIFO                           = 0x1
+       DT_LNK                            = 0xa
+       DT_REG                            = 0x8
+       DT_SOCK                           = 0xc
+       DT_UNKNOWN                        = 0
+       E2BIG                             = 0x7
+       EACCES                            = 0xd
+       EADDRINUSE                        = 0x30
+       EADDRNOTAVAIL                     = 0x31
+       EAFNOSUPPORT                      = 0x2f
+       EAGAIN                            = 0x23
+       EALREADY                          = 0x25
+       EAUTH                             = 0x50
+       EBADF                             = 0x9
+       EBADRPC                           = 0x48
+       EBUSY                             = 0x10
+       ECANCELED                         = 0x58
+       ECHILD                            = 0xa
+       ECHO                              = 0x8
+       ECHOCTL                           = 0x40
+       ECHOE                             = 0x2
+       ECHOK                             = 0x4
+       ECHOKE                            = 0x1
+       ECHONL                            = 0x10
+       ECHOPRT                           = 0x20
+       ECONNABORTED                      = 0x35
+       ECONNREFUSED                      = 0x3d
+       ECONNRESET                        = 0x36
+       EDEADLK                           = 0xb
+       EDESTADDRREQ                      = 0x27
+       EDOM                              = 0x21
+       EDQUOT                            = 0x45
+       EEXIST                            = 0x11
+       EFAULT                            = 0xe
+       EFBIG                             = 0x1b
+       EFER_LMA                          = 0x400
+       EFER_LME                          = 0x100
+       EFER_NXE                          = 0x800
+       EFER_SCE                          = 0x1
+       EFTYPE                            = 0x4f
+       EHOSTDOWN                         = 0x40
+       EHOSTUNREACH                      = 0x41
+       EIDRM                             = 0x59
+       EILSEQ                            = 0x54
+       EINPROGRESS                       = 0x24
+       EINTR                             = 0x4
+       EINVAL                            = 0x16
+       EIO                               = 0x5
+       EIPSEC                            = 0x52
+       EISCONN                           = 0x38
+       EISDIR                            = 0x15
+       ELAST                             = 0x5b
+       ELOOP                             = 0x3e
+       EMEDIUMTYPE                       = 0x56
+       EMFILE                            = 0x18
+       EMLINK                            = 0x1f
+       EMSGSIZE                          = 0x28
+       EMT_TAGOVF                        = 0x1
+       EMUL_ENABLED                      = 0x1
+       EMUL_NATIVE                       = 0x2
+       ENAMETOOLONG                      = 0x3f
+       ENDRUNDISC                        = 0x9
+       ENEEDAUTH                         = 0x51
+       ENETDOWN                          = 0x32
+       ENETRESET                         = 0x34
+       ENETUNREACH                       = 0x33
+       ENFILE                            = 0x17
+       ENOATTR                           = 0x53
+       ENOBUFS                           = 0x37
+       ENODEV                            = 0x13
+       ENOENT                            = 0x2
+       ENOEXEC                           = 0x8
+       ENOLCK                            = 0x4d
+       ENOMEDIUM                         = 0x55
+       ENOMEM                            = 0xc
+       ENOMSG                            = 0x5a
+       ENOPROTOOPT                       = 0x2a
+       ENOSPC                            = 0x1c
+       ENOSYS                            = 0x4e
+       ENOTBLK                           = 0xf
+       ENOTCONN                          = 0x39
+       ENOTDIR                           = 0x14
+       ENOTEMPTY                         = 0x42
+       ENOTSOCK                          = 0x26
+       ENOTSUP                           = 0x5b
+       ENOTTY                            = 0x19
+       ENXIO                             = 0x6
+       EOPNOTSUPP                        = 0x2d
+       EOVERFLOW                         = 0x57
+       EPERM                             = 0x1
+       EPFNOSUPPORT                      = 0x2e
+       EPIPE                             = 0x20
+       EPROCLIM                          = 0x43
+       EPROCUNAVAIL                      = 0x4c
+       EPROGMISMATCH                     = 0x4b
+       EPROGUNAVAIL                      = 0x4a
+       EPROTONOSUPPORT                   = 0x2b
+       EPROTOTYPE                        = 0x29
+       ERANGE                            = 0x22
+       EREMOTE                           = 0x47
+       EROFS                             = 0x1e
+       ERPCMISMATCH                      = 0x49
+       ESHUTDOWN                         = 0x3a
+       ESOCKTNOSUPPORT                   = 0x2c
+       ESPIPE                            = 0x1d
+       ESRCH                             = 0x3
+       ESTALE                            = 0x46
+       ETHERMIN                          = 0x2e
+       ETHERMTU                          = 0x5dc
+       ETHERTYPE_8023                    = 0x4
+       ETHERTYPE_AARP                    = 0x80f3
+       ETHERTYPE_ACCTON                  = 0x8390
+       ETHERTYPE_AEONIC                  = 0x8036
+       ETHERTYPE_ALPHA                   = 0x814a
+       ETHERTYPE_AMBER                   = 0x6008
+       ETHERTYPE_AMOEBA                  = 0x8145
+       ETHERTYPE_AOE                     = 0x88a2
+       ETHERTYPE_APOLLO                  = 0x80f7
+       ETHERTYPE_APOLLODOMAIN            = 0x8019
+       ETHERTYPE_APPLETALK               = 0x809b
+       ETHERTYPE_APPLITEK                = 0x80c7
+       ETHERTYPE_ARGONAUT                = 0x803a
+       ETHERTYPE_ARP                     = 0x806
+       ETHERTYPE_AT                      = 0x809b
+       ETHERTYPE_ATALK                   = 0x809b
+       ETHERTYPE_ATOMIC                  = 0x86df
+       ETHERTYPE_ATT                     = 0x8069
+       ETHERTYPE_ATTSTANFORD             = 0x8008
+       ETHERTYPE_AUTOPHON                = 0x806a
+       ETHERTYPE_AXIS                    = 0x8856
+       ETHERTYPE_BCLOOP                  = 0x9003
+       ETHERTYPE_BOFL                    = 0x8102
+       ETHERTYPE_CABLETRON               = 0x7034
+       ETHERTYPE_CHAOS                   = 0x804
+       ETHERTYPE_COMDESIGN               = 0x806c
+       ETHERTYPE_COMPUGRAPHIC            = 0x806d
+       ETHERTYPE_COUNTERPOINT            = 0x8062
+       ETHERTYPE_CRONUS                  = 0x8004
+       ETHERTYPE_CRONUSVLN               = 0x8003
+       ETHERTYPE_DCA                     = 0x1234
+       ETHERTYPE_DDE                     = 0x807b
+       ETHERTYPE_DEBNI                   = 0xaaaa
+       ETHERTYPE_DECAM                   = 0x8048
+       ETHERTYPE_DECCUST                 = 0x6006
+       ETHERTYPE_DECDIAG                 = 0x6005
+       ETHERTYPE_DECDNS                  = 0x803c
+       ETHERTYPE_DECDTS                  = 0x803e
+       ETHERTYPE_DECEXPER                = 0x6000
+       ETHERTYPE_DECLAST                 = 0x8041
+       ETHERTYPE_DECLTM                  = 0x803f
+       ETHERTYPE_DECMUMPS                = 0x6009
+       ETHERTYPE_DECNETBIOS              = 0x8040
+       ETHERTYPE_DELTACON                = 0x86de
+       ETHERTYPE_DIDDLE                  = 0x4321
+       ETHERTYPE_DLOG1                   = 0x660
+       ETHERTYPE_DLOG2                   = 0x661
+       ETHERTYPE_DN                      = 0x6003
+       ETHERTYPE_DOGFIGHT                = 0x1989
+       ETHERTYPE_DSMD                    = 0x8039
+       ETHERTYPE_ECMA                    = 0x803
+       ETHERTYPE_ENCRYPT                 = 0x803d
+       ETHERTYPE_ES                      = 0x805d
+       ETHERTYPE_EXCELAN                 = 0x8010
+       ETHERTYPE_EXPERDATA               = 0x8049
+       ETHERTYPE_FLIP                    = 0x8146
+       ETHERTYPE_FLOWCONTROL             = 0x8808
+       ETHERTYPE_FRARP                   = 0x808
+       ETHERTYPE_GENDYN                  = 0x8068
+       ETHERTYPE_HAYES                   = 0x8130
+       ETHERTYPE_HIPPI_FP                = 0x8180
+       ETHERTYPE_HITACHI                 = 0x8820
+       ETHERTYPE_HP                      = 0x8005
+       ETHERTYPE_IEEEPUP                 = 0xa00
+       ETHERTYPE_IEEEPUPAT               = 0xa01
+       ETHERTYPE_IMLBL                   = 0x4c42
+       ETHERTYPE_IMLBLDIAG               = 0x424c
+       ETHERTYPE_IP                      = 0x800
+       ETHERTYPE_IPAS                    = 0x876c
+       ETHERTYPE_IPV6                    = 0x86dd
+       ETHERTYPE_IPX                     = 0x8137
+       ETHERTYPE_IPXNEW                  = 0x8037
+       ETHERTYPE_KALPANA                 = 0x8582
+       ETHERTYPE_LANBRIDGE               = 0x8038
+       ETHERTYPE_LANPROBE                = 0x8888
+       ETHERTYPE_LAT                     = 0x6004
+       ETHERTYPE_LBACK                   = 0x9000
+       ETHERTYPE_LITTLE                  = 0x8060
+       ETHERTYPE_LLDP                    = 0x88cc
+       ETHERTYPE_LOGICRAFT               = 0x8148
+       ETHERTYPE_LOOPBACK                = 0x9000
+       ETHERTYPE_MATRA                   = 0x807a
+       ETHERTYPE_MAX                     = 0xffff
+       ETHERTYPE_MERIT                   = 0x807c
+       ETHERTYPE_MICP                    = 0x873a
+       ETHERTYPE_MOPDL                   = 0x6001
+       ETHERTYPE_MOPRC                   = 0x6002
+       ETHERTYPE_MOTOROLA                = 0x818d
+       ETHERTYPE_MPLS                    = 0x8847
+       ETHERTYPE_MPLS_MCAST              = 0x8848
+       ETHERTYPE_MUMPS                   = 0x813f
+       ETHERTYPE_NBPCC                   = 0x3c04
+       ETHERTYPE_NBPCLAIM                = 0x3c09
+       ETHERTYPE_NBPCLREQ                = 0x3c05
+       ETHERTYPE_NBPCLRSP                = 0x3c06
+       ETHERTYPE_NBPCREQ                 = 0x3c02
+       ETHERTYPE_NBPCRSP                 = 0x3c03
+       ETHERTYPE_NBPDG                   = 0x3c07
+       ETHERTYPE_NBPDGB                  = 0x3c08
+       ETHERTYPE_NBPDLTE                 = 0x3c0a
+       ETHERTYPE_NBPRAR                  = 0x3c0c
+       ETHERTYPE_NBPRAS                  = 0x3c0b
+       ETHERTYPE_NBPRST                  = 0x3c0d
+       ETHERTYPE_NBPSCD                  = 0x3c01
+       ETHERTYPE_NBPVCD                  = 0x3c00
+       ETHERTYPE_NBS                     = 0x802
+       ETHERTYPE_NCD                     = 0x8149
+       ETHERTYPE_NESTAR                  = 0x8006
+       ETHERTYPE_NETBEUI                 = 0x8191
+       ETHERTYPE_NOVELL                  = 0x8138
+       ETHERTYPE_NS                      = 0x600
+       ETHERTYPE_NSAT                    = 0x601
+       ETHERTYPE_NSCOMPAT                = 0x807
+       ETHERTYPE_NTRAILER                = 0x10
+       ETHERTYPE_OS9                     = 0x7007
+       ETHERTYPE_OS9NET                  = 0x7009
+       ETHERTYPE_PACER                   = 0x80c6
+       ETHERTYPE_PAE                     = 0x888e
+       ETHERTYPE_PCS                     = 0x4242
+       ETHERTYPE_PLANNING                = 0x8044
+       ETHERTYPE_PPP                     = 0x880b
+       ETHERTYPE_PPPOE                   = 0x8864
+       ETHERTYPE_PPPOEDISC               = 0x8863
+       ETHERTYPE_PRIMENTS                = 0x7031
+       ETHERTYPE_PUP                     = 0x200
+       ETHERTYPE_PUPAT                   = 0x200
+       ETHERTYPE_QINQ                    = 0x88a8
+       ETHERTYPE_RACAL                   = 0x7030
+       ETHERTYPE_RATIONAL                = 0x8150
+       ETHERTYPE_RAWFR                   = 0x6559
+       ETHERTYPE_RCL                     = 0x1995
+       ETHERTYPE_RDP                     = 0x8739
+       ETHERTYPE_RETIX                   = 0x80f2
+       ETHERTYPE_REVARP                  = 0x8035
+       ETHERTYPE_SCA                     = 0x6007
+       ETHERTYPE_SECTRA                  = 0x86db
+       ETHERTYPE_SECUREDATA              = 0x876d
+       ETHERTYPE_SGITW                   = 0x817e
+       ETHERTYPE_SG_BOUNCE               = 0x8016
+       ETHERTYPE_SG_DIAG                 = 0x8013
+       ETHERTYPE_SG_NETGAMES             = 0x8014
+       ETHERTYPE_SG_RESV                 = 0x8015
+       ETHERTYPE_SIMNET                  = 0x5208
+       ETHERTYPE_SLOW                    = 0x8809
+       ETHERTYPE_SNA                     = 0x80d5
+       ETHERTYPE_SNMP                    = 0x814c
+       ETHERTYPE_SONIX                   = 0xfaf5
+       ETHERTYPE_SPIDER                  = 0x809f
+       ETHERTYPE_SPRITE                  = 0x500
+       ETHERTYPE_STP                     = 0x8181
+       ETHERTYPE_TALARIS                 = 0x812b
+       ETHERTYPE_TALARISMC               = 0x852b
+       ETHERTYPE_TCPCOMP                 = 0x876b
+       ETHERTYPE_TCPSM                   = 0x9002
+       ETHERTYPE_TEC                     = 0x814f
+       ETHERTYPE_TIGAN                   = 0x802f
+       ETHERTYPE_TRAIL                   = 0x1000
+       ETHERTYPE_TRANSETHER              = 0x6558
+       ETHERTYPE_TYMSHARE                = 0x802e
+       ETHERTYPE_UBBST                   = 0x7005
+       ETHERTYPE_UBDEBUG                 = 0x900
+       ETHERTYPE_UBDIAGLOOP              = 0x7002
+       ETHERTYPE_UBDL                    = 0x7000
+       ETHERTYPE_UBNIU                   = 0x7001
+       ETHERTYPE_UBNMC                   = 0x7003
+       ETHERTYPE_VALID                   = 0x1600
+       ETHERTYPE_VARIAN                  = 0x80dd
+       ETHERTYPE_VAXELN                  = 0x803b
+       ETHERTYPE_VEECO                   = 0x8067
+       ETHERTYPE_VEXP                    = 0x805b
+       ETHERTYPE_VGLAB                   = 0x8131
+       ETHERTYPE_VINES                   = 0xbad
+       ETHERTYPE_VINESECHO               = 0xbaf
+       ETHERTYPE_VINESLOOP               = 0xbae
+       ETHERTYPE_VITAL                   = 0xff00
+       ETHERTYPE_VLAN                    = 0x8100
+       ETHERTYPE_VLTLMAN                 = 0x8080
+       ETHERTYPE_VPROD                   = 0x805c
+       ETHERTYPE_VURESERVED              = 0x8147
+       ETHERTYPE_WATERLOO                = 0x8130
+       ETHERTYPE_WELLFLEET               = 0x8103
+       ETHERTYPE_X25                     = 0x805
+       ETHERTYPE_X75                     = 0x801
+       ETHERTYPE_XNSSM                   = 0x9001
+       ETHERTYPE_XTP                     = 0x817d
+       ETHER_ADDR_LEN                    = 0x6
+       ETHER_ALIGN                       = 0x2
+       ETHER_CRC_LEN                     = 0x4
+       ETHER_CRC_POLY_BE                 = 0x4c11db6
+       ETHER_CRC_POLY_LE                 = 0xedb88320
+       ETHER_HDR_LEN                     = 0xe
+       ETHER_MAX_DIX_LEN                 = 0x600
+       ETHER_MAX_LEN                     = 0x5ee
+       ETHER_MIN_LEN                     = 0x40
+       ETHER_TYPE_LEN                    = 0x2
+       ETHER_VLAN_ENCAP_LEN              = 0x4
+       ETIMEDOUT                         = 0x3c
+       ETOOMANYREFS                      = 0x3b
+       ETXTBSY                           = 0x1a
+       EUSERS                            = 0x44
+       EVFILT_AIO                        = -0x3
+       EVFILT_PROC                       = -0x5
+       EVFILT_READ                       = -0x1
+       EVFILT_SIGNAL                     = -0x6
+       EVFILT_SYSCOUNT                   = 0x7
+       EVFILT_TIMER                      = -0x7
+       EVFILT_VNODE                      = -0x4
+       EVFILT_WRITE                      = -0x2
+       EV_ADD                            = 0x1
+       EV_CLEAR                          = 0x20
+       EV_DELETE                         = 0x2
+       EV_DISABLE                        = 0x8
+       EV_ENABLE                         = 0x4
+       EV_EOF                            = 0x8000
+       EV_ERROR                          = 0x4000
+       EV_FLAG1                          = 0x2000
+       EV_ONESHOT                        = 0x10
+       EV_SYSFLAGS                       = 0xf000
+       EWOULDBLOCK                       = 0x23
+       EXDEV                             = 0x12
+       EXTA                              = 0x4b00
+       EXTB                              = 0x9600
+       EXTPROC                           = 0x800
+       FD_CLOEXEC                        = 0x1
+       FD_SETSIZE                        = 0x400
+       F_DUPFD                           = 0
+       F_DUPFD_CLOEXEC                   = 0xa
+       F_GETFD                           = 0x1
+       F_GETFL                           = 0x3
+       F_GETLK                           = 0x7
+       F_GETOWN                          = 0x5
+       F_RDLCK                           = 0x1
+       F_SETFD                           = 0x2
+       F_SETFL                           = 0x4
+       F_SETLK                           = 0x8
+       F_SETLKW                          = 0x9
+       F_SETOWN                          = 0x6
+       F_UNLCK                           = 0x2
+       F_WRLCK                           = 0x3
+       IFA_ROUTE                         = 0x1
+       IFF_ALLMULTI                      = 0x200
+       IFF_BROADCAST                     = 0x2
+       IFF_CANTCHANGE                    = 0x8e52
+       IFF_DEBUG                         = 0x4
+       IFF_LINK0                         = 0x1000
+       IFF_LINK1                         = 0x2000
+       IFF_LINK2                         = 0x4000
+       IFF_LOOPBACK                      = 0x8
+       IFF_MULTICAST                     = 0x8000
+       IFF_NOARP                         = 0x80
+       IFF_NOTRAILERS                    = 0x20
+       IFF_OACTIVE                       = 0x400
+       IFF_POINTOPOINT                   = 0x10
+       IFF_PROMISC                       = 0x100
+       IFF_RUNNING                       = 0x40
+       IFF_SIMPLEX                       = 0x800
+       IFF_UP                            = 0x1
+       IFNAMSIZ                          = 0x10
+       IFT_1822                          = 0x2
+       IFT_A12MPPSWITCH                  = 0x82
+       IFT_AAL2                          = 0xbb
+       IFT_AAL5                          = 0x31
+       IFT_ADSL                          = 0x5e
+       IFT_AFLANE8023                    = 0x3b
+       IFT_AFLANE8025                    = 0x3c
+       IFT_ARAP                          = 0x58
+       IFT_ARCNET                        = 0x23
+       IFT_ARCNETPLUS                    = 0x24
+       IFT_ASYNC                         = 0x54
+       IFT_ATM                           = 0x25
+       IFT_ATMDXI                        = 0x69
+       IFT_ATMFUNI                       = 0x6a
+       IFT_ATMIMA                        = 0x6b
+       IFT_ATMLOGICAL                    = 0x50
+       IFT_ATMRADIO                      = 0xbd
+       IFT_ATMSUBINTERFACE               = 0x86
+       IFT_ATMVCIENDPT                   = 0xc2
+       IFT_ATMVIRTUAL                    = 0x95
+       IFT_BGPPOLICYACCOUNTING           = 0xa2
+       IFT_BLUETOOTH                     = 0xf8
+       IFT_BRIDGE                        = 0xd1
+       IFT_BSC                           = 0x53
+       IFT_CARP                          = 0xf7
+       IFT_CCTEMUL                       = 0x3d
+       IFT_CEPT                          = 0x13
+       IFT_CES                           = 0x85
+       IFT_CHANNEL                       = 0x46
+       IFT_CNR                           = 0x55
+       IFT_COFFEE                        = 0x84
+       IFT_COMPOSITELINK                 = 0x9b
+       IFT_DCN                           = 0x8d
+       IFT_DIGITALPOWERLINE              = 0x8a
+       IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba
+       IFT_DLSW                          = 0x4a
+       IFT_DOCSCABLEDOWNSTREAM           = 0x80
+       IFT_DOCSCABLEMACLAYER             = 0x7f
+       IFT_DOCSCABLEUPSTREAM             = 0x81
+       IFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd
+       IFT_DS0                           = 0x51
+       IFT_DS0BUNDLE                     = 0x52
+       IFT_DS1FDL                        = 0xaa
+       IFT_DS3                           = 0x1e
+       IFT_DTM                           = 0x8c
+       IFT_DUMMY                         = 0xf1
+       IFT_DVBASILN                      = 0xac
+       IFT_DVBASIOUT                     = 0xad
+       IFT_DVBRCCDOWNSTREAM              = 0x93
+       IFT_DVBRCCMACLAYER                = 0x92
+       IFT_DVBRCCUPSTREAM                = 0x94
+       IFT_ECONET                        = 0xce
+       IFT_ENC                           = 0xf4
+       IFT_EON                           = 0x19
+       IFT_EPLRS                         = 0x57
+       IFT_ESCON                         = 0x49
+       IFT_ETHER                         = 0x6
+       IFT_FAITH                         = 0xf3
+       IFT_FAST                          = 0x7d
+       IFT_FASTETHER                     = 0x3e
+       IFT_FASTETHERFX                   = 0x45
+       IFT_FDDI                          = 0xf
+       IFT_FIBRECHANNEL                  = 0x38
+       IFT_FRAMERELAYINTERCONNECT        = 0x3a
+       IFT_FRAMERELAYMPI                 = 0x5c
+       IFT_FRDLCIENDPT                   = 0xc1
+       IFT_FRELAY                        = 0x20
+       IFT_FRELAYDCE                     = 0x2c
+       IFT_FRF16MFRBUNDLE                = 0xa3
+       IFT_FRFORWARD                     = 0x9e
+       IFT_G703AT2MB                     = 0x43
+       IFT_G703AT64K                     = 0x42
+       IFT_GIF                           = 0xf0
+       IFT_GIGABITETHERNET               = 0x75
+       IFT_GR303IDT                      = 0xb2
+       IFT_GR303RDT                      = 0xb1
+       IFT_H323GATEKEEPER                = 0xa4
+       IFT_H323PROXY                     = 0xa5
+       IFT_HDH1822                       = 0x3
+       IFT_HDLC                          = 0x76
+       IFT_HDSL2                         = 0xa8
+       IFT_HIPERLAN2                     = 0xb7
+       IFT_HIPPI                         = 0x2f
+       IFT_HIPPIINTERFACE                = 0x39
+       IFT_HOSTPAD                       = 0x5a
+       IFT_HSSI                          = 0x2e
+       IFT_HY                            = 0xe
+       IFT_IBM370PARCHAN                 = 0x48
+       IFT_IDSL                          = 0x9a
+       IFT_IEEE1394                      = 0x90
+       IFT_IEEE80211                     = 0x47
+       IFT_IEEE80212                     = 0x37
+       IFT_IEEE8023ADLAG                 = 0xa1
+       IFT_IFGSN                         = 0x91
+       IFT_IMT                           = 0xbe
+       IFT_INFINIBAND                    = 0xc7
+       IFT_INTERLEAVE                    = 0x7c
+       IFT_IP                            = 0x7e
+       IFT_IPFORWARD                     = 0x8e
+       IFT_IPOVERATM                     = 0x72
+       IFT_IPOVERCDLC                    = 0x6d
+       IFT_IPOVERCLAW                    = 0x6e
+       IFT_IPSWITCH                      = 0x4e
+       IFT_ISDN                          = 0x3f
+       IFT_ISDNBASIC                     = 0x14
+       IFT_ISDNPRIMARY                   = 0x15
+       IFT_ISDNS                         = 0x4b
+       IFT_ISDNU                         = 0x4c
+       IFT_ISO88022LLC                   = 0x29
+       IFT_ISO88023                      = 0x7
+       IFT_ISO88024                      = 0x8
+       IFT_ISO88025                      = 0x9
+       IFT_ISO88025CRFPINT               = 0x62
+       IFT_ISO88025DTR                   = 0x56
+       IFT_ISO88025FIBER                 = 0x73
+       IFT_ISO88026                      = 0xa
+       IFT_ISUP                          = 0xb3
+       IFT_L2VLAN                        = 0x87
+       IFT_L3IPVLAN                      = 0x88
+       IFT_L3IPXVLAN                     = 0x89
+       IFT_LAPB                          = 0x10
+       IFT_LAPD                          = 0x4d
+       IFT_LAPF                          = 0x77
+       IFT_LINEGROUP                     = 0xd2
+       IFT_LOCALTALK                     = 0x2a
+       IFT_LOOP                          = 0x18
+       IFT_MEDIAMAILOVERIP               = 0x8b
+       IFT_MFSIGLINK                     = 0xa7
+       IFT_MIOX25                        = 0x26
+       IFT_MODEM                         = 0x30
+       IFT_MPC                           = 0x71
+       IFT_MPLS                          = 0xa6
+       IFT_MPLSTUNNEL                    = 0x96
+       IFT_MSDSL                         = 0x8f
+       IFT_MVL                           = 0xbf
+       IFT_MYRINET                       = 0x63
+       IFT_NFAS                          = 0xaf
+       IFT_NSIP                          = 0x1b
+       IFT_OPTICALCHANNEL                = 0xc3
+       IFT_OPTICALTRANSPORT              = 0xc4
+       IFT_OTHER                         = 0x1
+       IFT_P10                           = 0xc
+       IFT_P80                           = 0xd
+       IFT_PARA                          = 0x22
+       IFT_PFLOG                         = 0xf5
+       IFT_PFLOW                         = 0xf9
+       IFT_PFSYNC                        = 0xf6
+       IFT_PLC                           = 0xae
+       IFT_PON155                        = 0xcf
+       IFT_PON622                        = 0xd0
+       IFT_POS                           = 0xab
+       IFT_PPP                           = 0x17
+       IFT_PPPMULTILINKBUNDLE            = 0x6c
+       IFT_PROPATM                       = 0xc5
+       IFT_PROPBWAP2MP                   = 0xb8
+       IFT_PROPCNLS                      = 0x59
+       IFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5
+       IFT_PROPDOCSWIRELESSMACLAYER      = 0xb4
+       IFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6
+       IFT_PROPMUX                       = 0x36
+       IFT_PROPVIRTUAL                   = 0x35
+       IFT_PROPWIRELESSP2P               = 0x9d
+       IFT_PTPSERIAL                     = 0x16
+       IFT_PVC                           = 0xf2
+       IFT_Q2931                         = 0xc9
+       IFT_QLLC                          = 0x44
+       IFT_RADIOMAC                      = 0xbc
+       IFT_RADSL                         = 0x5f
+       IFT_REACHDSL                      = 0xc0
+       IFT_RFC1483                       = 0x9f
+       IFT_RS232                         = 0x21
+       IFT_RSRB                          = 0x4f
+       IFT_SDLC                          = 0x11
+       IFT_SDSL                          = 0x60
+       IFT_SHDSL                         = 0xa9
+       IFT_SIP                           = 0x1f
+       IFT_SIPSIG                        = 0xcc
+       IFT_SIPTG                         = 0xcb
+       IFT_SLIP                          = 0x1c
+       IFT_SMDSDXI                       = 0x2b
+       IFT_SMDSICIP                      = 0x34
+       IFT_SONET                         = 0x27
+       IFT_SONETOVERHEADCHANNEL          = 0xb9
+       IFT_SONETPATH                     = 0x32
+       IFT_SONETVT                       = 0x33
+       IFT_SRP                           = 0x97
+       IFT_SS7SIGLINK                    = 0x9c
+       IFT_STACKTOSTACK                  = 0x6f
+       IFT_STARLAN                       = 0xb
+       IFT_T1                            = 0x12
+       IFT_TDLC                          = 0x74
+       IFT_TELINK                        = 0xc8
+       IFT_TERMPAD                       = 0x5b
+       IFT_TR008                         = 0xb0
+       IFT_TRANSPHDLC                    = 0x7b
+       IFT_TUNNEL                        = 0x83
+       IFT_ULTRA                         = 0x1d
+       IFT_USB                           = 0xa0
+       IFT_V11                           = 0x40
+       IFT_V35                           = 0x2d
+       IFT_V36                           = 0x41
+       IFT_V37                           = 0x78
+       IFT_VDSL                          = 0x61
+       IFT_VIRTUALIPADDRESS              = 0x70
+       IFT_VIRTUALTG                     = 0xca
+       IFT_VOICEDID                      = 0xd5
+       IFT_VOICEEM                       = 0x64
+       IFT_VOICEEMFGD                    = 0xd3
+       IFT_VOICEENCAP                    = 0x67
+       IFT_VOICEFGDEANA                  = 0xd4
+       IFT_VOICEFXO                      = 0x65
+       IFT_VOICEFXS                      = 0x66
+       IFT_VOICEOVERATM                  = 0x98
+       IFT_VOICEOVERCABLE                = 0xc6
+       IFT_VOICEOVERFRAMERELAY           = 0x99
+       IFT_VOICEOVERIP                   = 0x68
+       IFT_X213                          = 0x5d
+       IFT_X25                           = 0x5
+       IFT_X25DDN                        = 0x4
+       IFT_X25HUNTGROUP                  = 0x7a
+       IFT_X25MLP                        = 0x79
+       IFT_X25PLE                        = 0x28
+       IFT_XETHER                        = 0x1a
+       IN_CLASSA_HOST                    = 0xffffff
+       IN_CLASSA_MAX                     = 0x80
+       IN_CLASSA_NET                     = 0xff000000
+       IN_CLASSA_NSHIFT                  = 0x18
+       IN_CLASSB_HOST                    = 0xffff
+       IN_CLASSB_MAX                     = 0x10000
+       IN_CLASSB_NET                     = 0xffff0000
+       IN_CLASSB_NSHIFT                  = 0x10
+       IN_CLASSC_HOST                    = 0xff
+       IN_CLASSC_NET                     = 0xffffff00
+       IN_CLASSC_NSHIFT                  = 0x8
+       IN_CLASSD_HOST                    = 0xfffffff
+       IN_CLASSD_NET                     = 0xf0000000
+       IN_CLASSD_NSHIFT                  = 0x1c
+       IN_LOOPBACKNET                    = 0x7f
+       IN_RFC3021_HOST                   = 0x1
+       IN_RFC3021_NET                    = 0xfffffffe
+       IN_RFC3021_NSHIFT                 = 0x1f
+       IPPROTO_AH                        = 0x33
+       IPPROTO_CARP                      = 0x70
+       IPPROTO_DIVERT                    = 0x102
+       IPPROTO_DONE                      = 0x101
+       IPPROTO_DSTOPTS                   = 0x3c
+       IPPROTO_EGP                       = 0x8
+       IPPROTO_ENCAP                     = 0x62
+       IPPROTO_EON                       = 0x50
+       IPPROTO_ESP                       = 0x32
+       IPPROTO_ETHERIP                   = 0x61
+       IPPROTO_FRAGMENT                  = 0x2c
+       IPPROTO_GGP                       = 0x3
+       IPPROTO_GRE                       = 0x2f
+       IPPROTO_HOPOPTS                   = 0
+       IPPROTO_ICMP                      = 0x1
+       IPPROTO_ICMPV6                    = 0x3a
+       IPPROTO_IDP                       = 0x16
+       IPPROTO_IGMP                      = 0x2
+       IPPROTO_IP                        = 0
+       IPPROTO_IPCOMP                    = 0x6c
+       IPPROTO_IPIP                      = 0x4
+       IPPROTO_IPV4                      = 0x4
+       IPPROTO_IPV6                      = 0x29
+       IPPROTO_MAX                       = 0x100
+       IPPROTO_MAXID                     = 0x103
+       IPPROTO_MOBILE                    = 0x37
+       IPPROTO_MPLS                      = 0x89
+       IPPROTO_NONE                      = 0x3b
+       IPPROTO_PFSYNC                    = 0xf0
+       IPPROTO_PIM                       = 0x67
+       IPPROTO_PUP                       = 0xc
+       IPPROTO_RAW                       = 0xff
+       IPPROTO_ROUTING                   = 0x2b
+       IPPROTO_RSVP                      = 0x2e
+       IPPROTO_TCP                       = 0x6
+       IPPROTO_TP                        = 0x1d
+       IPPROTO_UDP                       = 0x11
+       IPV6_AUTH_LEVEL                   = 0x35
+       IPV6_AUTOFLOWLABEL                = 0x3b
+       IPV6_CHECKSUM                     = 0x1a
+       IPV6_DEFAULT_MULTICAST_HOPS       = 0x1
+       IPV6_DEFAULT_MULTICAST_LOOP       = 0x1
+       IPV6_DEFHLIM                      = 0x40
+       IPV6_DONTFRAG                     = 0x3e
+       IPV6_DSTOPTS                      = 0x32
+       IPV6_ESP_NETWORK_LEVEL            = 0x37
+       IPV6_ESP_TRANS_LEVEL              = 0x36
+       IPV6_FAITH                        = 0x1d
+       IPV6_FLOWINFO_MASK                = 0xffffff0f
+       IPV6_FLOWLABEL_MASK               = 0xffff0f00
+       IPV6_FRAGTTL                      = 0x78
+       IPV6_HLIMDEC                      = 0x1
+       IPV6_HOPLIMIT                     = 0x2f
+       IPV6_HOPOPTS                      = 0x31
+       IPV6_IPCOMP_LEVEL                 = 0x3c
+       IPV6_JOIN_GROUP                   = 0xc
+       IPV6_LEAVE_GROUP                  = 0xd
+       IPV6_MAXHLIM                      = 0xff
+       IPV6_MAXPACKET                    = 0xffff
+       IPV6_MMTU                         = 0x500
+       IPV6_MULTICAST_HOPS               = 0xa
+       IPV6_MULTICAST_IF                 = 0x9
+       IPV6_MULTICAST_LOOP               = 0xb
+       IPV6_NEXTHOP                      = 0x30
+       IPV6_OPTIONS                      = 0x1
+       IPV6_PATHMTU                      = 0x2c
+       IPV6_PIPEX                        = 0x3f
+       IPV6_PKTINFO                      = 0x2e
+       IPV6_PORTRANGE                    = 0xe
+       IPV6_PORTRANGE_DEFAULT            = 0
+       IPV6_PORTRANGE_HIGH               = 0x1
+       IPV6_PORTRANGE_LOW                = 0x2
+       IPV6_RECVDSTOPTS                  = 0x28
+       IPV6_RECVHOPLIMIT                 = 0x25
+       IPV6_RECVHOPOPTS                  = 0x27
+       IPV6_RECVPATHMTU                  = 0x2b
+       IPV6_RECVPKTINFO                  = 0x24
+       IPV6_RECVRTHDR                    = 0x26
+       IPV6_RECVTCLASS                   = 0x39
+       IPV6_RTABLE                       = 0x1021
+       IPV6_RTHDR                        = 0x33
+       IPV6_RTHDRDSTOPTS                 = 0x23
+       IPV6_RTHDR_LOOSE                  = 0
+       IPV6_RTHDR_STRICT                 = 0x1
+       IPV6_RTHDR_TYPE_0                 = 0
+       IPV6_SOCKOPT_RESERVED1            = 0x3
+       IPV6_TCLASS                       = 0x3d
+       IPV6_UNICAST_HOPS                 = 0x4
+       IPV6_USE_MIN_MTU                  = 0x2a
+       IPV6_V6ONLY                       = 0x1b
+       IPV6_VERSION                      = 0x60
+       IPV6_VERSION_MASK                 = 0xf0
+       IP_ADD_MEMBERSHIP                 = 0xc
+       IP_AUTH_LEVEL                     = 0x14
+       IP_DEFAULT_MULTICAST_LOOP         = 0x1
+       IP_DEFAULT_MULTICAST_TTL          = 0x1
+       IP_DF                             = 0x4000
+       IP_DROP_MEMBERSHIP                = 0xd
+       IP_ESP_NETWORK_LEVEL              = 0x16
+       IP_ESP_TRANS_LEVEL                = 0x15
+       IP_HDRINCL                        = 0x2
+       IP_IPCOMP_LEVEL                   = 0x1d
+       IP_IPSEC_LOCAL_AUTH               = 0x1b
+       IP_IPSEC_LOCAL_CRED               = 0x19
+       IP_IPSEC_LOCAL_ID                 = 0x17
+       IP_IPSEC_REMOTE_AUTH              = 0x1c
+       IP_IPSEC_REMOTE_CRED              = 0x1a
+       IP_IPSEC_REMOTE_ID                = 0x18
+       IP_MAXPACKET                      = 0xffff
+       IP_MAX_MEMBERSHIPS                = 0xfff
+       IP_MF                             = 0x2000
+       IP_MINTTL                         = 0x20
+       IP_MIN_MEMBERSHIPS                = 0xf
+       IP_MSS                            = 0x240
+       IP_MULTICAST_IF                   = 0x9
+       IP_MULTICAST_LOOP                 = 0xb
+       IP_MULTICAST_TTL                  = 0xa
+       IP_OFFMASK                        = 0x1fff
+       IP_OPTIONS                        = 0x1
+       IP_PIPEX                          = 0x22
+       IP_PORTRANGE                      = 0x13
+       IP_PORTRANGE_DEFAULT              = 0
+       IP_PORTRANGE_HIGH                 = 0x1
+       IP_PORTRANGE_LOW                  = 0x2
+       IP_RECVDSTADDR                    = 0x7
+       IP_RECVDSTPORT                    = 0x21
+       IP_RECVIF                         = 0x1e
+       IP_RECVOPTS                       = 0x5
+       IP_RECVRETOPTS                    = 0x6
+       IP_RECVRTABLE                     = 0x23
+       IP_RECVTTL                        = 0x1f
+       IP_RETOPTS                        = 0x8
+       IP_RF                             = 0x8000
+       IP_RTABLE                         = 0x1021
+       IP_TOS                            = 0x3
+       IP_TTL                            = 0x4
+       MAP_ET_KVAGUARD                   = 0x10
+       MSG_BCAST                         = 0x100
+       MSG_CTRUNC                        = 0x20
+       MSG_DONTROUTE                     = 0x4
+       MSG_DONTWAIT                      = 0x80
+       MSG_EOR                           = 0x8
+       MSG_MCAST                         = 0x200
+       MSG_OOB                           = 0x1
+       MSG_PEEK                          = 0x2
+       MSG_TRUNC                         = 0x10
+       MSG_WAITALL                       = 0x40
+       NAME_MAX                          = 0xff
+       NET_RT_DUMP                       = 0x1
+       NET_RT_FLAGS                      = 0x2
+       NET_RT_IFLIST                     = 0x3
+       NET_RT_MAXID                      = 0x6
+       NET_RT_STATS                      = 0x4
+       NET_RT_TABLE                      = 0x5
+       O_ACCMODE                         = 0x3
+       O_APPEND                          = 0x8
+       O_ASYNC                           = 0x40
+       O_CLOEXEC                         = 0x10000
+       O_CREAT                           = 0x200
+       O_DIRECTORY                       = 0x20000
+       O_DSYNC                           = 0x80
+       O_EXCL                            = 0x800
+       O_EXLOCK                          = 0x20
+       O_FSYNC                           = 0x80
+       O_NDELAY                          = 0x4
+       O_NOCTTY                          = 0x8000
+       O_NOFOLLOW                        = 0x100
+       O_NONBLOCK                        = 0x4
+       O_RDONLY                          = 0
+       O_RDWR                            = 0x2
+       O_RSYNC                           = 0x80
+       O_SHLOCK                          = 0x10
+       O_SYNC                            = 0x80
+       O_TRUNC                           = 0x400
+       O_WRONLY                          = 0x1
+       RTAX_AUTHOR                       = 0x6
+       RTAX_BRD                          = 0x7
+       RTAX_DST                          = 0
+       RTAX_GATEWAY                      = 0x1
+       RTAX_GENMASK                      = 0x3
+       RTAX_IFA                          = 0x5
+       RTAX_IFP                          = 0x4
+       RTAX_LABEL                        = 0xa
+       RTAX_MAX                          = 0xb
+       RTAX_NETMASK                      = 0x2
+       RTAX_SRC                          = 0x8
+       RTAX_SRCMASK                      = 0x9
+       RTA_AUTHOR                        = 0x40
+       RTA_BRD                           = 0x80
+       RTA_DST                           = 0x1
+       RTA_GATEWAY                       = 0x2
+       RTA_GENMASK                       = 0x8
+       RTA_IFA                           = 0x20
+       RTA_IFP                           = 0x10
+       RTA_LABEL                         = 0x400
+       RTA_NETMASK                       = 0x4
+       RTA_SRC                           = 0x100
+       RTA_SRCMASK                       = 0x200
+       RTF_ANNOUNCE                      = 0x4000
+       RTF_BLACKHOLE                     = 0x1000
+       RTF_CLONED                        = 0x10000
+       RTF_CLONING                       = 0x100
+       RTF_DONE                          = 0x40
+       RTF_DYNAMIC                       = 0x10
+       RTF_FMASK                         = 0x8f808
+       RTF_GATEWAY                       = 0x2
+       RTF_HOST                          = 0x4
+       RTF_JUMBO                         = 0x80000
+       RTF_LLINFO                        = 0x400
+       RTF_MASK                          = 0x80
+       RTF_MODIFIED                      = 0x20
+       RTF_MPATH                         = 0x40000
+       RTF_MPLS                          = 0x100000
+       RTF_PERMANENT_ARP                 = 0x2000
+       RTF_PROTO1                        = 0x8000
+       RTF_PROTO2                        = 0x4000
+       RTF_PROTO3                        = 0x2000
+       RTF_REJECT                        = 0x8
+       RTF_SOURCE                        = 0x20000
+       RTF_STATIC                        = 0x800
+       RTF_TUNNEL                        = 0x100000
+       RTF_UP                            = 0x1
+       RTF_USETRAILERS                   = 0x8000
+       RTF_XRESOLVE                      = 0x200
+       RTM_ADD                           = 0x1
+       RTM_CHANGE                        = 0x3
+       RTM_DELADDR                       = 0xd
+       RTM_DELETE                        = 0x2
+       RTM_DESYNC                        = 0x10
+       RTM_GET                           = 0x4
+       RTM_IFANNOUNCE                    = 0xf
+       RTM_IFINFO                        = 0xe
+       RTM_LOCK                          = 0x8
+       RTM_LOSING                        = 0x5
+       RTM_MAXSIZE                       = 0x800
+       RTM_MISS                          = 0x7
+       RTM_NEWADDR                       = 0xc
+       RTM_REDIRECT                      = 0x6
+       RTM_RESOLVE                       = 0xb
+       RTM_RTTUNIT                       = 0xf4240
+       RTM_VERSION                       = 0x4
+       RTV_EXPIRE                        = 0x4
+       RTV_HOPCOUNT                      = 0x2
+       RTV_MTU                           = 0x1
+       RTV_RPIPE                         = 0x8
+       RTV_RTT                           = 0x40
+       RTV_RTTVAR                        = 0x80
+       RTV_SPIPE                         = 0x10
+       RTV_SSTHRESH                      = 0x20
+       SCM_CREDS                         = 0x2
+       SCM_RIGHTS                        = 0x1
+       SCM_TIMESTAMP                     = 0x4
+       SHUT_RD                           = 0
+       SHUT_RDWR                         = 0x2
+       SHUT_WR                           = 0x1
+       SIGABRT                           = 0x6
+       SIGALRM                           = 0xe
+       SIGBUS                            = 0xa
+       SIGCHLD                           = 0x14
+       SIGCONT                           = 0x13
+       SIGEMT                            = 0x7
+       SIGFPE                            = 0x8
+       SIGHUP                            = 0x1
+       SIGILL                            = 0x4
+       SIGINFO                           = 0x1d
+       SIGINT                            = 0x2
+       SIGIO                             = 0x17
+       SIGIOT                            = 0x6
+       SIGKILL                           = 0x9
+       SIGPIPE                           = 0xd
+       SIGPROF                           = 0x1b
+       SIGQUIT                           = 0x3
+       SIGSEGV                           = 0xb
+       SIGSTOP                           = 0x11
+       SIGSYS                            = 0xc
+       SIGTERM                           = 0xf
+       SIGTHR                            = 0x20
+       SIGTRAP                           = 0x5
+       SIGTSTP                           = 0x12
+       SIGTTIN                           = 0x15
+       SIGTTOU                           = 0x16
+       SIGURG                            = 0x10
+       SIGUSR1                           = 0x1e
+       SIGUSR2                           = 0x1f
+       SIGVTALRM                         = 0x1a
+       SIGWINCH                          = 0x1c
+       SIGXCPU                           = 0x18
+       SIGXFSZ                           = 0x19
+       SIOCADDMULTI                      = 0x80206931
+       SIOCAIFADDR                       = 0x8040691a
+       SIOCAIFGROUP                      = 0x80286987
+       SIOCALIFADDR                      = 0x8218691c
+       SIOCATMARK                        = 0x40047307
+       SIOCBRDGADD                       = 0x8058693c
+       SIOCBRDGADDS                      = 0x80586941
+       SIOCBRDGARL                       = 0x806e694d
+       SIOCBRDGDADDR                     = 0x80286947
+       SIOCBRDGDEL                       = 0x8058693d
+       SIOCBRDGDELS                      = 0x80586942
+       SIOCBRDGFLUSH                     = 0x80586948
+       SIOCBRDGFRL                       = 0x806e694e
+       SIOCBRDGGCACHE                    = 0xc0146941
+       SIOCBRDGGFD                       = 0xc0146952
+       SIOCBRDGGHT                       = 0xc0146951
+       SIOCBRDGGIFFLGS                   = 0xc058693e
+       SIOCBRDGGMA                       = 0xc0146953
+       SIOCBRDGGPARAM                    = 0xc0406958
+       SIOCBRDGGPRI                      = 0xc0146950
+       SIOCBRDGGRL                       = 0xc030694f
+       SIOCBRDGGSIFS                     = 0xc058693c
+       SIOCBRDGGTO                       = 0xc0146946
+       SIOCBRDGIFS                       = 0xc0586942
+       SIOCBRDGRTS                       = 0xc0206943
+       SIOCBRDGSADDR                     = 0xc0286944
+       SIOCBRDGSCACHE                    = 0x80146940
+       SIOCBRDGSFD                       = 0x80146952
+       SIOCBRDGSHT                       = 0x80146951
+       SIOCBRDGSIFCOST                   = 0x80586955
+       SIOCBRDGSIFFLGS                   = 0x8058693f
+       SIOCBRDGSIFPRIO                   = 0x80586954
+       SIOCBRDGSMA                       = 0x80146953
+       SIOCBRDGSPRI                      = 0x80146950
+       SIOCBRDGSPROTO                    = 0x8014695a
+       SIOCBRDGSTO                       = 0x80146945
+       SIOCBRDGSTXHC                     = 0x80146959
+       SIOCDELMULTI                      = 0x80206932
+       SIOCDIFADDR                       = 0x80206919
+       SIOCDIFGROUP                      = 0x80286989
+       SIOCDIFPHYADDR                    = 0x80206949
+       SIOCDLIFADDR                      = 0x8218691e
+       SIOCGETKALIVE                     = 0xc01869a4
+       SIOCGETLABEL                      = 0x8020699a
+       SIOCGETPFLOW                      = 0xc02069fe
+       SIOCGETPFSYNC                     = 0xc02069f8
+       SIOCGETSGCNT                      = 0xc0207534
+       SIOCGETVIFCNT                     = 0xc0287533
+       SIOCGETVLANPRIO                   = 0xc0206990
+       SIOCGHIWAT                        = 0x40047301
+       SIOCGIFADDR                       = 0xc0206921
+       SIOCGIFASYNCMAP                   = 0xc020697c
+       SIOCGIFBRDADDR                    = 0xc0206923
+       SIOCGIFCONF                       = 0xc0106924
+       SIOCGIFDATA                       = 0xc020691b
+       SIOCGIFDESCR                      = 0xc0206981
+       SIOCGIFDSTADDR                    = 0xc0206922
+       SIOCGIFFLAGS                      = 0xc0206911
+       SIOCGIFGATTR                      = 0xc028698b
+       SIOCGIFGENERIC                    = 0xc020693a
+       SIOCGIFGMEMB                      = 0xc028698a
+       SIOCGIFGROUP                      = 0xc0286988
+       SIOCGIFMEDIA                      = 0xc0306936
+       SIOCGIFMETRIC                     = 0xc0206917
+       SIOCGIFMTU                        = 0xc020697e
+       SIOCGIFNETMASK                    = 0xc0206925
+       SIOCGIFPDSTADDR                   = 0xc0206948
+       SIOCGIFPRIORITY                   = 0xc020699c
+       SIOCGIFPSRCADDR                   = 0xc0206947
+       SIOCGIFRDOMAIN                    = 0xc02069a0
+       SIOCGIFRTLABEL                    = 0xc0206983
+       SIOCGIFTIMESLOT                   = 0xc0206986
+       SIOCGIFXFLAGS                     = 0xc020699e
+       SIOCGLIFADDR                      = 0xc218691d
+       SIOCGLIFPHYADDR                   = 0xc218694b
+       SIOCGLIFPHYRTABLE                 = 0xc02069a2
+       SIOCGLOWAT                        = 0x40047303
+       SIOCGPGRP                         = 0x40047309
+       SIOCGVH                           = 0xc02069f6
+       SIOCIFCREATE                      = 0x8020697a
+       SIOCIFDESTROY                     = 0x80206979
+       SIOCIFGCLONERS                    = 0xc0106978
+       SIOCSETKALIVE                     = 0x801869a3
+       SIOCSETLABEL                      = 0x80206999
+       SIOCSETPFLOW                      = 0x802069fd
+       SIOCSETPFSYNC                     = 0x802069f7
+       SIOCSETVLANPRIO                   = 0x8020698f
+       SIOCSHIWAT                        = 0x80047300
+       SIOCSIFADDR                       = 0x8020690c
+       SIOCSIFASYNCMAP                   = 0x8020697d
+       SIOCSIFBRDADDR                    = 0x80206913
+       SIOCSIFDESCR                      = 0x80206980
+       SIOCSIFDSTADDR                    = 0x8020690e
+       SIOCSIFFLAGS                      = 0x80206910
+       SIOCSIFGATTR                      = 0x8028698c
+       SIOCSIFGENERIC                    = 0x80206939
+       SIOCSIFLLADDR                     = 0x8020691f
+       SIOCSIFMEDIA                      = 0xc0206935
+       SIOCSIFMETRIC                     = 0x80206918
+       SIOCSIFMTU                        = 0x8020697f
+       SIOCSIFNETMASK                    = 0x80206916
+       SIOCSIFPHYADDR                    = 0x80406946
+       SIOCSIFPRIORITY                   = 0x8020699b
+       SIOCSIFRDOMAIN                    = 0x8020699f
+       SIOCSIFRTLABEL                    = 0x80206982
+       SIOCSIFTIMESLOT                   = 0x80206985
+       SIOCSIFXFLAGS                     = 0x8020699d
+       SIOCSLIFPHYADDR                   = 0x8218694a
+       SIOCSLIFPHYRTABLE                 = 0x802069a1
+       SIOCSLOWAT                        = 0x80047302
+       SIOCSPGRP                         = 0x80047308
+       SIOCSVH                           = 0xc02069f5
+       SOCK_DGRAM                        = 0x2
+       SOCK_RAW                          = 0x3
+       SOCK_RDM                          = 0x4
+       SOCK_SEQPACKET                    = 0x5
+       SOCK_STREAM                       = 0x1
+       SOL_SOCKET                        = 0xffff
+       SOMAXCONN                         = 0x80
+       SO_ACCEPTCONN                     = 0x2
+       SO_BINDANY                        = 0x1000
+       SO_BROADCAST                      = 0x20
+       SO_DEBUG                          = 0x1
+       SO_DONTROUTE                      = 0x10
+       SO_ERROR                          = 0x1007
+       SO_JUMBO                          = 0x400
+       SO_KEEPALIVE                      = 0x8
+       SO_LINGER                         = 0x80
+       SO_NETPROC                        = 0x1020
+       SO_OOBINLINE                      = 0x100
+       SO_PEERCRED                       = 0x1022
+       SO_RCVBUF                         = 0x1002
+       SO_RCVLOWAT                       = 0x1004
+       SO_RCVTIMEO                       = 0x1006
+       SO_REUSEADDR                      = 0x4
+       SO_REUSEPORT                      = 0x200
+       SO_RTABLE                         = 0x1021
+       SO_SNDBUF                         = 0x1001
+       SO_SNDLOWAT                       = 0x1003
+       SO_SNDTIMEO                       = 0x1005
+       SO_SPLICE                         = 0x1023
+       SO_TIMESTAMP                      = 0x800
+       SO_TYPE                           = 0x1008
+       SO_USELOOPBACK                    = 0x40
+       TCP_MAXBURST                      = 0x4
+       TCP_MAXSEG                        = 0x2
+       TCP_MAXWIN                        = 0xffff
+       TCP_MAX_SACK                      = 0x3
+       TCP_MAX_WINSHIFT                  = 0xe
+       TCP_MD5SIG                        = 0x4
+       TCP_MSS                           = 0x200
+       TCP_NODELAY                       = 0x1
+       TCP_NSTATES                       = 0xb
+       TCP_SACK_ENABLE                   = 0x8
+       TIOCCBRK                          = 0x2000747a
+       TIOCCDTR                          = 0x20007478
+       TIOCCONS                          = 0x80047462
+       TIOCDRAIN                         = 0x2000745e
+       TIOCEXCL                          = 0x2000740d
+       TIOCEXT                           = 0x80047460
+       TIOCFLAG_CLOCAL                   = 0x2
+       TIOCFLAG_CRTSCTS                  = 0x4
+       TIOCFLAG_MDMBUF                   = 0x8
+       TIOCFLAG_PPS                      = 0x10
+       TIOCFLAG_SOFTCAR                  = 0x1
+       TIOCFLUSH                         = 0x80047410
+       TIOCGETA                          = 0x402c7413
+       TIOCGETD                          = 0x4004741a
+       TIOCGFLAGS                        = 0x4004745d
+       TIOCGPGRP                         = 0x40047477
+       TIOCGTSTAMP                       = 0x4010745b
+       TIOCGWINSZ                        = 0x40087468
+       TIOCMBIC                          = 0x8004746b
+       TIOCMBIS                          = 0x8004746c
+       TIOCMGET                          = 0x4004746a
+       TIOCMODG                          = 0x4004746a
+       TIOCMODS                          = 0x8004746d
+       TIOCMSET                          = 0x8004746d
+       TIOCM_CAR                         = 0x40
+       TIOCM_CD                          = 0x40
+       TIOCM_CTS                         = 0x20
+       TIOCM_DSR                         = 0x100
+       TIOCM_DTR                         = 0x2
+       TIOCM_LE                          = 0x1
+       TIOCM_RI                          = 0x80
+       TIOCM_RNG                         = 0x80
+       TIOCM_RTS                         = 0x4
+       TIOCM_SR                          = 0x10
+       TIOCM_ST                          = 0x8
+       TIOCNOTTY                         = 0x20007471
+       TIOCNXCL                          = 0x2000740e
+       TIOCOUTQ                          = 0x40047473
+       TIOCPKT                           = 0x80047470
+       TIOCPKT_DATA                      = 0
+       TIOCPKT_DOSTOP                    = 0x20
+       TIOCPKT_FLUSHREAD                 = 0x1
+       TIOCPKT_FLUSHWRITE                = 0x2
+       TIOCPKT_IOCTL                     = 0x40
+       TIOCPKT_NOSTOP                    = 0x10
+       TIOCPKT_START                     = 0x8
+       TIOCPKT_STOP                      = 0x4
+       TIOCREMOTE                        = 0x80047469
+       TIOCSBRK                          = 0x2000747b
+       TIOCSCTTY                         = 0x20007461
+       TIOCSDTR                          = 0x20007479
+       TIOCSETA                          = 0x802c7414
+       TIOCSETAF                         = 0x802c7416
+       TIOCSETAW                         = 0x802c7415
+       TIOCSETD                          = 0x8004741b
+       TIOCSFLAGS                        = 0x8004745c
+       TIOCSIG                           = 0x8004745f
+       TIOCSPGRP                         = 0x80047476
+       TIOCSTART                         = 0x2000746e
+       TIOCSTAT                          = 0x80047465
+       TIOCSTI                           = 0x80017472
+       TIOCSTOP                          = 0x2000746f
+       TIOCSTSTAMP                       = 0x8008745a
+       TIOCSWINSZ                        = 0x80087467
+       TIOCUCNTL                         = 0x80047466
+       WALTSIG                           = 0x4
+       WCONTINUED                        = 0x8
+       WCOREFLAG                         = 0x80
+       WNOHANG                           = 0x1
+       WSTOPPED                          = 0x7f
+       WUNTRACED                         = 0x2
+)
+
+// Types
+
+// Error table
+var errors = [...]string{
+       1:  "operation not permitted",
+       2:  "no such file or directory",
+       3:  "no such process",
+       4:  "interrupted system call",
+       5:  "input/output error",
+       6:  "device not configured",
+       7:  "argument list too long",
+       8:  "exec format error",
+       9:  "bad file descriptor",
+       10: "no child processes",
+       11: "resource deadlock avoided",
+       12: "cannot allocate memory",
+       13: "permission denied",
+       14: "bad address",
+       15: "block device required",
+       16: "device busy",
+       17: "file exists",
+       18: "cross-device link",
+       19: "operation not supported by device",
+       20: "not a directory",
+       21: "is a directory",
+       22: "invalid argument",
+       23: "too many open files in system",
+       24: "too many open files",
+       25: "inappropriate ioctl for device",
+       26: "text file busy",
+       27: "file too large",
+       28: "no space left on device",
+       29: "illegal seek",
+       30: "read-only file system",
+       31: "too many links",
+       32: "broken pipe",
+       33: "numerical argument out of domain",
+       34: "result too large",
+       35: "resource temporarily unavailable",
+       36: "operation now in progress",
+       37: "operation already in progress",
+       38: "socket operation on non-socket",
+       39: "destination address required",
+       40: "message too long",
+       41: "protocol wrong type for socket",
+       42: "protocol not available",
+       43: "protocol not supported",
+       44: "socket type not supported",
+       45: "operation not supported",
+       46: "protocol family not supported",
+       47: "address family not supported by protocol family",
+       48: "address already in use",
+       49: "can't assign requested address",
+       50: "network is down",
+       51: "network is unreachable",
+       52: "network dropped connection on reset",
+       53: "software caused connection abort",
+       54: "connection reset by peer",
+       55: "no buffer space available",
+       56: "socket is already connected",
+       57: "socket is not connected",
+       58: "can't send after socket shutdown",
+       59: "too many references: can't splice",
+       60: "connection timed out",
+       61: "connection refused",
+       62: "too many levels of symbolic links",
+       63: "file name too long",
+       64: "host is down",
+       65: "no route to host",
+       66: "directory not empty",
+       67: "too many processes",
+       68: "too many users",
+       69: "disc quota exceeded",
+       70: "stale NFS file handle",
+       71: "too many levels of remote in path",
+       72: "RPC struct is bad",
+       73: "RPC version wrong",
+       74: "RPC prog. not avail",
+       75: "program version wrong",
+       76: "bad procedure for program",
+       77: "no locks available",
+       78: "function not implemented",
+       79: "inappropriate file type or format",
+       80: "authentication error",
+       81: "need authenticator",
+       82: "IPsec processing failure",
+       83: "attribute not found",
+       84: "illegal byte sequence",
+       85: "no medium found",
+       86: "wrong medium type",
+       87: "value too large to be stored in data type",
+       88: "operation canceled",
+       89: "identifier removed",
+       90: "no message of desired type",
+       91: "not supported",
+}
diff --git a/src/pkg/syscall/zsyscall_openbsd_amd64.go b/src/pkg/syscall/zsyscall_openbsd_amd64.go
new file mode 100644 (file)
index 0000000..94ce290
--- /dev/null
@@ -0,0 +1,941 @@
+// mksyscall.pl -openbsd syscall_bsd.go syscall_openbsd.go syscall_openbsd_amd64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+package syscall
+
+import "unsafe"
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, errno int) {
+       r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       n = int(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (errno int) {
+       _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, errno int) {
+       r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+       wpid = int(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, errno int) {
+       r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       fd = int(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr uintptr, addrlen _Socklen) (errno int) {
+       _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr uintptr, addrlen _Socklen) (errno int) {
+       _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socket(domain int, typ int, proto int) (fd int, errno int) {
+       r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+       fd = int(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (errno int) {
+       _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val uintptr, vallen uintptr) (errno int) {
+       _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (errno int) {
+       _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (errno int) {
+       _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (errno int) {
+       _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socketpair(domain int, typ int, proto int, fd *[2]int) (errno int) {
+       _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, errno int) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+       n = int(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to uintptr, addrlen _Socklen) (errno int) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, errno int) {
+       r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (errno int) {
+       _, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change uintptr, nchange int, event uintptr, nevent int, timeout *Timespec) (n int, errno int) {
+       r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+       n = int(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (errno int) {
+       var _p0 unsafe.Pointer
+       if len(mib) > 0 {
+               _p0 = unsafe.Pointer(&mib[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (errno int) {
+       _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(timeval)), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (errno int) {
+       _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fcntl(fd int, cmd int, arg int) (val int, errno int) {
+       r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+       val = int(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe(p *[2]_C_int) (errno int) {
+       _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (errno int) {
+       _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (errno int) {
+       _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (errno int) {
+       _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (errno int) {
+       _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(flags), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (errno int) {
+       _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (errno int) {
+       _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid))
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (errno int) {
+       _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (errno int) {
+       _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, errno int) {
+       r0, _, e1 := RawSyscall(SYS_DUP, uintptr(fd), 0, 0)
+       nfd = int(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (errno int) {
+       _, _, e1 := RawSyscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+       Syscall(SYS_EXIT, uintptr(code), 0, 0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (errno int) {
+       _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(path string, flags int) (errno int) {
+       _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(flags), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (errno int) {
+       _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (errno int) {
+       _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (errno int) {
+       _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, errno int) {
+       r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+       val = int(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (errno int) {
+       _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, stat *Statfs_t) (errno int) {
+       _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (errno int) {
+       _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (errno int) {
+       _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, errno int) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
+       n = int(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getegid() (egid int) {
+       r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)
+       egid = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Geteuid() (uid int) {
+       r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+       uid = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getfsstat(buf []Statfs_t, flags int) (n int, errno int) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), uintptr(len(buf)), uintptr(flags))
+       n = int(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+       r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)
+       gid = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, errno int) {
+       r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+       pgid = int(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgrp() (pgrp int) {
+       r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)
+       pgrp = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpid() (pid int) {
+       r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)
+       pid = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getppid() (ppid int) {
+       r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)
+       ppid = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpriority(which int, who int) (prio int, errno int) {
+       r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+       prio = int(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (errno int) {
+       _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (errno int) {
+       _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, errno int) {
+       r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+       sid = int(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (errno int) {
+       _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getuid() (uid int) {
+       r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)
+       uid = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Issetugid() (tainted bool) {
+       r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)
+       tainted = bool(r0 != 0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, signum int) (errno int) {
+       _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, errno int) {
+       r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+       fd = int(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (errno int) {
+       _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(uid), uintptr(gid))
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (errno int) {
+       _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(StringBytePtr(link))), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (errno int) {
+       _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (errno int) {
+       _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (errno int) {
+       _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (errno int) {
+       _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (errno int) {
+       _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(dev))
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (errno int) {
+       _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Open(path string, mode int, perm uint32) (fd int, errno int) {
+       r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(mode), uintptr(perm))
+       fd = int(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, errno int) {
+       r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(name), 0)
+       val = int(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pread(fd int, p []byte, offset int64) (n int, errno int) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)
+       n = int(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pwrite(fd int, p []byte, offset int64) (n int, errno int) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)
+       n = int(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Read(fd int, p []byte) (n int, errno int) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+       n = int(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, errno int) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(_p0), uintptr(len(buf)))
+       n = int(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (errno int) {
+       _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(StringBytePtr(from))), uintptr(unsafe.Pointer(StringBytePtr(to))), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (errno int) {
+       _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (errno int) {
+       _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (newoffset int64, errno int) {
+       r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)
+       newoffset = int64(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (errno int) {
+       _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (errno int) {
+       _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (errno int) {
+       _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (errno int) {
+       _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setlogin(name string) (errno int) {
+       _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(StringBytePtr(name))), 0, 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (errno int) {
+       _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (errno int) {
+       _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (errno int) {
+       _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (errno int) {
+       _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (errno int) {
+       _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, errno int) {
+       r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+       pid = int(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (errno int) {
+       _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (errno int) {
+       _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (errno int) {
+       _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, stat *Statfs_t) (errno int) {
+       _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(stat)), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (errno int) {
+       _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(unsafe.Pointer(StringBytePtr(link))), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (errno int) {
+       _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (errno int) {
+       _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, uintptr(length))
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(newmask int) (oldmask int) {
+       r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)
+       oldmask = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unlink(path string) (errno int) {
+       _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(StringBytePtr(path))), 0, 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (errno int) {
+       _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(StringBytePtr(path))), uintptr(flags), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Write(fd int, p []byte) (n int, errno int) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))
+       n = int(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, errno int) {
+       r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)
+       ret = uintptr(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (errno int) {
+       _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, buf *byte, nbuf int) (n int, errno int) {
+       r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       errno = int(e1)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, buf *byte, nbuf int) (n int, errno int) {
+       r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       errno = int(e1)
+       return
+}
diff --git a/src/pkg/syscall/zsysnum_openbsd_amd64.go b/src/pkg/syscall/zsysnum_openbsd_amd64.go
new file mode 100644 (file)
index 0000000..dc47750
--- /dev/null
@@ -0,0 +1,204 @@
+// mksysnum_openbsd.pl 
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+package syscall
+
+const (
+       SYS_EXIT          = 1   // { void sys_exit(int rval); }
+       SYS_FORK          = 2   // { int sys_fork(void); }
+       SYS_READ          = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }
+       SYS_WRITE         = 4   // { ssize_t sys_write(int fd, const void *buf, \
+       SYS_OPEN          = 5   // { int sys_open(const char *path, \
+       SYS_CLOSE         = 6   // { int sys_close(int fd); }
+       SYS_WAIT4         = 7   // { pid_t sys_wait4(pid_t pid, int *status, int options, \
+       SYS_LINK          = 9   // { int sys_link(const char *path, const char *link); }
+       SYS_UNLINK        = 10  // { int sys_unlink(const char *path); }
+       SYS_CHDIR         = 12  // { int sys_chdir(const char *path); }
+       SYS_FCHDIR        = 13  // { int sys_fchdir(int fd); }
+       SYS_MKNOD         = 14  // { int sys_mknod(const char *path, mode_t mode, \
+       SYS_CHMOD         = 15  // { int sys_chmod(const char *path, mode_t mode); }
+       SYS_CHOWN         = 16  // { int sys_chown(const char *path, uid_t uid, \
+       SYS_OBREAK        = 17  // { int sys_obreak(char *nsize); } break
+       SYS_GETPID        = 20  // { pid_t sys_getpid(void); }
+       SYS_MOUNT         = 21  // { int sys_mount(const char *type, const char *path, \
+       SYS_UNMOUNT       = 22  // { int sys_unmount(const char *path, int flags); }
+       SYS_SETUID        = 23  // { int sys_setuid(uid_t uid); }
+       SYS_GETUID        = 24  // { uid_t sys_getuid(void); }
+       SYS_GETEUID       = 25  // { uid_t sys_geteuid(void); }
+       SYS_PTRACE        = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, \
+       SYS_RECVMSG       = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, \
+       SYS_SENDMSG       = 28  // { ssize_t sys_sendmsg(int s, \
+       SYS_RECVFROM      = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, \
+       SYS_ACCEPT        = 30  // { int sys_accept(int s, struct sockaddr *name, \
+       SYS_GETPEERNAME   = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, \
+       SYS_GETSOCKNAME   = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, \
+       SYS_ACCESS        = 33  // { int sys_access(const char *path, int flags); }
+       SYS_CHFLAGS       = 34  // { int sys_chflags(const char *path, u_int flags); }
+       SYS_FCHFLAGS      = 35  // { int sys_fchflags(int fd, u_int flags); }
+       SYS_SYNC          = 36  // { void sys_sync(void); }
+       SYS_KILL          = 37  // { int sys_kill(int pid, int signum); }
+       SYS_GETPPID       = 39  // { pid_t sys_getppid(void); }
+       SYS_DUP           = 41  // { int sys_dup(int fd); }
+       SYS_GETEGID       = 43  // { gid_t sys_getegid(void); }
+       SYS_PROFIL        = 44  // { int sys_profil(caddr_t samples, size_t size, \
+       SYS_KTRACE        = 45  // { int sys_ktrace(const char *fname, int ops, \
+       SYS_SIGACTION     = 46  // { int sys_sigaction(int signum, \
+       SYS_GETGID        = 47  // { gid_t sys_getgid(void); }
+       SYS_SIGPROCMASK   = 48  // { int sys_sigprocmask(int how, sigset_t mask); }
+       SYS_GETLOGIN      = 49  // { int sys_getlogin(char *namebuf, u_int namelen); }
+       SYS_SETLOGIN      = 50  // { int sys_setlogin(const char *namebuf); }
+       SYS_ACCT          = 51  // { int sys_acct(const char *path); }
+       SYS_SIGPENDING    = 52  // { int sys_sigpending(void); }
+       SYS_IOCTL         = 54  // { int sys_ioctl(int fd, \
+       SYS_REBOOT        = 55  // { int sys_reboot(int opt); }
+       SYS_REVOKE        = 56  // { int sys_revoke(const char *path); }
+       SYS_SYMLINK       = 57  // { int sys_symlink(const char *path, \
+       SYS_READLINK      = 58  // { int sys_readlink(const char *path, char *buf, \
+       SYS_EXECVE        = 59  // { int sys_execve(const char *path, \
+       SYS_UMASK         = 60  // { mode_t sys_umask(mode_t newmask); }
+       SYS_CHROOT        = 61  // { int sys_chroot(const char *path); }
+       SYS_VFORK         = 66  // { int sys_vfork(void); }
+       SYS_MUNMAP        = 73  // { int sys_munmap(void *addr, size_t len); }
+       SYS_MPROTECT      = 74  // { int sys_mprotect(void *addr, size_t len, \
+       SYS_MADVISE       = 75  // { int sys_madvise(void *addr, size_t len, \
+       SYS_MINCORE       = 78  // { int sys_mincore(void *addr, size_t len, \
+       SYS_GETGROUPS     = 79  // { int sys_getgroups(int gidsetsize, \
+       SYS_SETGROUPS     = 80  // { int sys_setgroups(int gidsetsize, \
+       SYS_GETPGRP       = 81  // { int sys_getpgrp(void); }
+       SYS_SETPGID       = 82  // { int sys_setpgid(pid_t pid, int pgid); }
+       SYS_SETITIMER     = 83  // { int sys_setitimer(int which, \
+       SYS_GETITIMER     = 86  // { int sys_getitimer(int which, \
+       SYS_DUP2          = 90  // { int sys_dup2(int from, int to); }
+       SYS_FCNTL         = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }
+       SYS_SELECT        = 93  // { int sys_select(int nd, fd_set *in, fd_set *ou, \
+       SYS_FSYNC         = 95  // { int sys_fsync(int fd); }
+       SYS_SETPRIORITY   = 96  // { int sys_setpriority(int which, id_t who, int prio); }
+       SYS_SOCKET        = 97  // { int sys_socket(int domain, int type, int protocol); }
+       SYS_CONNECT       = 98  // { int sys_connect(int s, const struct sockaddr *name, \
+       SYS_GETPRIORITY   = 100 // { int sys_getpriority(int which, id_t who); }
+       SYS_SIGRETURN     = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }
+       SYS_BIND          = 104 // { int sys_bind(int s, const struct sockaddr *name, \
+       SYS_SETSOCKOPT    = 105 // { int sys_setsockopt(int s, int level, int name, \
+       SYS_LISTEN        = 106 // { int sys_listen(int s, int backlog); }
+       SYS_SIGSUSPEND    = 111 // { int sys_sigsuspend(int mask); }
+       SYS_GETTIMEOFDAY  = 116 // { int sys_gettimeofday(struct timeval *tp, \
+       SYS_GETRUSAGE     = 117 // { int sys_getrusage(int who, struct rusage *rusage); }
+       SYS_GETSOCKOPT    = 118 // { int sys_getsockopt(int s, int level, int name, \
+       SYS_READV         = 120 // { ssize_t sys_readv(int fd, \
+       SYS_WRITEV        = 121 // { ssize_t sys_writev(int fd, \
+       SYS_SETTIMEOFDAY  = 122 // { int sys_settimeofday(const struct timeval *tv, \
+       SYS_FCHOWN        = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }
+       SYS_FCHMOD        = 124 // { int sys_fchmod(int fd, mode_t mode); }
+       SYS_SETREUID      = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }
+       SYS_SETREGID      = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }
+       SYS_RENAME        = 128 // { int sys_rename(const char *from, const char *to); }
+       SYS_FLOCK         = 131 // { int sys_flock(int fd, int how); }
+       SYS_MKFIFO        = 132 // { int sys_mkfifo(const char *path, mode_t mode); }
+       SYS_SENDTO        = 133 // { ssize_t sys_sendto(int s, const void *buf, \
+       SYS_SHUTDOWN      = 134 // { int sys_shutdown(int s, int how); }
+       SYS_SOCKETPAIR    = 135 // { int sys_socketpair(int domain, int type, \
+       SYS_MKDIR         = 136 // { int sys_mkdir(const char *path, mode_t mode); }
+       SYS_RMDIR         = 137 // { int sys_rmdir(const char *path); }
+       SYS_UTIMES        = 138 // { int sys_utimes(const char *path, \
+       SYS_ADJTIME       = 140 // { int sys_adjtime(const struct timeval *delta, \
+       SYS_SETSID        = 147 // { int sys_setsid(void); }
+       SYS_QUOTACTL      = 148 // { int sys_quotactl(const char *path, int cmd, \
+       SYS_NFSSVC        = 155 // { int sys_nfssvc(int flag, void *argp); }
+       SYS_GETFH         = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }
+       SYS_SYSARCH       = 165 // { int sys_sysarch(int op, void *parms); }
+       SYS_PREAD         = 173 // { ssize_t sys_pread(int fd, void *buf, \
+       SYS_PWRITE        = 174 // { ssize_t sys_pwrite(int fd, const void *buf, \
+       SYS_SETGID        = 181 // { int sys_setgid(gid_t gid); }
+       SYS_SETEGID       = 182 // { int sys_setegid(gid_t egid); }
+       SYS_SETEUID       = 183 // { int sys_seteuid(uid_t euid); }
+       LFS_BMAPV         = 184 // { int lfs_bmapv(fsid_t *fsidp, \
+       LFS_MARKV         = 185 // { int lfs_markv(fsid_t *fsidp, \
+       LFS_SEGCLEAN      = 186 // { int lfs_segclean(fsid_t *fsidp, u_long segment); }
+       LFS_SEGWAIT       = 187 // { int lfs_segwait(fsid_t *fsidp, struct timeval *tv); }
+       SYS_PATHCONF      = 191 // { long sys_pathconf(const char *path, int name); }
+       SYS_FPATHCONF     = 192 // { long sys_fpathconf(int fd, int name); }
+       SYS_SWAPCTL       = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }
+       SYS_GETRLIMIT     = 194 // { int sys_getrlimit(int which, \
+       SYS_SETRLIMIT     = 195 // { int sys_setrlimit(int which, \
+       SYS_MMAP          = 197 // { void *sys_mmap(void *addr, size_t len, int prot, \
+       SYS_LSEEK         = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, \
+       SYS_TRUNCATE      = 200 // { int sys_truncate(const char *path, int pad, \
+       SYS_FTRUNCATE     = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }
+       SYS___SYSCTL      = 202 // { int sys___sysctl(int *name, u_int namelen, \
+       SYS_MLOCK         = 203 // { int sys_mlock(const void *addr, size_t len); }
+       SYS_MUNLOCK       = 204 // { int sys_munlock(const void *addr, size_t len); }
+       SYS_FUTIMES       = 206 // { int sys_futimes(int fd, \
+       SYS_GETPGID       = 207 // { pid_t sys_getpgid(pid_t pid); }
+       SYS_NNPFSPIOCTL   = 208 // { int sys_nnpfspioctl(int operation, char *a_pathP, \
+       SYS_SEMGET        = 221 // { int sys_semget(key_t key, int nsems, int semflg); }
+       SYS_MSGGET        = 225 // { int sys_msgget(key_t key, int msgflg); }
+       SYS_MSGSND        = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, \
+       SYS_MSGRCV        = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, \
+       SYS_SHMAT         = 228 // { void *sys_shmat(int shmid, const void *shmaddr, \
+       SYS_SHMDT         = 230 // { int sys_shmdt(const void *shmaddr); }
+       SYS_CLOCK_GETTIME = 232 // { int sys_clock_gettime(clockid_t clock_id, \
+       SYS_CLOCK_SETTIME = 233 // { int sys_clock_settime(clockid_t clock_id, \
+       SYS_CLOCK_GETRES  = 234 // { int sys_clock_getres(clockid_t clock_id, \
+       SYS_NANOSLEEP     = 240 // { int sys_nanosleep(const struct timespec *rqtp, \
+       SYS_MINHERIT      = 250 // { int sys_minherit(void *addr, size_t len, \
+       SYS_RFORK         = 251 // { int sys_rfork(int flags); }
+       SYS_POLL          = 252 // { int sys_poll(struct pollfd *fds, \
+       SYS_ISSETUGID     = 253 // { int sys_issetugid(void); }
+       SYS_LCHOWN        = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }
+       SYS_GETSID        = 255 // { pid_t sys_getsid(pid_t pid); }
+       SYS_MSYNC         = 256 // { int sys_msync(void *addr, size_t len, int flags); }
+       SYS_PIPE          = 263 // { int sys_pipe(int *fdp); }
+       SYS_FHOPEN        = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }
+       SYS_PREADV        = 267 // { ssize_t sys_preadv(int fd, \
+       SYS_PWRITEV       = 268 // { ssize_t sys_pwritev(int fd, \
+       SYS_KQUEUE        = 269 // { int sys_kqueue(void); }
+       SYS_KEVENT        = 270 // { int sys_kevent(int fd, \
+       SYS_MLOCKALL      = 271 // { int sys_mlockall(int flags); }
+       SYS_MUNLOCKALL    = 272 // { int sys_munlockall(void); }
+       SYS_GETRESUID     = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, \
+       SYS_SETRESUID     = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, \
+       SYS_GETRESGID     = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, \
+       SYS_SETRESGID     = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, \
+       SYS_MQUERY        = 286 // { void *sys_mquery(void *addr, size_t len, int prot, \
+       SYS_CLOSEFROM     = 287 // { int sys_closefrom(int fd); }
+       SYS_SIGALTSTACK   = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, \
+       SYS_SHMGET        = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }
+       SYS_SEMOP         = 290 // { int sys_semop(int semid, struct sembuf *sops, \
+       SYS_STAT          = 291 // { int sys_stat(const char *path, struct stat *ub); }
+       SYS_FSTAT         = 292 // { int sys_fstat(int fd, struct stat *sb); }
+       SYS_LSTAT         = 293 // { int sys_lstat(const char *path, struct stat *ub); }
+       SYS_FHSTAT        = 294 // { int sys_fhstat(const fhandle_t *fhp, \
+       SYS___SEMCTL      = 295 // { int sys___semctl(int semid, int semnum, int cmd, \
+       SYS_SHMCTL        = 296 // { int sys_shmctl(int shmid, int cmd, \
+       SYS_MSGCTL        = 297 // { int sys_msgctl(int msqid, int cmd, \
+       SYS_SCHED_YIELD   = 298 // { int sys_sched_yield(void); }
+       SYS_GETTHRID      = 299 // { pid_t sys_getthrid(void); }
+       SYS_THRSLEEP      = 300 // { int sys_thrsleep(void *ident, clockid_t clock_id, \
+       SYS_THRWAKEUP     = 301 // { int sys_thrwakeup(void *ident, int n); }
+       SYS_THREXIT       = 302 // { void sys_threxit(pid_t *notdead); }
+       SYS_THRSIGDIVERT  = 303 // { int sys_thrsigdivert(sigset_t sigmask, \
+       SYS___GETCWD      = 304 // { int sys___getcwd(char *buf, size_t len); }
+       SYS_ADJFREQ       = 305 // { int sys_adjfreq(const int64_t *freq, \
+       SYS_GETFSSTAT     = 306 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, \
+       SYS_STATFS        = 307 // { int sys_statfs(const char *path, \
+       SYS_FSTATFS       = 308 // { int sys_fstatfs(int fd, struct statfs *buf); }
+       SYS_FHSTATFS      = 309 // { int sys_fhstatfs(const fhandle_t *fhp, \
+       SYS_SETRTABLE     = 310 // { int sys_setrtable(int rtableid); }
+       SYS_GETRTABLE     = 311 // { int sys_getrtable(void); }
+       SYS_GETDIRENTRIES = 312 // { int sys_getdirentries(int fd, char *buf, \
+       SYS_FACCESSAT     = 313 // { int sys_faccessat(int fd, const char *path, \
+       SYS_FCHMODAT      = 314 // { int sys_fchmodat(int fd, const char *path, \
+       SYS_FCHOWNAT      = 315 // { int sys_fchownat(int fd, const char *path, \
+       SYS_FSTATAT       = 316 // { int sys_fstatat(int fd, const char *path, \
+       SYS_LINKAT        = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, \
+       SYS_MKDIRAT       = 318 // { int sys_mkdirat(int fd, const char *path, \
+       SYS_MKFIFOAT      = 319 // { int sys_mkfifoat(int fd, const char *path, \
+       SYS_MKNODAT       = 320 // { int sys_mknodat(int fd, const char *path, \
+       SYS_OPENAT        = 321 // { int sys_openat(int fd, const char *path, int flags, \
+       SYS_READLINKAT    = 322 // { ssize_t sys_readlinkat(int fd, const char *path, \
+       SYS_RENAMEAT      = 323 // { int sys_renameat(int fromfd, const char *from, \
+       SYS_SYMLINKAT     = 324 // { int sys_symlinkat(const char *path, int fd, \
+       SYS_UNLINKAT      = 325 // { int sys_unlinkat(int fd, const char *path, \
+       SYS_UTIMENSAT     = 326 // { int sys_utimensat(int fd, const char *path, \
+       SYS_FUTIMENS      = 327 // { int sys_futimens(int fd, \
+)
diff --git a/src/pkg/syscall/ztypes_openbsd_amd64.go b/src/pkg/syscall/ztypes_openbsd_amd64.go
new file mode 100644 (file)
index 0000000..01df7e7
--- /dev/null
@@ -0,0 +1,390 @@
+// godefs -gsyscall -f-m64 types_openbsd.c
+
+// MACHINE GENERATED - DO NOT EDIT.
+
+package syscall
+
+// Constants
+const (
+       sizeofPtr              = 0x8
+       sizeofShort            = 0x2
+       sizeofInt              = 0x4
+       sizeofLong             = 0x8
+       sizeofLongLong         = 0x8
+       S_IFMT                 = 0xf000
+       S_IFIFO                = 0x1000
+       S_IFCHR                = 0x2000
+       S_IFDIR                = 0x4000
+       S_IFBLK                = 0x6000
+       S_IFREG                = 0x8000
+       S_IFLNK                = 0xa000
+       S_IFSOCK               = 0xc000
+       S_ISUID                = 0x800
+       S_ISGID                = 0x400
+       S_ISVTX                = 0x200
+       S_IRUSR                = 0x100
+       S_IWUSR                = 0x80
+       S_IXUSR                = 0x40
+       SizeofSockaddrInet4    = 0x10
+       SizeofSockaddrInet6    = 0x1c
+       SizeofSockaddrAny      = 0x6c
+       SizeofSockaddrUnix     = 0x6a
+       SizeofSockaddrDatalink = 0x20
+       SizeofLinger           = 0x8
+       SizeofIPMreq           = 0x8
+       SizeofIPv6Mreq         = 0x14
+       SizeofMsghdr           = 0x30
+       SizeofCmsghdr          = 0xc
+       SizeofInet6Pktinfo     = 0x14
+       PTRACE_TRACEME         = 0
+       PTRACE_CONT            = 0x7
+       PTRACE_KILL            = 0x8
+       SizeofIfMsghdr         = 0xf0
+       SizeofIfData           = 0xd8
+       SizeofIfaMsghdr        = 0x18
+       SizeofRtMsghdr         = 0x58
+       SizeofRtMetrics        = 0x30
+       SizeofBpfVersion       = 0x4
+       SizeofBpfStat          = 0x8
+       SizeofBpfProgram       = 0x10
+       SizeofBpfInsn          = 0x8
+       SizeofBpfHdr           = 0x14
+)
+
+// Types
+
+type _C_short int16
+
+type _C_int int32
+
+type _C_long int64
+
+type _C_long_long int64
+
+type Timespec struct {
+       Sec          int32
+       Pad_godefs_0 [4]byte
+       Nsec         int64
+}
+
+type Timeval struct {
+       Sec  int64
+       Usec int64
+}
+
+type Rusage struct {
+       Utime    Timeval
+       Stime    Timeval
+       Maxrss   int64
+       Ixrss    int64
+       Idrss    int64
+       Isrss    int64
+       Minflt   int64
+       Majflt   int64
+       Nswap    int64
+       Inblock  int64
+       Oublock  int64
+       Msgsnd   int64
+       Msgrcv   int64
+       Nsignals int64
+       Nvcsw    int64
+       Nivcsw   int64
+}
+
+type Rlimit struct {
+       Cur uint64
+       Max uint64
+}
+
+type _Gid_t uint32
+
+type Stat_t struct {
+       Dev            int32
+       Ino            uint32
+       Mode           uint32
+       Nlink          uint32
+       Uid            uint32
+       Gid            uint32
+       Rdev           int32
+       Lspare0        int32
+       Atim           Timespec
+       Mtim           Timespec
+       Ctim           Timespec
+       Size           int64
+       Blocks         int64
+       Blksize        uint32
+       Flags          uint32
+       Gen            uint32
+       Lspare1        int32
+       X__st_birthtim Timespec
+       Qspare         [2]int64
+}
+
+type Statfs_t struct {
+       F_flags       uint32
+       F_bsize       uint32
+       F_iosize      uint32
+       Pad_godefs_0  [4]byte
+       F_blocks      uint64
+       F_bfree       uint64
+       F_bavail      int64
+       F_files       uint64
+       F_ffree       uint64
+       F_favail      int64
+       F_syncwrites  uint64
+       F_syncreads   uint64
+       F_asyncwrites uint64
+       F_asyncreads  uint64
+       F_fsid        [8]byte /* fsid_t */
+       F_namemax     uint32
+       F_owner       uint32
+       F_ctime       uint32
+       F_spare       [3]uint32
+       F_fstypename  [16]int8
+       F_mntonname   [90]int8
+       F_mntfromname [90]int8
+       Pad_godefs_1  [4]byte
+       Mount_info    [160]byte /* mount_info */
+}
+
+type Flock_t struct {
+       Start  int64
+       Len    int64
+       Pid    int32
+       Type   int16
+       Whence int16
+}
+
+type Dirent struct {
+       Fileno uint32
+       Reclen uint16
+       Type   uint8
+       Namlen uint8
+       Name   [256]int8
+}
+
+type RawSockaddrInet4 struct {
+       Len    uint8
+       Family uint8
+       Port   uint16
+       Addr   [4]byte /* in_addr */
+       Zero   [8]int8
+}
+
+type RawSockaddrInet6 struct {
+       Len      uint8
+       Family   uint8
+       Port     uint16
+       Flowinfo uint32
+       Addr     [16]byte /* in6_addr */
+       Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+       Len    uint8
+       Family uint8
+       Path   [104]int8
+}
+
+type RawSockaddrDatalink struct {
+       Len    uint8
+       Family uint8
+       Index  uint16
+       Type   uint8
+       Nlen   uint8
+       Alen   uint8
+       Slen   uint8
+       Data   [24]int8
+}
+
+type RawSockaddr struct {
+       Len    uint8
+       Family uint8
+       Data   [14]int8
+}
+
+type RawSockaddrAny struct {
+       Addr RawSockaddr
+       Pad  [92]int8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+       Onoff  int32
+       Linger int32
+}
+
+type Iovec struct {
+       Base *byte
+       Len  uint64
+}
+
+type IPMreq struct {
+       Multiaddr [4]byte /* in_addr */
+       Interface [4]byte /* in_addr */
+}
+
+type IPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Interface uint32
+}
+
+type Msghdr struct {
+       Name         *byte
+       Namelen      uint32
+       Pad_godefs_0 [4]byte
+       Iov          *Iovec
+       Iovlen       uint32
+       Pad_godefs_1 [4]byte
+       Control      *byte
+       Controllen   uint32
+       Flags        int32
+}
+
+type Cmsghdr struct {
+       Len   uint32
+       Level int32
+       Type  int32
+}
+
+type Inet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex uint32
+}
+
+type Kevent_t struct {
+       Ident  uint32
+       Filter int16
+       Flags  uint16
+       Fflags uint32
+       Data   int32
+       Udata  *byte
+}
+
+type FdSet struct {
+       Bits [32]int32
+}
+
+type IfMsghdr struct {
+       Msglen  uint16
+       Version uint8
+       Type    uint8
+       Hdrlen  uint16
+       Index   uint16
+       Tableid uint16
+       Pad1    uint8
+       Pad2    uint8
+       Addrs   int32
+       Flags   int32
+       Xflags  int32
+       Data    IfData
+}
+
+type IfData struct {
+       Type         uint8
+       Addrlen      uint8
+       Hdrlen       uint8
+       Link_state   uint8
+       Mtu          uint32
+       Metric       uint32
+       Pad          uint32
+       Baudrate     uint64
+       Ipackets     uint64
+       Ierrors      uint64
+       Opackets     uint64
+       Oerrors      uint64
+       Collisions   uint64
+       Ibytes       uint64
+       Obytes       uint64
+       Imcasts      uint64
+       Omcasts      uint64
+       Iqdrops      uint64
+       Noproto      uint64
+       Lastchange   Timeval
+       Mclpool      [7][12]byte /* mclpool */
+       Pad_godefs_0 [4]byte
+}
+
+type IfaMsghdr struct {
+       Msglen  uint16
+       Version uint8
+       Type    uint8
+       Hdrlen  uint16
+       Index   uint16
+       Tableid uint16
+       Pad1    uint8
+       Pad2    uint8
+       Addrs   int32
+       Flags   int32
+       Metric  int32
+}
+
+type RtMsghdr struct {
+       Msglen   uint16
+       Version  uint8
+       Type     uint8
+       Hdrlen   uint16
+       Index    uint16
+       Tableid  uint16
+       Priority uint8
+       Mpls     uint8
+       Addrs    int32
+       Flags    int32
+       Fmask    int32
+       Pid      int32
+       Seq      int32
+       Errno    int32
+       Inits    uint32
+       Rmx      RtMetrics
+}
+
+type RtMetrics struct {
+       Pksent   uint64
+       Locks    uint32
+       Mtu      uint32
+       Expire   uint32
+       Refcnt   uint32
+       Hopcount uint32
+       Recvpipe uint32
+       Sendpipe uint32
+       Ssthresh uint32
+       Rtt      uint32
+       Rttvar   uint32
+}
+
+type BpfVersion struct {
+       Major uint16
+       Minor uint16
+}
+
+type BpfStat struct {
+       Recv uint32
+       Drop uint32
+}
+
+type BpfProgram struct {
+       Len          uint32
+       Pad_godefs_0 [4]byte
+       Insns        *BpfInsn
+}
+
+type BpfInsn struct {
+       Code uint16
+       Jt   uint8
+       Jf   uint8
+       K    uint32
+}
+
+type BpfHdr struct {
+       Tstamp       BpfTimeval
+       Caplen       uint32
+       Datalen      uint32
+       Hdrlen       uint16
+       Pad_godefs_0 [2]byte
+}
+
+type BpfTimeval struct {
+       Sec  uint32
+       Usec uint32
+}