Vendor dependencies.
authorBrian Brazil <brian.brazil@robustperception.io>
Mon, 4 Apr 2016 11:01:15 +0000 (12:01 +0100)
committerBrian Brazil <brian.brazil@robustperception.io>
Mon, 4 Apr 2016 11:01:15 +0000 (12:01 +0100)
468 files changed:
vendor/github.com/Sirupsen/logrus/CHANGELOG.md [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/LICENSE [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/README.md [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/doc.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/entry.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/exported.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/formatter.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/hooks.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/json_formatter.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/logger.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/logrus.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/terminal_bsd.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/terminal_linux.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/terminal_notwindows.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/terminal_solaris.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/terminal_windows.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/text_formatter.go [new file with mode: 0644]
vendor/github.com/Sirupsen/logrus/writer.go [new file with mode: 0644]
vendor/github.com/beorn7/perks/LICENSE [new file with mode: 0644]
vendor/github.com/beorn7/perks/quantile/exampledata.txt [new file with mode: 0644]
vendor/github.com/beorn7/perks/quantile/stream.go [new file with mode: 0644]
vendor/github.com/golang/protobuf/LICENSE [new file with mode: 0644]
vendor/github.com/golang/protobuf/proto/Makefile [new file with mode: 0644]
vendor/github.com/golang/protobuf/proto/clone.go [new file with mode: 0644]
vendor/github.com/golang/protobuf/proto/decode.go [new file with mode: 0644]
vendor/github.com/golang/protobuf/proto/encode.go [new file with mode: 0644]
vendor/github.com/golang/protobuf/proto/equal.go [new file with mode: 0644]
vendor/github.com/golang/protobuf/proto/extensions.go [new file with mode: 0644]
vendor/github.com/golang/protobuf/proto/lib.go [new file with mode: 0644]
vendor/github.com/golang/protobuf/proto/message_set.go [new file with mode: 0644]
vendor/github.com/golang/protobuf/proto/pointer_reflect.go [new file with mode: 0644]
vendor/github.com/golang/protobuf/proto/pointer_unsafe.go [new file with mode: 0644]
vendor/github.com/golang/protobuf/proto/properties.go [new file with mode: 0644]
vendor/github.com/golang/protobuf/proto/text.go [new file with mode: 0644]
vendor/github.com/golang/protobuf/proto/text_parser.go [new file with mode: 0644]
vendor/github.com/matttproud/golang_protobuf_extensions/LICENSE [new file with mode: 0644]
vendor/github.com/matttproud/golang_protobuf_extensions/NOTICE [new file with mode: 0644]
vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/decode.go [new file with mode: 0644]
vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/doc.go [new file with mode: 0644]
vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/encode.go [new file with mode: 0644]
vendor/github.com/prometheus/client_golang/LICENSE [new file with mode: 0644]
vendor/github.com/prometheus/client_golang/NOTICE [new file with mode: 0644]
vendor/github.com/prometheus/client_golang/prometheus/README.md [new file with mode: 0644]
vendor/github.com/prometheus/client_golang/prometheus/collector.go [new file with mode: 0644]
vendor/github.com/prometheus/client_golang/prometheus/counter.go [new file with mode: 0644]
vendor/github.com/prometheus/client_golang/prometheus/desc.go [new file with mode: 0644]
vendor/github.com/prometheus/client_golang/prometheus/doc.go [new file with mode: 0644]
vendor/github.com/prometheus/client_golang/prometheus/expvar.go [new file with mode: 0644]
vendor/github.com/prometheus/client_golang/prometheus/fnv.go [new file with mode: 0644]
vendor/github.com/prometheus/client_golang/prometheus/gauge.go [new file with mode: 0644]
vendor/github.com/prometheus/client_golang/prometheus/go_collector.go [new file with mode: 0644]
vendor/github.com/prometheus/client_golang/prometheus/histogram.go [new file with mode: 0644]
vendor/github.com/prometheus/client_golang/prometheus/http.go [new file with mode: 0644]
vendor/github.com/prometheus/client_golang/prometheus/metric.go [new file with mode: 0644]
vendor/github.com/prometheus/client_golang/prometheus/process_collector.go [new file with mode: 0644]
vendor/github.com/prometheus/client_golang/prometheus/push.go [new file with mode: 0644]
vendor/github.com/prometheus/client_golang/prometheus/registry.go [new file with mode: 0644]
vendor/github.com/prometheus/client_golang/prometheus/summary.go [new file with mode: 0644]
vendor/github.com/prometheus/client_golang/prometheus/untyped.go [new file with mode: 0644]
vendor/github.com/prometheus/client_golang/prometheus/value.go [new file with mode: 0644]
vendor/github.com/prometheus/client_golang/prometheus/vec.go [new file with mode: 0644]
vendor/github.com/prometheus/client_model/LICENSE [new file with mode: 0644]
vendor/github.com/prometheus/client_model/NOTICE [new file with mode: 0644]
vendor/github.com/prometheus/client_model/go/metrics.pb.go [new file with mode: 0644]
vendor/github.com/prometheus/common/LICENSE [new file with mode: 0644]
vendor/github.com/prometheus/common/NOTICE [new file with mode: 0644]
vendor/github.com/prometheus/common/config/config.go [new file with mode: 0644]
vendor/github.com/prometheus/common/config/tls_config.go [new file with mode: 0644]
vendor/github.com/prometheus/common/expfmt/decode.go [new file with mode: 0644]
vendor/github.com/prometheus/common/expfmt/encode.go [new file with mode: 0644]
vendor/github.com/prometheus/common/expfmt/expfmt.go [new file with mode: 0644]
vendor/github.com/prometheus/common/expfmt/fuzz.go [new file with mode: 0644]
vendor/github.com/prometheus/common/expfmt/json_decode.go [new file with mode: 0644]
vendor/github.com/prometheus/common/expfmt/text_create.go [new file with mode: 0644]
vendor/github.com/prometheus/common/expfmt/text_parse.go [new file with mode: 0644]
vendor/github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg/README.txt [new file with mode: 0644]
vendor/github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg/autoneg.go [new file with mode: 0644]
vendor/github.com/prometheus/common/model/alert.go [new file with mode: 0644]
vendor/github.com/prometheus/common/model/fingerprinting.go [new file with mode: 0644]
vendor/github.com/prometheus/common/model/fnv.go [new file with mode: 0644]
vendor/github.com/prometheus/common/model/labels.go [new file with mode: 0644]
vendor/github.com/prometheus/common/model/labelset.go [new file with mode: 0644]
vendor/github.com/prometheus/common/model/metric.go [new file with mode: 0644]
vendor/github.com/prometheus/common/model/model.go [new file with mode: 0644]
vendor/github.com/prometheus/common/model/signature.go [new file with mode: 0644]
vendor/github.com/prometheus/common/model/silence.go [new file with mode: 0644]
vendor/github.com/prometheus/common/model/time.go [new file with mode: 0644]
vendor/github.com/prometheus/common/model/value.go [new file with mode: 0644]
vendor/github.com/prometheus/log/AUTHORS.md [new file with mode: 0644]
vendor/github.com/prometheus/log/CONTRIBUTING.md [new file with mode: 0644]
vendor/github.com/prometheus/log/LICENSE [new file with mode: 0644]
vendor/github.com/prometheus/log/NOTICE [new file with mode: 0644]
vendor/github.com/prometheus/log/README.md [new file with mode: 0644]
vendor/github.com/prometheus/log/log.go [new file with mode: 0644]
vendor/github.com/prometheus/procfs/AUTHORS.md [new file with mode: 0644]
vendor/github.com/prometheus/procfs/CONTRIBUTING.md [new file with mode: 0644]
vendor/github.com/prometheus/procfs/LICENSE [new file with mode: 0644]
vendor/github.com/prometheus/procfs/Makefile [new file with mode: 0644]
vendor/github.com/prometheus/procfs/NOTICE [new file with mode: 0644]
vendor/github.com/prometheus/procfs/README.md [new file with mode: 0644]
vendor/github.com/prometheus/procfs/doc.go [new file with mode: 0644]
vendor/github.com/prometheus/procfs/fs.go [new file with mode: 0644]
vendor/github.com/prometheus/procfs/ipvs.go [new file with mode: 0644]
vendor/github.com/prometheus/procfs/mdstat.go [new file with mode: 0644]
vendor/github.com/prometheus/procfs/proc.go [new file with mode: 0644]
vendor/github.com/prometheus/procfs/proc_io.go [new file with mode: 0644]
vendor/github.com/prometheus/procfs/proc_limits.go [new file with mode: 0644]
vendor/github.com/prometheus/procfs/proc_stat.go [new file with mode: 0644]
vendor/github.com/prometheus/procfs/stat.go [new file with mode: 0644]
vendor/golang.org/x/net/LICENSE [new file with mode: 0644]
vendor/golang.org/x/net/PATENTS [new file with mode: 0644]
vendor/golang.org/x/net/icmp/dstunreach.go [new file with mode: 0644]
vendor/golang.org/x/net/icmp/echo.go [new file with mode: 0644]
vendor/golang.org/x/net/icmp/endpoint.go [new file with mode: 0644]
vendor/golang.org/x/net/icmp/extension.go [new file with mode: 0644]
vendor/golang.org/x/net/icmp/helper.go [new file with mode: 0644]
vendor/golang.org/x/net/icmp/helper_posix.go [new file with mode: 0644]
vendor/golang.org/x/net/icmp/interface.go [new file with mode: 0644]
vendor/golang.org/x/net/icmp/ipv4.go [new file with mode: 0644]
vendor/golang.org/x/net/icmp/ipv6.go [new file with mode: 0644]
vendor/golang.org/x/net/icmp/listen_posix.go [new file with mode: 0644]
vendor/golang.org/x/net/icmp/listen_stub.go [new file with mode: 0644]
vendor/golang.org/x/net/icmp/message.go [new file with mode: 0644]
vendor/golang.org/x/net/icmp/messagebody.go [new file with mode: 0644]
vendor/golang.org/x/net/icmp/mpls.go [new file with mode: 0644]
vendor/golang.org/x/net/icmp/multipart.go [new file with mode: 0644]
vendor/golang.org/x/net/icmp/packettoobig.go [new file with mode: 0644]
vendor/golang.org/x/net/icmp/paramprob.go [new file with mode: 0644]
vendor/golang.org/x/net/icmp/sys_freebsd.go [new file with mode: 0644]
vendor/golang.org/x/net/icmp/timeexceeded.go [new file with mode: 0644]
vendor/golang.org/x/net/internal/iana/const.go [new file with mode: 0644]
vendor/golang.org/x/net/internal/iana/gen.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/control.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/control_bsd.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/control_pktinfo.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/control_stub.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/control_unix.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/control_windows.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/defs_darwin.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/defs_dragonfly.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/defs_freebsd.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/defs_linux.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/defs_netbsd.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/defs_openbsd.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/defs_solaris.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/dgramopt_posix.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/dgramopt_stub.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/doc.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/endpoint.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/gen.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/genericopt_posix.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/genericopt_stub.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/header.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/helper.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/helper_stub.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/helper_unix.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/helper_windows.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/iana.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/icmp.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/icmp_linux.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/icmp_stub.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/packet.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/payload.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/payload_cmsg.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/payload_nocmsg.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/sockopt.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/sockopt_asmreq.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/sockopt_asmreq_stub.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/sockopt_asmreq_unix.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/sockopt_asmreq_windows.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/sockopt_asmreqn_stub.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/sockopt_asmreqn_unix.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/sockopt_ssmreq_stub.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/sockopt_ssmreq_unix.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/sockopt_stub.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/sockopt_unix.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/sockopt_windows.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/sys_bsd.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/sys_darwin.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/sys_freebsd.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/sys_linux.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/sys_openbsd.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/sys_stub.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/sys_windows.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/syscall_linux_386.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/syscall_unix.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/thunk_linux_386.s [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/zsys_darwin.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/zsys_dragonfly.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/zsys_linux_386.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/zsys_linux_arm.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/zsys_netbsd.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/zsys_openbsd.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv4/zsys_solaris.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/control.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/control_stub.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/control_unix.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/control_windows.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/defs_darwin.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/defs_dragonfly.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/defs_freebsd.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/defs_linux.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/defs_netbsd.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/defs_openbsd.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/defs_solaris.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/dgramopt_posix.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/dgramopt_stub.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/doc.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/endpoint.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/gen.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/genericopt_posix.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/genericopt_stub.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/header.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/helper.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/helper_stub.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/helper_unix.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/helper_windows.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/iana.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/icmp.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/icmp_bsd.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/icmp_linux.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/icmp_solaris.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/icmp_stub.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/icmp_windows.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/payload.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/payload_cmsg.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/payload_nocmsg.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/sockopt.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/sockopt_asmreq_unix.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/sockopt_asmreq_windows.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/sockopt_ssmreq_stub.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/sockopt_ssmreq_unix.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/sockopt_stub.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/sockopt_unix.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/sockopt_windows.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/sys_bsd.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/sys_darwin.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/sys_freebsd.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/sys_linux.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/sys_stub.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/sys_windows.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/syscall_linux_386.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/syscall_unix.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/thunk_linux_386.s [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/zsys_darwin.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/zsys_dragonfly.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/zsys_freebsd_386.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/zsys_freebsd_amd64.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/zsys_freebsd_arm.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/zsys_linux_386.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/zsys_linux_arm.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/zsys_netbsd.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/zsys_openbsd.go [new file with mode: 0644]
vendor/golang.org/x/net/ipv6/zsys_solaris.go [new file with mode: 0644]
vendor/golang.org/x/sys/LICENSE [new file with mode: 0644]
vendor/golang.org/x/sys/PATENTS [new file with mode: 0644]
vendor/golang.org/x/sys/unix/asm.s [new file with mode: 0644]
vendor/golang.org/x/sys/unix/asm_darwin_386.s [new file with mode: 0644]
vendor/golang.org/x/sys/unix/asm_darwin_amd64.s [new file with mode: 0644]
vendor/golang.org/x/sys/unix/asm_darwin_arm.s [new file with mode: 0644]
vendor/golang.org/x/sys/unix/asm_darwin_arm64.s [new file with mode: 0644]
vendor/golang.org/x/sys/unix/asm_dragonfly_386.s [new file with mode: 0644]
vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s [new file with mode: 0644]
vendor/golang.org/x/sys/unix/asm_freebsd_386.s [new file with mode: 0644]
vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s [new file with mode: 0644]
vendor/golang.org/x/sys/unix/asm_freebsd_arm.s [new file with mode: 0644]
vendor/golang.org/x/sys/unix/asm_linux_386.s [new file with mode: 0644]
vendor/golang.org/x/sys/unix/asm_linux_amd64.s [new file with mode: 0644]
vendor/golang.org/x/sys/unix/asm_linux_arm.s [new file with mode: 0644]
vendor/golang.org/x/sys/unix/asm_linux_arm64.s [new file with mode: 0644]
vendor/golang.org/x/sys/unix/asm_linux_mips64x.s [new file with mode: 0644]
vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s [new file with mode: 0644]
vendor/golang.org/x/sys/unix/asm_netbsd_386.s [new file with mode: 0644]
vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s [new file with mode: 0644]
vendor/golang.org/x/sys/unix/asm_netbsd_arm.s [new file with mode: 0644]
vendor/golang.org/x/sys/unix/asm_openbsd_386.s [new file with mode: 0644]
vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s [new file with mode: 0644]
vendor/golang.org/x/sys/unix/asm_solaris_amd64.s [new file with mode: 0644]
vendor/golang.org/x/sys/unix/constants.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/env_unix.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/env_unset.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/flock.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/flock_linux_32bit.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/gccgo.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/gccgo_c.c [new file with mode: 0644]
vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/mkall.sh [new file with mode: 0755]
vendor/golang.org/x/sys/unix/mkerrors.sh [new file with mode: 0755]
vendor/golang.org/x/sys/unix/mksyscall.pl [new file with mode: 0755]
vendor/golang.org/x/sys/unix/mksyscall_solaris.pl [new file with mode: 0755]
vendor/golang.org/x/sys/unix/mksysctl_openbsd.pl [new file with mode: 0755]
vendor/golang.org/x/sys/unix/mksysnum_darwin.pl [new file with mode: 0755]
vendor/golang.org/x/sys/unix/mksysnum_dragonfly.pl [new file with mode: 0755]
vendor/golang.org/x/sys/unix/mksysnum_freebsd.pl [new file with mode: 0755]
vendor/golang.org/x/sys/unix/mksysnum_linux.pl [new file with mode: 0755]
vendor/golang.org/x/sys/unix/mksysnum_netbsd.pl [new file with mode: 0755]
vendor/golang.org/x/sys/unix/mksysnum_openbsd.pl [new file with mode: 0755]
vendor/golang.org/x/sys/unix/race.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/race0.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/sockcmsg_linux.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/sockcmsg_unix.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/str.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_bsd.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_darwin.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_darwin_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_darwin_arm.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_dragonfly.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_dragonfly_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_freebsd.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_freebsd_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_linux.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_linux_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_linux_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_linux_arm.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_linux_arm64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_netbsd.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_netbsd_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_no_getwd.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_openbsd.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_openbsd_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_solaris.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/syscall_unix.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/types_darwin.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/types_dragonfly.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/types_freebsd.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/types_linux.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/types_netbsd.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/types_openbsd.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/types_solaris.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zerrors_darwin_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zerrors_dragonfly_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zerrors_linux_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zerrors_linux_arm.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsyscall_dragonfly_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsyscall_linux_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsysctl_openbsd.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsysnum_dragonfly_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsysnum_linux_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/zsysnum_solaris_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/ztypes_darwin_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/ztypes_dragonfly_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/ztypes_linux_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/ztypes_linux_arm.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go [new file with mode: 0644]
vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go [new file with mode: 0644]
vendor/gopkg.in/yaml.v2/LICENSE [new file with mode: 0644]
vendor/gopkg.in/yaml.v2/LICENSE.libyaml [new file with mode: 0644]
vendor/gopkg.in/yaml.v2/README.md [new file with mode: 0644]
vendor/gopkg.in/yaml.v2/apic.go [new file with mode: 0644]
vendor/gopkg.in/yaml.v2/decode.go [new file with mode: 0644]
vendor/gopkg.in/yaml.v2/emitterc.go [new file with mode: 0644]
vendor/gopkg.in/yaml.v2/encode.go [new file with mode: 0644]
vendor/gopkg.in/yaml.v2/parserc.go [new file with mode: 0644]
vendor/gopkg.in/yaml.v2/readerc.go [new file with mode: 0644]
vendor/gopkg.in/yaml.v2/resolve.go [new file with mode: 0644]
vendor/gopkg.in/yaml.v2/scannerc.go [new file with mode: 0644]
vendor/gopkg.in/yaml.v2/sorter.go [new file with mode: 0644]
vendor/gopkg.in/yaml.v2/writerc.go [new file with mode: 0644]
vendor/gopkg.in/yaml.v2/yaml.go [new file with mode: 0644]
vendor/gopkg.in/yaml.v2/yamlh.go [new file with mode: 0644]
vendor/gopkg.in/yaml.v2/yamlprivateh.go [new file with mode: 0644]
vendor/vendor.json [new file with mode: 0644]

diff --git a/vendor/github.com/Sirupsen/logrus/CHANGELOG.md b/vendor/github.com/Sirupsen/logrus/CHANGELOG.md
new file mode 100644 (file)
index 0000000..f2c2bc2
--- /dev/null
@@ -0,0 +1,66 @@
+# 0.10.0
+
+* feature: Add a test hook (#180)
+* feature: `ParseLevel` is now case-insensitive (#326)
+* feature: `FieldLogger` interface that generalizes `Logger` and `Entry` (#308)
+* performance: avoid re-allocations on `WithFields` (#335)
+
+# 0.9.0
+
+* logrus/text_formatter: don't emit empty msg
+* logrus/hooks/airbrake: move out of main repository
+* logrus/hooks/sentry: move out of main repository
+* logrus/hooks/papertrail: move out of main repository
+* logrus/hooks/bugsnag: move out of main repository
+* logrus/core: run tests with `-race`
+* logrus/core: detect TTY based on `stderr`
+* logrus/core: support `WithError` on logger
+* logrus/core: Solaris support
+
+# 0.8.7
+
+* logrus/core: fix possible race (#216)
+* logrus/doc: small typo fixes and doc improvements
+
+
+# 0.8.6
+
+* hooks/raven: allow passing an initialized client
+
+# 0.8.5
+
+* logrus/core: revert #208
+
+# 0.8.4
+
+* formatter/text: fix data race (#218)
+
+# 0.8.3
+
+* logrus/core: fix entry log level (#208)
+* logrus/core: improve performance of text formatter by 40%
+* logrus/core: expose `LevelHooks` type
+* logrus/core: add support for DragonflyBSD and NetBSD
+* formatter/text: print structs more verbosely
+
+# 0.8.2
+
+* logrus: fix more Fatal family functions
+
+# 0.8.1
+
+* logrus: fix not exiting on `Fatalf` and `Fatalln`
+
+# 0.8.0
+
+* logrus: defaults to stderr instead of stdout
+* hooks/sentry: add special field for `*http.Request`
+* formatter/text: ignore Windows for colors
+
+# 0.7.3
+
+* formatter/\*: allow configuration of timestamp layout
+
+# 0.7.2
+
+* formatter/text: Add configuration option for time format (#158)
diff --git a/vendor/github.com/Sirupsen/logrus/LICENSE b/vendor/github.com/Sirupsen/logrus/LICENSE
new file mode 100644 (file)
index 0000000..f090cb4
--- /dev/null
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Simon Eskildsen
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/vendor/github.com/Sirupsen/logrus/README.md b/vendor/github.com/Sirupsen/logrus/README.md
new file mode 100644 (file)
index 0000000..6e1721a
--- /dev/null
@@ -0,0 +1,388 @@
+# Logrus <img src="http://i.imgur.com/hTeVwmJ.png" width="40" height="40" alt=":walrus:" class="emoji" title=":walrus:"/>&nbsp;[![Build Status](https://travis-ci.org/Sirupsen/logrus.svg?branch=master)](https://travis-ci.org/Sirupsen/logrus)&nbsp;[![GoDoc](https://godoc.org/github.com/Sirupsen/logrus?status.svg)](https://godoc.org/github.com/Sirupsen/logrus)
+
+Logrus is a structured logger for Go (golang), completely API compatible with
+the standard library logger. [Godoc][godoc]. **Please note the Logrus API is not
+yet stable (pre 1.0). Logrus itself is completely stable and has been used in
+many large deployments. The core API is unlikely to change much but please
+version control your Logrus to make sure you aren't fetching latest `master` on
+every build.**
+
+Nicely color-coded in development (when a TTY is attached, otherwise just
+plain text):
+
+![Colored](http://i.imgur.com/PY7qMwd.png)
+
+With `log.SetFormatter(&log.JSONFormatter{})`, for easy parsing by logstash
+or Splunk:
+
+```json
+{"animal":"walrus","level":"info","msg":"A group of walrus emerges from the
+ocean","size":10,"time":"2014-03-10 19:57:38.562264131 -0400 EDT"}
+
+{"level":"warning","msg":"The group's number increased tremendously!",
+"number":122,"omg":true,"time":"2014-03-10 19:57:38.562471297 -0400 EDT"}
+
+{"animal":"walrus","level":"info","msg":"A giant walrus appears!",
+"size":10,"time":"2014-03-10 19:57:38.562500591 -0400 EDT"}
+
+{"animal":"walrus","level":"info","msg":"Tremendously sized cow enters the ocean.",
+"size":9,"time":"2014-03-10 19:57:38.562527896 -0400 EDT"}
+
+{"level":"fatal","msg":"The ice breaks!","number":100,"omg":true,
+"time":"2014-03-10 19:57:38.562543128 -0400 EDT"}
+```
+
+With the default `log.SetFormatter(&log.TextFormatter{})` when a TTY is not
+attached, the output is compatible with the
+[logfmt](http://godoc.org/github.com/kr/logfmt) format:
+
+```text
+time="2015-03-26T01:27:38-04:00" level=debug msg="Started observing beach" animal=walrus number=8
+time="2015-03-26T01:27:38-04:00" level=info msg="A group of walrus emerges from the ocean" animal=walrus size=10
+time="2015-03-26T01:27:38-04:00" level=warning msg="The group's number increased tremendously!" number=122 omg=true
+time="2015-03-26T01:27:38-04:00" level=debug msg="Temperature changes" temperature=-4
+time="2015-03-26T01:27:38-04:00" level=panic msg="It's over 9000!" animal=orca size=9009
+time="2015-03-26T01:27:38-04:00" level=fatal msg="The ice breaks!" err=&{0x2082280c0 map[animal:orca size:9009] 2015-03-26 01:27:38.441574009 -0400 EDT panic It's over 9000!} number=100 omg=true
+exit status 1
+```
+
+#### Example
+
+The simplest way to use Logrus is simply the package-level exported logger:
+
+```go
+package main
+
+import (
+  log "github.com/Sirupsen/logrus"
+)
+
+func main() {
+  log.WithFields(log.Fields{
+    "animal": "walrus",
+  }).Info("A walrus appears")
+}
+```
+
+Note that it's completely api-compatible with the stdlib logger, so you can
+replace your `log` imports everywhere with `log "github.com/Sirupsen/logrus"`
+and you'll now have the flexibility of Logrus. You can customize it all you
+want:
+
+```go
+package main
+
+import (
+  "os"
+  log "github.com/Sirupsen/logrus"
+)
+
+func init() {
+  // Log as JSON instead of the default ASCII formatter.
+  log.SetFormatter(&log.JSONFormatter{})
+
+  // Output to stderr instead of stdout, could also be a file.
+  log.SetOutput(os.Stderr)
+
+  // Only log the warning severity or above.
+  log.SetLevel(log.WarnLevel)
+}
+
+func main() {
+  log.WithFields(log.Fields{
+    "animal": "walrus",
+    "size":   10,
+  }).Info("A group of walrus emerges from the ocean")
+
+  log.WithFields(log.Fields{
+    "omg":    true,
+    "number": 122,
+  }).Warn("The group's number increased tremendously!")
+
+  log.WithFields(log.Fields{
+    "omg":    true,
+    "number": 100,
+  }).Fatal("The ice breaks!")
+
+  // A common pattern is to re-use fields between logging statements by re-using
+  // the logrus.Entry returned from WithFields()
+  contextLogger := log.WithFields(log.Fields{
+    "common": "this is a common field",
+    "other": "I also should be logged always",
+  })
+
+  contextLogger.Info("I'll be logged with common and other field")
+  contextLogger.Info("Me too")
+}
+```
+
+For more advanced usage such as logging to multiple locations from the same
+application, you can also create an instance of the `logrus` Logger:
+
+```go
+package main
+
+import (
+  "github.com/Sirupsen/logrus"
+)
+
+// Create a new instance of the logger. You can have any number of instances.
+var log = logrus.New()
+
+func main() {
+  // The API for setting attributes is a little different than the package level
+  // exported logger. See Godoc.
+  log.Out = os.Stderr
+
+  log.WithFields(logrus.Fields{
+    "animal": "walrus",
+    "size":   10,
+  }).Info("A group of walrus emerges from the ocean")
+}
+```
+
+#### Fields
+
+Logrus encourages careful, structured logging though logging fields instead of
+long, unparseable error messages. For example, instead of: `log.Fatalf("Failed
+to send event %s to topic %s with key %d")`, you should log the much more
+discoverable:
+
+```go
+log.WithFields(log.Fields{
+  "event": event,
+  "topic": topic,
+  "key": key,
+}).Fatal("Failed to send event")
+```
+
+We've found this API forces you to think about logging in a way that produces
+much more useful logging messages. We've been in countless situations where just
+a single added field to a log statement that was already there would've saved us
+hours. The `WithFields` call is optional.
+
+In general, with Logrus using any of the `printf`-family functions should be
+seen as a hint you should add a field, however, you can still use the
+`printf`-family functions with Logrus.
+
+#### Hooks
+
+You can add hooks for logging levels. For example to send errors to an exception
+tracking service on `Error`, `Fatal` and `Panic`, info to StatsD or log to
+multiple places simultaneously, e.g. syslog.
+
+Logrus comes with [built-in hooks](hooks/). Add those, or your custom hook, in
+`init`:
+
+```go
+import (
+  log "github.com/Sirupsen/logrus"
+  "gopkg.in/gemnasium/logrus-airbrake-hook.v2" // the package is named "aibrake"
+  logrus_syslog "github.com/Sirupsen/logrus/hooks/syslog"
+  "log/syslog"
+)
+
+func init() {
+
+  // Use the Airbrake hook to report errors that have Error severity or above to
+  // an exception tracker. You can create custom hooks, see the Hooks section.
+  log.AddHook(airbrake.NewHook(123, "xyz", "production"))
+
+  hook, err := logrus_syslog.NewSyslogHook("udp", "localhost:514", syslog.LOG_INFO, "")
+  if err != nil {
+    log.Error("Unable to connect to local syslog daemon")
+  } else {
+    log.AddHook(hook)
+  }
+}
+```
+Note: Syslog hook also support connecting to local syslog (Ex. "/dev/log" or "/var/run/syslog" or "/var/run/log"). For the detail, please check the [syslog hook README](hooks/syslog/README.md).
+
+| Hook  | Description |
+| ----- | ----------- |
+| [Airbrake](https://github.com/gemnasium/logrus-airbrake-hook) | Send errors to the Airbrake API V3. Uses the official [`gobrake`](https://github.com/airbrake/gobrake) behind the scenes. |
+| [Airbrake "legacy"](https://github.com/gemnasium/logrus-airbrake-legacy-hook) | Send errors to an exception tracking service compatible with the Airbrake API V2. Uses [`airbrake-go`](https://github.com/tobi/airbrake-go) behind the scenes. |
+| [Papertrail](https://github.com/polds/logrus-papertrail-hook) | Send errors to the [Papertrail](https://papertrailapp.com) hosted logging service via UDP. |
+| [Syslog](https://github.com/Sirupsen/logrus/blob/master/hooks/syslog/syslog.go) | Send errors to remote syslog server. Uses standard library `log/syslog` behind the scenes. |
+| [Bugsnag](https://github.com/Shopify/logrus-bugsnag/blob/master/bugsnag.go) | Send errors to the Bugsnag exception tracking service. |
+| [Sentry](https://github.com/evalphobia/logrus_sentry) | Send errors to the Sentry error logging and aggregation service. |
+| [Hiprus](https://github.com/nubo/hiprus) | Send errors to a channel in hipchat. |
+| [Logrusly](https://github.com/sebest/logrusly) | Send logs to [Loggly](https://www.loggly.com/) |
+| [Slackrus](https://github.com/johntdyer/slackrus) | Hook for Slack chat. |
+| [Journalhook](https://github.com/wercker/journalhook) | Hook for logging to `systemd-journald` |
+| [Graylog](https://github.com/gemnasium/logrus-graylog-hook) | Hook for logging to [Graylog](http://graylog2.org/) |
+| [Raygun](https://github.com/squirkle/logrus-raygun-hook) | Hook for logging to [Raygun.io](http://raygun.io/) |
+| [LFShook](https://github.com/rifflock/lfshook) | Hook for logging to the local filesystem |
+| [Honeybadger](https://github.com/agonzalezro/logrus_honeybadger) | Hook for sending exceptions to Honeybadger |
+| [Mail](https://github.com/zbindenren/logrus_mail) | Hook for sending exceptions via mail |
+| [Rollrus](https://github.com/heroku/rollrus) | Hook for sending errors to rollbar |
+| [Fluentd](https://github.com/evalphobia/logrus_fluent) | Hook for logging to fluentd |
+| [Mongodb](https://github.com/weekface/mgorus) | Hook for logging to mongodb |
+| [InfluxDB](https://github.com/Abramovic/logrus_influxdb) | Hook for logging to influxdb |
+| [Octokit](https://github.com/dorajistyle/logrus-octokit-hook) | Hook for logging to github via octokit |
+| [DeferPanic](https://github.com/deferpanic/dp-logrus) | Hook for logging to DeferPanic |
+| [Redis-Hook](https://github.com/rogierlommers/logrus-redis-hook) | Hook for logging to a ELK stack (through Redis) |
+| [Amqp-Hook](https://github.com/vladoatanasov/logrus_amqp) | Hook for logging to Amqp broker (Like RabbitMQ) |
+| [KafkaLogrus](https://github.com/goibibo/KafkaLogrus) | Hook for logging to kafka |
+| [Typetalk](https://github.com/dragon3/logrus-typetalk-hook) | Hook for logging to [Typetalk](https://www.typetalk.in/) |
+| [ElasticSearch](https://github.com/sohlich/elogrus) | Hook for logging to ElasticSearch|
+
+
+#### Level logging
+
+Logrus has six logging levels: Debug, Info, Warning, Error, Fatal and Panic.
+
+```go
+log.Debug("Useful debugging information.")
+log.Info("Something noteworthy happened!")
+log.Warn("You should probably take a look at this.")
+log.Error("Something failed but I'm not quitting.")
+// Calls os.Exit(1) after logging
+log.Fatal("Bye.")
+// Calls panic() after logging
+log.Panic("I'm bailing.")
+```
+
+You can set the logging level on a `Logger`, then it will only log entries with
+that severity or anything above it:
+
+```go
+// Will log anything that is info or above (warn, error, fatal, panic). Default.
+log.SetLevel(log.InfoLevel)
+```
+
+It may be useful to set `log.Level = logrus.DebugLevel` in a debug or verbose
+environment if your application has that.
+
+#### Entries
+
+Besides the fields added with `WithField` or `WithFields` some fields are
+automatically added to all logging events:
+
+1. `time`. The timestamp when the entry was created.
+2. `msg`. The logging message passed to `{Info,Warn,Error,Fatal,Panic}` after
+   the `AddFields` call. E.g. `Failed to send event.`
+3. `level`. The logging level. E.g. `info`.
+
+#### Environments
+
+Logrus has no notion of environment.
+
+If you wish for hooks and formatters to only be used in specific environments,
+you should handle that yourself. For example, if your application has a global
+variable `Environment`, which is a string representation of the environment you
+could do:
+
+```go
+import (
+  log "github.com/Sirupsen/logrus"
+)
+
+init() {
+  // do something here to set environment depending on an environment variable
+  // or command-line flag
+  if Environment == "production" {
+    log.SetFormatter(&log.JSONFormatter{})
+  } else {
+    // The TextFormatter is default, you don't actually have to do this.
+    log.SetFormatter(&log.TextFormatter{})
+  }
+}
+```
+
+This configuration is how `logrus` was intended to be used, but JSON in
+production is mostly only useful if you do log aggregation with tools like
+Splunk or Logstash.
+
+#### Formatters
+
+The built-in logging formatters are:
+
+* `logrus.TextFormatter`. Logs the event in colors if stdout is a tty, otherwise
+  without colors.
+  * *Note:* to force colored output when there is no TTY, set the `ForceColors`
+    field to `true`.  To force no colored output even if there is a TTY  set the
+    `DisableColors` field to `true`
+* `logrus.JSONFormatter`. Logs fields as JSON.
+* `logrus/formatters/logstash.LogstashFormatter`. Logs fields as [Logstash](http://logstash.net) Events.
+
+    ```go
+      logrus.SetFormatter(&logstash.LogstashFormatter{Type: "application_name"})
+    ```
+
+Third party logging formatters:
+
+* [`prefixed`](https://github.com/x-cray/logrus-prefixed-formatter). Displays log entry source along with alternative layout.
+* [`zalgo`](https://github.com/aybabtme/logzalgo). Invoking the P͉̫o̳̼̊w̖͈̰͎e̬͔̭͂r͚̼̹̲ ̫͓͉̳͈ō̠͕͖̚f̝͍̠ ͕̲̞͖͑Z̖̫̤̫ͪa͉̬͈̗l͖͎g̳̥o̰̥̅!̣͔̲̻͊̄ ̙̘̦̹̦.
+
+You can define your formatter by implementing the `Formatter` interface,
+requiring a `Format` method. `Format` takes an `*Entry`. `entry.Data` is a
+`Fields` type (`map[string]interface{}`) with all your fields as well as the
+default ones (see Entries section above):
+
+```go
+type MyJSONFormatter struct {
+}
+
+log.SetFormatter(new(MyJSONFormatter))
+
+func (f *MyJSONFormatter) Format(entry *Entry) ([]byte, error) {
+  // Note this doesn't include Time, Level and Message which are available on
+  // the Entry. Consult `godoc` on information about those fields or read the
+  // source of the official loggers.
+  serialized, err := json.Marshal(entry.Data)
+    if err != nil {
+      return nil, fmt.Errorf("Failed to marshal fields to JSON, %v", err)
+    }
+  return append(serialized, '\n'), nil
+}
+```
+
+#### Logger as an `io.Writer`
+
+Logrus can be transformed into an `io.Writer`. That writer is the end of an `io.Pipe` and it is your responsibility to close it.
+
+```go
+w := logger.Writer()
+defer w.Close()
+
+srv := http.Server{
+    // create a stdlib log.Logger that writes to
+    // logrus.Logger.
+    ErrorLog: log.New(w, "", 0),
+}
+```
+
+Each line written to that writer will be printed the usual way, using formatters
+and hooks. The level for those entries is `info`.
+
+#### Rotation
+
+Log rotation is not provided with Logrus. Log rotation should be done by an
+external program (like `logrotate(8)`) that can compress and delete old log
+entries. It should not be a feature of the application-level logger.
+
+#### Tools
+
+| Tool | Description |
+| ---- | ----------- |
+|[Logrus Mate](https://github.com/gogap/logrus_mate)|Logrus mate is a tool for Logrus to manage loggers, you can initial logger's level, hook and formatter by config file, the logger will generated with different config at different environment.|
+
+#### Testing
+
+Logrus has a built in facility for asserting the presence of log messages. This is implemented through the `test` hook and provides:
+
+* decorators for existing logger (`test.NewLocal` and `test.NewGlobal`) which basically just add the `test` hook
+* a test logger (`test.NewNullLogger`) that just records log messages (and does not output any):
+
+```go
+logger, hook := NewNullLogger()
+logger.Error("Hello error")
+
+assert.Equal(1, len(hook.Entries))
+assert.Equal(logrus.ErrorLevel, hook.LastEntry().Level)
+assert.Equal("Hello error", hook.LastEntry().Message)
+
+hook.Reset()
+assert.Nil(hook.LastEntry())
+```
diff --git a/vendor/github.com/Sirupsen/logrus/doc.go b/vendor/github.com/Sirupsen/logrus/doc.go
new file mode 100644 (file)
index 0000000..dddd5f8
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+Package logrus is a structured logger for Go, completely API compatible with the standard library logger.
+
+
+The simplest way to use Logrus is simply the package-level exported logger:
+
+  package main
+
+  import (
+    log "github.com/Sirupsen/logrus"
+  )
+
+  func main() {
+    log.WithFields(log.Fields{
+      "animal": "walrus",
+      "number": 1,
+      "size":   10,
+    }).Info("A walrus appears")
+  }
+
+Output:
+  time="2015-09-07T08:48:33Z" level=info msg="A walrus appears" animal=walrus number=1 size=10
+
+For a full guide visit https://github.com/Sirupsen/logrus
+*/
+package logrus
diff --git a/vendor/github.com/Sirupsen/logrus/entry.go b/vendor/github.com/Sirupsen/logrus/entry.go
new file mode 100644 (file)
index 0000000..89e966e
--- /dev/null
@@ -0,0 +1,264 @@
+package logrus
+
+import (
+       "bytes"
+       "fmt"
+       "io"
+       "os"
+       "time"
+)
+
+// Defines the key when adding errors using WithError.
+var ErrorKey = "error"
+
+// An entry is the final or intermediate Logrus logging entry. It contains all
+// the fields passed with WithField{,s}. It's finally logged when Debug, Info,
+// Warn, Error, Fatal or Panic is called on it. These objects can be reused and
+// passed around as much as you wish to avoid field duplication.
+type Entry struct {
+       Logger *Logger
+
+       // Contains all the fields set by the user.
+       Data Fields
+
+       // Time at which the log entry was created
+       Time time.Time
+
+       // Level the log entry was logged at: Debug, Info, Warn, Error, Fatal or Panic
+       Level Level
+
+       // Message passed to Debug, Info, Warn, Error, Fatal or Panic
+       Message string
+}
+
+func NewEntry(logger *Logger) *Entry {
+       return &Entry{
+               Logger: logger,
+               // Default is three fields, give a little extra room
+               Data: make(Fields, 5),
+       }
+}
+
+// Returns a reader for the entry, which is a proxy to the formatter.
+func (entry *Entry) Reader() (*bytes.Buffer, error) {
+       serialized, err := entry.Logger.Formatter.Format(entry)
+       return bytes.NewBuffer(serialized), err
+}
+
+// Returns the string representation from the reader and ultimately the
+// formatter.
+func (entry *Entry) String() (string, error) {
+       reader, err := entry.Reader()
+       if err != nil {
+               return "", err
+       }
+
+       return reader.String(), err
+}
+
+// Add an error as single field (using the key defined in ErrorKey) to the Entry.
+func (entry *Entry) WithError(err error) *Entry {
+       return entry.WithField(ErrorKey, err)
+}
+
+// Add a single field to the Entry.
+func (entry *Entry) WithField(key string, value interface{}) *Entry {
+       return entry.WithFields(Fields{key: value})
+}
+
+// Add a map of fields to the Entry.
+func (entry *Entry) WithFields(fields Fields) *Entry {
+       data := make(Fields, len(entry.Data)+len(fields))
+       for k, v := range entry.Data {
+               data[k] = v
+       }
+       for k, v := range fields {
+               data[k] = v
+       }
+       return &Entry{Logger: entry.Logger, Data: data}
+}
+
+// This function is not declared with a pointer value because otherwise
+// race conditions will occur when using multiple goroutines
+func (entry Entry) log(level Level, msg string) {
+       entry.Time = time.Now()
+       entry.Level = level
+       entry.Message = msg
+
+       if err := entry.Logger.Hooks.Fire(level, &entry); err != nil {
+               entry.Logger.mu.Lock()
+               fmt.Fprintf(os.Stderr, "Failed to fire hook: %v\n", err)
+               entry.Logger.mu.Unlock()
+       }
+
+       reader, err := entry.Reader()
+       if err != nil {
+               entry.Logger.mu.Lock()
+               fmt.Fprintf(os.Stderr, "Failed to obtain reader, %v\n", err)
+               entry.Logger.mu.Unlock()
+       }
+
+       entry.Logger.mu.Lock()
+       defer entry.Logger.mu.Unlock()
+
+       _, err = io.Copy(entry.Logger.Out, reader)
+       if err != nil {
+               fmt.Fprintf(os.Stderr, "Failed to write to log, %v\n", err)
+       }
+
+       // To avoid Entry#log() returning a value that only would make sense for
+       // panic() to use in Entry#Panic(), we avoid the allocation by checking
+       // directly here.
+       if level <= PanicLevel {
+               panic(&entry)
+       }
+}
+
+func (entry *Entry) Debug(args ...interface{}) {
+       if entry.Logger.Level >= DebugLevel {
+               entry.log(DebugLevel, fmt.Sprint(args...))
+       }
+}
+
+func (entry *Entry) Print(args ...interface{}) {
+       entry.Info(args...)
+}
+
+func (entry *Entry) Info(args ...interface{}) {
+       if entry.Logger.Level >= InfoLevel {
+               entry.log(InfoLevel, fmt.Sprint(args...))
+       }
+}
+
+func (entry *Entry) Warn(args ...interface{}) {
+       if entry.Logger.Level >= WarnLevel {
+               entry.log(WarnLevel, fmt.Sprint(args...))
+       }
+}
+
+func (entry *Entry) Warning(args ...interface{}) {
+       entry.Warn(args...)
+}
+
+func (entry *Entry) Error(args ...interface{}) {
+       if entry.Logger.Level >= ErrorLevel {
+               entry.log(ErrorLevel, fmt.Sprint(args...))
+       }
+}
+
+func (entry *Entry) Fatal(args ...interface{}) {
+       if entry.Logger.Level >= FatalLevel {
+               entry.log(FatalLevel, fmt.Sprint(args...))
+       }
+       os.Exit(1)
+}
+
+func (entry *Entry) Panic(args ...interface{}) {
+       if entry.Logger.Level >= PanicLevel {
+               entry.log(PanicLevel, fmt.Sprint(args...))
+       }
+       panic(fmt.Sprint(args...))
+}
+
+// Entry Printf family functions
+
+func (entry *Entry) Debugf(format string, args ...interface{}) {
+       if entry.Logger.Level >= DebugLevel {
+               entry.Debug(fmt.Sprintf(format, args...))
+       }
+}
+
+func (entry *Entry) Infof(format string, args ...interface{}) {
+       if entry.Logger.Level >= InfoLevel {
+               entry.Info(fmt.Sprintf(format, args...))
+       }
+}
+
+func (entry *Entry) Printf(format string, args ...interface{}) {
+       entry.Infof(format, args...)
+}
+
+func (entry *Entry) Warnf(format string, args ...interface{}) {
+       if entry.Logger.Level >= WarnLevel {
+               entry.Warn(fmt.Sprintf(format, args...))
+       }
+}
+
+func (entry *Entry) Warningf(format string, args ...interface{}) {
+       entry.Warnf(format, args...)
+}
+
+func (entry *Entry) Errorf(format string, args ...interface{}) {
+       if entry.Logger.Level >= ErrorLevel {
+               entry.Error(fmt.Sprintf(format, args...))
+       }
+}
+
+func (entry *Entry) Fatalf(format string, args ...interface{}) {
+       if entry.Logger.Level >= FatalLevel {
+               entry.Fatal(fmt.Sprintf(format, args...))
+       }
+       os.Exit(1)
+}
+
+func (entry *Entry) Panicf(format string, args ...interface{}) {
+       if entry.Logger.Level >= PanicLevel {
+               entry.Panic(fmt.Sprintf(format, args...))
+       }
+}
+
+// Entry Println family functions
+
+func (entry *Entry) Debugln(args ...interface{}) {
+       if entry.Logger.Level >= DebugLevel {
+               entry.Debug(entry.sprintlnn(args...))
+       }
+}
+
+func (entry *Entry) Infoln(args ...interface{}) {
+       if entry.Logger.Level >= InfoLevel {
+               entry.Info(entry.sprintlnn(args...))
+       }
+}
+
+func (entry *Entry) Println(args ...interface{}) {
+       entry.Infoln(args...)
+}
+
+func (entry *Entry) Warnln(args ...interface{}) {
+       if entry.Logger.Level >= WarnLevel {
+               entry.Warn(entry.sprintlnn(args...))
+       }
+}
+
+func (entry *Entry) Warningln(args ...interface{}) {
+       entry.Warnln(args...)
+}
+
+func (entry *Entry) Errorln(args ...interface{}) {
+       if entry.Logger.Level >= ErrorLevel {
+               entry.Error(entry.sprintlnn(args...))
+       }
+}
+
+func (entry *Entry) Fatalln(args ...interface{}) {
+       if entry.Logger.Level >= FatalLevel {
+               entry.Fatal(entry.sprintlnn(args...))
+       }
+       os.Exit(1)
+}
+
+func (entry *Entry) Panicln(args ...interface{}) {
+       if entry.Logger.Level >= PanicLevel {
+               entry.Panic(entry.sprintlnn(args...))
+       }
+}
+
+// Sprintlnn => Sprint no newline. This is to get the behavior of how
+// fmt.Sprintln where spaces are always added between operands, regardless of
+// their type. Instead of vendoring the Sprintln implementation to spare a
+// string allocation, we do the simplest thing.
+func (entry *Entry) sprintlnn(args ...interface{}) string {
+       msg := fmt.Sprintln(args...)
+       return msg[:len(msg)-1]
+}
diff --git a/vendor/github.com/Sirupsen/logrus/exported.go b/vendor/github.com/Sirupsen/logrus/exported.go
new file mode 100644 (file)
index 0000000..9a0120a
--- /dev/null
@@ -0,0 +1,193 @@
+package logrus
+
+import (
+       "io"
+)
+
+var (
+       // std is the name of the standard logger in stdlib `log`
+       std = New()
+)
+
+func StandardLogger() *Logger {
+       return std
+}
+
+// SetOutput sets the standard logger output.
+func SetOutput(out io.Writer) {
+       std.mu.Lock()
+       defer std.mu.Unlock()
+       std.Out = out
+}
+
+// SetFormatter sets the standard logger formatter.
+func SetFormatter(formatter Formatter) {
+       std.mu.Lock()
+       defer std.mu.Unlock()
+       std.Formatter = formatter
+}
+
+// SetLevel sets the standard logger level.
+func SetLevel(level Level) {
+       std.mu.Lock()
+       defer std.mu.Unlock()
+       std.Level = level
+}
+
+// GetLevel returns the standard logger level.
+func GetLevel() Level {
+       std.mu.Lock()
+       defer std.mu.Unlock()
+       return std.Level
+}
+
+// AddHook adds a hook to the standard logger hooks.
+func AddHook(hook Hook) {
+       std.mu.Lock()
+       defer std.mu.Unlock()
+       std.Hooks.Add(hook)
+}
+
+// WithError creates an entry from the standard logger and adds an error to it, using the value defined in ErrorKey as key.
+func WithError(err error) *Entry {
+       return std.WithField(ErrorKey, err)
+}
+
+// WithField creates an entry from the standard logger and adds a field to
+// it. If you want multiple fields, use `WithFields`.
+//
+// Note that it doesn't log until you call Debug, Print, Info, Warn, Fatal
+// or Panic on the Entry it returns.
+func WithField(key string, value interface{}) *Entry {
+       return std.WithField(key, value)
+}
+
+// WithFields creates an entry from the standard logger and adds multiple
+// fields to it. This is simply a helper for `WithField`, invoking it
+// once for each field.
+//
+// Note that it doesn't log until you call Debug, Print, Info, Warn, Fatal
+// or Panic on the Entry it returns.
+func WithFields(fields Fields) *Entry {
+       return std.WithFields(fields)
+}
+
+// Debug logs a message at level Debug on the standard logger.
+func Debug(args ...interface{}) {
+       std.Debug(args...)
+}
+
+// Print logs a message at level Info on the standard logger.
+func Print(args ...interface{}) {
+       std.Print(args...)
+}
+
+// Info logs a message at level Info on the standard logger.
+func Info(args ...interface{}) {
+       std.Info(args...)
+}
+
+// Warn logs a message at level Warn on the standard logger.
+func Warn(args ...interface{}) {
+       std.Warn(args...)
+}
+
+// Warning logs a message at level Warn on the standard logger.
+func Warning(args ...interface{}) {
+       std.Warning(args...)
+}
+
+// Error logs a message at level Error on the standard logger.
+func Error(args ...interface{}) {
+       std.Error(args...)
+}
+
+// Panic logs a message at level Panic on the standard logger.
+func Panic(args ...interface{}) {
+       std.Panic(args...)
+}
+
+// Fatal logs a message at level Fatal on the standard logger.
+func Fatal(args ...interface{}) {
+       std.Fatal(args...)
+}
+
+// Debugf logs a message at level Debug on the standard logger.
+func Debugf(format string, args ...interface{}) {
+       std.Debugf(format, args...)
+}
+
+// Printf logs a message at level Info on the standard logger.
+func Printf(format string, args ...interface{}) {
+       std.Printf(format, args...)
+}
+
+// Infof logs a message at level Info on the standard logger.
+func Infof(format string, args ...interface{}) {
+       std.Infof(format, args...)
+}
+
+// Warnf logs a message at level Warn on the standard logger.
+func Warnf(format string, args ...interface{}) {
+       std.Warnf(format, args...)
+}
+
+// Warningf logs a message at level Warn on the standard logger.
+func Warningf(format string, args ...interface{}) {
+       std.Warningf(format, args...)
+}
+
+// Errorf logs a message at level Error on the standard logger.
+func Errorf(format string, args ...interface{}) {
+       std.Errorf(format, args...)
+}
+
+// Panicf logs a message at level Panic on the standard logger.
+func Panicf(format string, args ...interface{}) {
+       std.Panicf(format, args...)
+}
+
+// Fatalf logs a message at level Fatal on the standard logger.
+func Fatalf(format string, args ...interface{}) {
+       std.Fatalf(format, args...)
+}
+
+// Debugln logs a message at level Debug on the standard logger.
+func Debugln(args ...interface{}) {
+       std.Debugln(args...)
+}
+
+// Println logs a message at level Info on the standard logger.
+func Println(args ...interface{}) {
+       std.Println(args...)
+}
+
+// Infoln logs a message at level Info on the standard logger.
+func Infoln(args ...interface{}) {
+       std.Infoln(args...)
+}
+
+// Warnln logs a message at level Warn on the standard logger.
+func Warnln(args ...interface{}) {
+       std.Warnln(args...)
+}
+
+// Warningln logs a message at level Warn on the standard logger.
+func Warningln(args ...interface{}) {
+       std.Warningln(args...)
+}
+
+// Errorln logs a message at level Error on the standard logger.
+func Errorln(args ...interface{}) {
+       std.Errorln(args...)
+}
+
+// Panicln logs a message at level Panic on the standard logger.
+func Panicln(args ...interface{}) {
+       std.Panicln(args...)
+}
+
+// Fatalln logs a message at level Fatal on the standard logger.
+func Fatalln(args ...interface{}) {
+       std.Fatalln(args...)
+}
diff --git a/vendor/github.com/Sirupsen/logrus/formatter.go b/vendor/github.com/Sirupsen/logrus/formatter.go
new file mode 100644 (file)
index 0000000..104d689
--- /dev/null
@@ -0,0 +1,48 @@
+package logrus
+
+import "time"
+
+const DefaultTimestampFormat = time.RFC3339
+
+// The Formatter interface is used to implement a custom Formatter. It takes an
+// `Entry`. It exposes all the fields, including the default ones:
+//
+// * `entry.Data["msg"]`. The message passed from Info, Warn, Error ..
+// * `entry.Data["time"]`. The timestamp.
+// * `entry.Data["level"]. The level the entry was logged at.
+//
+// Any additional fields added with `WithField` or `WithFields` are also in
+// `entry.Data`. Format is expected to return an array of bytes which are then
+// logged to `logger.Out`.
+type Formatter interface {
+       Format(*Entry) ([]byte, error)
+}
+
+// This is to not silently overwrite `time`, `msg` and `level` fields when
+// dumping it. If this code wasn't there doing:
+//
+//  logrus.WithField("level", 1).Info("hello")
+//
+// Would just silently drop the user provided level. Instead with this code
+// it'll logged as:
+//
+//  {"level": "info", "fields.level": 1, "msg": "hello", "time": "..."}
+//
+// It's not exported because it's still using Data in an opinionated way. It's to
+// avoid code duplication between the two default formatters.
+func prefixFieldClashes(data Fields) {
+       _, ok := data["time"]
+       if ok {
+               data["fields.time"] = data["time"]
+       }
+
+       _, ok = data["msg"]
+       if ok {
+               data["fields.msg"] = data["msg"]
+       }
+
+       _, ok = data["level"]
+       if ok {
+               data["fields.level"] = data["level"]
+       }
+}
diff --git a/vendor/github.com/Sirupsen/logrus/hooks.go b/vendor/github.com/Sirupsen/logrus/hooks.go
new file mode 100644 (file)
index 0000000..3f151cd
--- /dev/null
@@ -0,0 +1,34 @@
+package logrus
+
+// A hook to be fired when logging on the logging levels returned from
+// `Levels()` on your implementation of the interface. Note that this is not
+// fired in a goroutine or a channel with workers, you should handle such
+// functionality yourself if your call is non-blocking and you don't wish for
+// the logging calls for levels returned from `Levels()` to block.
+type Hook interface {
+       Levels() []Level
+       Fire(*Entry) error
+}
+
+// Internal type for storing the hooks on a logger instance.
+type LevelHooks map[Level][]Hook
+
+// Add a hook to an instance of logger. This is called with
+// `log.Hooks.Add(new(MyHook))` where `MyHook` implements the `Hook` interface.
+func (hooks LevelHooks) Add(hook Hook) {
+       for _, level := range hook.Levels() {
+               hooks[level] = append(hooks[level], hook)
+       }
+}
+
+// Fire all the hooks for the passed level. Used by `entry.log` to fire
+// appropriate hooks for a log entry.
+func (hooks LevelHooks) Fire(level Level, entry *Entry) error {
+       for _, hook := range hooks[level] {
+               if err := hook.Fire(entry); err != nil {
+                       return err
+               }
+       }
+
+       return nil
+}
diff --git a/vendor/github.com/Sirupsen/logrus/json_formatter.go b/vendor/github.com/Sirupsen/logrus/json_formatter.go
new file mode 100644 (file)
index 0000000..2ad6dc5
--- /dev/null
@@ -0,0 +1,41 @@
+package logrus
+
+import (
+       "encoding/json"
+       "fmt"
+)
+
+type JSONFormatter struct {
+       // TimestampFormat sets the format used for marshaling timestamps.
+       TimestampFormat string
+}
+
+func (f *JSONFormatter) Format(entry *Entry) ([]byte, error) {
+       data := make(Fields, len(entry.Data)+3)
+       for k, v := range entry.Data {
+               switch v := v.(type) {
+               case error:
+                       // Otherwise errors are ignored by `encoding/json`
+                       // https://github.com/Sirupsen/logrus/issues/137
+                       data[k] = v.Error()
+               default:
+                       data[k] = v
+               }
+       }
+       prefixFieldClashes(data)
+
+       timestampFormat := f.TimestampFormat
+       if timestampFormat == "" {
+               timestampFormat = DefaultTimestampFormat
+       }
+
+       data["time"] = entry.Time.Format(timestampFormat)
+       data["msg"] = entry.Message
+       data["level"] = entry.Level.String()
+
+       serialized, err := json.Marshal(data)
+       if err != nil {
+               return nil, fmt.Errorf("Failed to marshal fields to JSON, %v", err)
+       }
+       return append(serialized, '\n'), nil
+}
diff --git a/vendor/github.com/Sirupsen/logrus/logger.go b/vendor/github.com/Sirupsen/logrus/logger.go
new file mode 100644 (file)
index 0000000..2fdb231
--- /dev/null
@@ -0,0 +1,212 @@
+package logrus
+
+import (
+       "io"
+       "os"
+       "sync"
+)
+
+type Logger struct {
+       // The logs are `io.Copy`'d to this in a mutex. It's common to set this to a
+       // file, or leave it default which is `os.Stderr`. You can also set this to
+       // something more adventorous, such as logging to Kafka.
+       Out io.Writer
+       // Hooks for the logger instance. These allow firing events based on logging
+       // levels and log entries. For example, to send errors to an error tracking
+       // service, log to StatsD or dump the core on fatal errors.
+       Hooks LevelHooks
+       // All log entries pass through the formatter before logged to Out. The
+       // included formatters are `TextFormatter` and `JSONFormatter` for which
+       // TextFormatter is the default. In development (when a TTY is attached) it
+       // logs with colors, but to a file it wouldn't. You can easily implement your
+       // own that implements the `Formatter` interface, see the `README` or included
+       // formatters for examples.
+       Formatter Formatter
+       // The logging level the logger should log at. This is typically (and defaults
+       // to) `logrus.Info`, which allows Info(), Warn(), Error() and Fatal() to be
+       // logged. `logrus.Debug` is useful in
+       Level Level
+       // Used to sync writing to the log.
+       mu sync.Mutex
+}
+
+// Creates a new logger. Configuration should be set by changing `Formatter`,
+// `Out` and `Hooks` directly on the default logger instance. You can also just
+// instantiate your own:
+//
+//    var log = &Logger{
+//      Out: os.Stderr,
+//      Formatter: new(JSONFormatter),
+//      Hooks: make(LevelHooks),
+//      Level: logrus.DebugLevel,
+//    }
+//
+// It's recommended to make this a global instance called `log`.
+func New() *Logger {
+       return &Logger{
+               Out:       os.Stderr,
+               Formatter: new(TextFormatter),
+               Hooks:     make(LevelHooks),
+               Level:     InfoLevel,
+       }
+}
+
+// Adds a field to the log entry, note that you it doesn't log until you call
+// Debug, Print, Info, Warn, Fatal or Panic. It only creates a log entry.
+// If you want multiple fields, use `WithFields`.
+func (logger *Logger) WithField(key string, value interface{}) *Entry {
+       return NewEntry(logger).WithField(key, value)
+}
+
+// Adds a struct of fields to the log entry. All it does is call `WithField` for
+// each `Field`.
+func (logger *Logger) WithFields(fields Fields) *Entry {
+       return NewEntry(logger).WithFields(fields)
+}
+
+// Add an error as single field to the log entry.  All it does is call
+// `WithError` for the given `error`.
+func (logger *Logger) WithError(err error) *Entry {
+       return NewEntry(logger).WithError(err)
+}
+
+func (logger *Logger) Debugf(format string, args ...interface{}) {
+       if logger.Level >= DebugLevel {
+               NewEntry(logger).Debugf(format, args...)
+       }
+}
+
+func (logger *Logger) Infof(format string, args ...interface{}) {
+       if logger.Level >= InfoLevel {
+               NewEntry(logger).Infof(format, args...)
+       }
+}
+
+func (logger *Logger) Printf(format string, args ...interface{}) {
+       NewEntry(logger).Printf(format, args...)
+}
+
+func (logger *Logger) Warnf(format string, args ...interface{}) {
+       if logger.Level >= WarnLevel {
+               NewEntry(logger).Warnf(format, args...)
+       }
+}
+
+func (logger *Logger) Warningf(format string, args ...interface{}) {
+       if logger.Level >= WarnLevel {
+               NewEntry(logger).Warnf(format, args...)
+       }
+}
+
+func (logger *Logger) Errorf(format string, args ...interface{}) {
+       if logger.Level >= ErrorLevel {
+               NewEntry(logger).Errorf(format, args...)
+       }
+}
+
+func (logger *Logger) Fatalf(format string, args ...interface{}) {
+       if logger.Level >= FatalLevel {
+               NewEntry(logger).Fatalf(format, args...)
+       }
+       os.Exit(1)
+}
+
+func (logger *Logger) Panicf(format string, args ...interface{}) {
+       if logger.Level >= PanicLevel {
+               NewEntry(logger).Panicf(format, args...)
+       }
+}
+
+func (logger *Logger) Debug(args ...interface{}) {
+       if logger.Level >= DebugLevel {
+               NewEntry(logger).Debug(args...)
+       }
+}
+
+func (logger *Logger) Info(args ...interface{}) {
+       if logger.Level >= InfoLevel {
+               NewEntry(logger).Info(args...)
+       }
+}
+
+func (logger *Logger) Print(args ...interface{}) {
+       NewEntry(logger).Info(args...)
+}
+
+func (logger *Logger) Warn(args ...interface{}) {
+       if logger.Level >= WarnLevel {
+               NewEntry(logger).Warn(args...)
+       }
+}
+
+func (logger *Logger) Warning(args ...interface{}) {
+       if logger.Level >= WarnLevel {
+               NewEntry(logger).Warn(args...)
+       }
+}
+
+func (logger *Logger) Error(args ...interface{}) {
+       if logger.Level >= ErrorLevel {
+               NewEntry(logger).Error(args...)
+       }
+}
+
+func (logger *Logger) Fatal(args ...interface{}) {
+       if logger.Level >= FatalLevel {
+               NewEntry(logger).Fatal(args...)
+       }
+       os.Exit(1)
+}
+
+func (logger *Logger) Panic(args ...interface{}) {
+       if logger.Level >= PanicLevel {
+               NewEntry(logger).Panic(args...)
+       }
+}
+
+func (logger *Logger) Debugln(args ...interface{}) {
+       if logger.Level >= DebugLevel {
+               NewEntry(logger).Debugln(args...)
+       }
+}
+
+func (logger *Logger) Infoln(args ...interface{}) {
+       if logger.Level >= InfoLevel {
+               NewEntry(logger).Infoln(args...)
+       }
+}
+
+func (logger *Logger) Println(args ...interface{}) {
+       NewEntry(logger).Println(args...)
+}
+
+func (logger *Logger) Warnln(args ...interface{}) {
+       if logger.Level >= WarnLevel {
+               NewEntry(logger).Warnln(args...)
+       }
+}
+
+func (logger *Logger) Warningln(args ...interface{}) {
+       if logger.Level >= WarnLevel {
+               NewEntry(logger).Warnln(args...)
+       }
+}
+
+func (logger *Logger) Errorln(args ...interface{}) {
+       if logger.Level >= ErrorLevel {
+               NewEntry(logger).Errorln(args...)
+       }
+}
+
+func (logger *Logger) Fatalln(args ...interface{}) {
+       if logger.Level >= FatalLevel {
+               NewEntry(logger).Fatalln(args...)
+       }
+       os.Exit(1)
+}
+
+func (logger *Logger) Panicln(args ...interface{}) {
+       if logger.Level >= PanicLevel {
+               NewEntry(logger).Panicln(args...)
+       }
+}
diff --git a/vendor/github.com/Sirupsen/logrus/logrus.go b/vendor/github.com/Sirupsen/logrus/logrus.go
new file mode 100644 (file)
index 0000000..e596691
--- /dev/null
@@ -0,0 +1,143 @@
+package logrus
+
+import (
+       "fmt"
+       "log"
+       "strings"
+)
+
+// Fields type, used to pass to `WithFields`.
+type Fields map[string]interface{}
+
+// Level type
+type Level uint8
+
+// Convert the Level to a string. E.g. PanicLevel becomes "panic".
+func (level Level) String() string {
+       switch level {
+       case DebugLevel:
+               return "debug"
+       case InfoLevel:
+               return "info"
+       case WarnLevel:
+               return "warning"
+       case ErrorLevel:
+               return "error"
+       case FatalLevel:
+               return "fatal"
+       case PanicLevel:
+               return "panic"
+       }
+
+       return "unknown"
+}
+
+// ParseLevel takes a string level and returns the Logrus log level constant.
+func ParseLevel(lvl string) (Level, error) {
+       switch strings.ToLower(lvl) {
+       case "panic":
+               return PanicLevel, nil
+       case "fatal":
+               return FatalLevel, nil
+       case "error":
+               return ErrorLevel, nil
+       case "warn", "warning":
+               return WarnLevel, nil
+       case "info":
+               return InfoLevel, nil
+       case "debug":
+               return DebugLevel, nil
+       }
+
+       var l Level
+       return l, fmt.Errorf("not a valid logrus Level: %q", lvl)
+}
+
+// A constant exposing all logging levels
+var AllLevels = []Level{
+       PanicLevel,
+       FatalLevel,
+       ErrorLevel,
+       WarnLevel,
+       InfoLevel,
+       DebugLevel,
+}
+
+// These are the different logging levels. You can set the logging level to log
+// on your instance of logger, obtained with `logrus.New()`.
+const (
+       // PanicLevel level, highest level of severity. Logs and then calls panic with the
+       // message passed to Debug, Info, ...
+       PanicLevel Level = iota
+       // FatalLevel level. Logs and then calls `os.Exit(1)`. It will exit even if the
+       // logging level is set to Panic.
+       FatalLevel
+       // ErrorLevel level. Logs. Used for errors that should definitely be noted.
+       // Commonly used for hooks to send errors to an error tracking service.
+       ErrorLevel
+       // WarnLevel level. Non-critical entries that deserve eyes.
+       WarnLevel
+       // InfoLevel level. General operational entries about what's going on inside the
+       // application.
+       InfoLevel
+       // DebugLevel level. Usually only enabled when debugging. Very verbose logging.
+       DebugLevel
+)
+
+// Won't compile if StdLogger can't be realized by a log.Logger
+var (
+       _ StdLogger = &log.Logger{}
+       _ StdLogger = &Entry{}
+       _ StdLogger = &Logger{}
+)
+
+// StdLogger is what your logrus-enabled library should take, that way
+// it'll accept a stdlib logger and a logrus logger. There's no standard
+// interface, this is the closest we get, unfortunately.
+type StdLogger interface {
+       Print(...interface{})
+       Printf(string, ...interface{})
+       Println(...interface{})
+
+       Fatal(...interface{})
+       Fatalf(string, ...interface{})
+       Fatalln(...interface{})
+
+       Panic(...interface{})
+       Panicf(string, ...interface{})
+       Panicln(...interface{})
+}
+
+// The FieldLogger interface generalizes the Entry and Logger types
+type FieldLogger interface {
+       WithField(key string, value interface{}) *Entry
+       WithFields(fields Fields) *Entry
+       WithError(err error) *Entry
+
+       Debugf(format string, args ...interface{})
+       Infof(format string, args ...interface{})
+       Printf(format string, args ...interface{})
+       Warnf(format string, args ...interface{})
+       Warningf(format string, args ...interface{})
+       Errorf(format string, args ...interface{})
+       Fatalf(format string, args ...interface{})
+       Panicf(format string, args ...interface{})
+
+       Debug(args ...interface{})
+       Info(args ...interface{})
+       Print(args ...interface{})
+       Warn(args ...interface{})
+       Warning(args ...interface{})
+       Error(args ...interface{})
+       Fatal(args ...interface{})
+       Panic(args ...interface{})
+
+       Debugln(args ...interface{})
+       Infoln(args ...interface{})
+       Println(args ...interface{})
+       Warnln(args ...interface{})
+       Warningln(args ...interface{})
+       Errorln(args ...interface{})
+       Fatalln(args ...interface{})
+       Panicln(args ...interface{})
+}
diff --git a/vendor/github.com/Sirupsen/logrus/terminal_bsd.go b/vendor/github.com/Sirupsen/logrus/terminal_bsd.go
new file mode 100644 (file)
index 0000000..71f8d67
--- /dev/null
@@ -0,0 +1,9 @@
+// +build darwin freebsd openbsd netbsd dragonfly
+
+package logrus
+
+import "syscall"
+
+const ioctlReadTermios = syscall.TIOCGETA
+
+type Termios syscall.Termios
diff --git a/vendor/github.com/Sirupsen/logrus/terminal_linux.go b/vendor/github.com/Sirupsen/logrus/terminal_linux.go
new file mode 100644 (file)
index 0000000..a2c0b40
--- /dev/null
@@ -0,0 +1,12 @@
+// Based on ssh/terminal:
+// Copyright 2013 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 logrus
+
+import "syscall"
+
+const ioctlReadTermios = syscall.TCGETS
+
+type Termios syscall.Termios
diff --git a/vendor/github.com/Sirupsen/logrus/terminal_notwindows.go b/vendor/github.com/Sirupsen/logrus/terminal_notwindows.go
new file mode 100644 (file)
index 0000000..b343b3a
--- /dev/null
@@ -0,0 +1,21 @@
+// Based on ssh/terminal:
+// 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.
+
+// +build linux darwin freebsd openbsd netbsd dragonfly
+
+package logrus
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+// IsTerminal returns true if stderr's file descriptor is a terminal.
+func IsTerminal() bool {
+       fd := syscall.Stderr
+       var termios Termios
+       _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, uintptr(fd), ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0)
+       return err == 0
+}
diff --git a/vendor/github.com/Sirupsen/logrus/terminal_solaris.go b/vendor/github.com/Sirupsen/logrus/terminal_solaris.go
new file mode 100644 (file)
index 0000000..3e70bf7
--- /dev/null
@@ -0,0 +1,15 @@
+// +build solaris
+
+package logrus
+
+import (
+       "os"
+
+       "golang.org/x/sys/unix"
+)
+
+// IsTerminal returns true if the given file descriptor is a terminal.
+func IsTerminal() bool {
+       _, err := unix.IoctlGetTermios(int(os.Stdout.Fd()), unix.TCGETA)
+       return err == nil
+}
diff --git a/vendor/github.com/Sirupsen/logrus/terminal_windows.go b/vendor/github.com/Sirupsen/logrus/terminal_windows.go
new file mode 100644 (file)
index 0000000..0146845
--- /dev/null
@@ -0,0 +1,27 @@
+// Based on ssh/terminal:
+// 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.
+
+// +build windows
+
+package logrus
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+var kernel32 = syscall.NewLazyDLL("kernel32.dll")
+
+var (
+       procGetConsoleMode = kernel32.NewProc("GetConsoleMode")
+)
+
+// IsTerminal returns true if stderr's file descriptor is a terminal.
+func IsTerminal() bool {
+       fd := syscall.Stderr
+       var st uint32
+       r, _, e := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(fd), uintptr(unsafe.Pointer(&st)), 0)
+       return r != 0 && e == 0
+}
diff --git a/vendor/github.com/Sirupsen/logrus/text_formatter.go b/vendor/github.com/Sirupsen/logrus/text_formatter.go
new file mode 100644 (file)
index 0000000..06ef202
--- /dev/null
@@ -0,0 +1,161 @@
+package logrus
+
+import (
+       "bytes"
+       "fmt"
+       "runtime"
+       "sort"
+       "strings"
+       "time"
+)
+
+const (
+       nocolor = 0
+       red     = 31
+       green   = 32
+       yellow  = 33
+       blue    = 34
+       gray    = 37
+)
+
+var (
+       baseTimestamp time.Time
+       isTerminal    bool
+)
+
+func init() {
+       baseTimestamp = time.Now()
+       isTerminal = IsTerminal()
+}
+
+func miniTS() int {
+       return int(time.Since(baseTimestamp) / time.Second)
+}
+
+type TextFormatter struct {
+       // Set to true to bypass checking for a TTY before outputting colors.
+       ForceColors bool
+
+       // Force disabling colors.
+       DisableColors bool
+
+       // Disable timestamp logging. useful when output is redirected to logging
+       // system that already adds timestamps.
+       DisableTimestamp bool
+
+       // Enable logging the full timestamp when a TTY is attached instead of just
+       // the time passed since beginning of execution.
+       FullTimestamp bool
+
+       // TimestampFormat to use for display when a full timestamp is printed
+       TimestampFormat string
+
+       // The fields are sorted by default for a consistent output. For applications
+       // that log extremely frequently and don't use the JSON formatter this may not
+       // be desired.
+       DisableSorting bool
+}
+
+func (f *TextFormatter) Format(entry *Entry) ([]byte, error) {
+       var keys []string = make([]string, 0, len(entry.Data))
+       for k := range entry.Data {
+               keys = append(keys, k)
+       }
+
+       if !f.DisableSorting {
+               sort.Strings(keys)
+       }
+
+       b := &bytes.Buffer{}
+
+       prefixFieldClashes(entry.Data)
+
+       isColorTerminal := isTerminal && (runtime.GOOS != "windows")
+       isColored := (f.ForceColors || isColorTerminal) && !f.DisableColors
+
+       timestampFormat := f.TimestampFormat
+       if timestampFormat == "" {
+               timestampFormat = DefaultTimestampFormat
+       }
+       if isColored {
+               f.printColored(b, entry, keys, timestampFormat)
+       } else {
+               if !f.DisableTimestamp {
+                       f.appendKeyValue(b, "time", entry.Time.Format(timestampFormat))
+               }
+               f.appendKeyValue(b, "level", entry.Level.String())
+               if entry.Message != "" {
+                       f.appendKeyValue(b, "msg", entry.Message)
+               }
+               for _, key := range keys {
+                       f.appendKeyValue(b, key, entry.Data[key])
+               }
+       }
+
+       b.WriteByte('\n')
+       return b.Bytes(), nil
+}
+
+func (f *TextFormatter) printColored(b *bytes.Buffer, entry *Entry, keys []string, timestampFormat string) {
+       var levelColor int
+       switch entry.Level {
+       case DebugLevel:
+               levelColor = gray
+       case WarnLevel:
+               levelColor = yellow
+       case ErrorLevel, FatalLevel, PanicLevel:
+               levelColor = red
+       default:
+               levelColor = blue
+       }
+
+       levelText := strings.ToUpper(entry.Level.String())[0:4]
+
+       if !f.FullTimestamp {
+               fmt.Fprintf(b, "\x1b[%dm%s\x1b[0m[%04d] %-44s ", levelColor, levelText, miniTS(), entry.Message)
+       } else {
+               fmt.Fprintf(b, "\x1b[%dm%s\x1b[0m[%s] %-44s ", levelColor, levelText, entry.Time.Format(timestampFormat), entry.Message)
+       }
+       for _, k := range keys {
+               v := entry.Data[k]
+               fmt.Fprintf(b, " \x1b[%dm%s\x1b[0m=%+v", levelColor, k, v)
+       }
+}
+
+func needsQuoting(text string) bool {
+       for _, ch := range text {
+               if !((ch >= 'a' && ch <= 'z') ||
+                       (ch >= 'A' && ch <= 'Z') ||
+                       (ch >= '0' && ch <= '9') ||
+                       ch == '-' || ch == '.') {
+                       return false
+               }
+       }
+       return true
+}
+
+func (f *TextFormatter) appendKeyValue(b *bytes.Buffer, key string, value interface{}) {
+
+       b.WriteString(key)
+       b.WriteByte('=')
+
+       switch value := value.(type) {
+       case string:
+               if needsQuoting(value) {
+                       b.WriteString(value)
+               } else {
+                       fmt.Fprintf(b, "%q", value)
+               }
+       case error:
+               errmsg := value.Error()
+               if needsQuoting(errmsg) {
+                       b.WriteString(errmsg)
+               } else {
+                       fmt.Fprintf(b, "%q", value)
+               }
+       default:
+               fmt.Fprint(b, value)
+       }
+
+       b.WriteByte(' ')
+}
diff --git a/vendor/github.com/Sirupsen/logrus/writer.go b/vendor/github.com/Sirupsen/logrus/writer.go
new file mode 100644 (file)
index 0000000..1e30b1c
--- /dev/null
@@ -0,0 +1,31 @@
+package logrus
+
+import (
+       "bufio"
+       "io"
+       "runtime"
+)
+
+func (logger *Logger) Writer() *io.PipeWriter {
+       reader, writer := io.Pipe()
+
+       go logger.writerScanner(reader)
+       runtime.SetFinalizer(writer, writerFinalizer)
+
+       return writer
+}
+
+func (logger *Logger) writerScanner(reader *io.PipeReader) {
+       scanner := bufio.NewScanner(reader)
+       for scanner.Scan() {
+               logger.Print(scanner.Text())
+       }
+       if err := scanner.Err(); err != nil {
+               logger.Errorf("Error while reading from Writer: %s", err)
+       }
+       reader.Close()
+}
+
+func writerFinalizer(writer *io.PipeWriter) {
+       writer.Close()
+}
diff --git a/vendor/github.com/beorn7/perks/LICENSE b/vendor/github.com/beorn7/perks/LICENSE
new file mode 100644 (file)
index 0000000..339177b
--- /dev/null
@@ -0,0 +1,20 @@
+Copyright (C) 2013 Blake Mizerany
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/github.com/beorn7/perks/quantile/exampledata.txt b/vendor/github.com/beorn7/perks/quantile/exampledata.txt
new file mode 100644 (file)
index 0000000..1602287
--- /dev/null
@@ -0,0 +1,2388 @@
+8
+5
+26
+12
+5
+235
+13
+6
+28
+30
+3
+3
+3
+3
+5
+2
+33
+7
+2
+4
+7
+12
+14
+5
+8
+3
+10
+4
+5
+3
+6
+6
+209
+20
+3
+10
+14
+3
+4
+6
+8
+5
+11
+7
+3
+2
+3
+3
+212
+5
+222
+4
+10
+10
+5
+6
+3
+8
+3
+10
+254
+220
+2
+3
+5
+24
+5
+4
+222
+7
+3
+3
+223
+8
+15
+12
+14
+14
+3
+2
+2
+3
+13
+3
+11
+4
+4
+6
+5
+7
+13
+5
+3
+5
+2
+5
+3
+5
+2
+7
+15
+17
+14
+3
+6
+6
+3
+17
+5
+4
+7
+6
+4
+4
+8
+6
+8
+3
+9
+3
+6
+3
+4
+5
+3
+3
+660
+4
+6
+10
+3
+6
+3
+2
+5
+13
+2
+4
+4
+10
+4
+8
+4
+3
+7
+9
+9
+3
+10
+37
+3
+13
+4
+12
+3
+6
+10
+8
+5
+21
+2
+3
+8
+3
+2
+3
+3
+4
+12
+2
+4
+8
+8
+4
+3
+2
+20
+1
+6
+32
+2
+11
+6
+18
+3
+8
+11
+3
+212
+3
+4
+2
+6
+7
+12
+11
+3
+2
+16
+10
+6
+4
+6
+3
+2
+7
+3
+2
+2
+2
+2
+5
+6
+4
+3
+10
+3
+4
+6
+5
+3
+4
+4
+5
+6
+4
+3
+4
+4
+5
+7
+5
+5
+3
+2
+7
+2
+4
+12
+4
+5
+6
+2
+4
+4
+8
+4
+15
+13
+7
+16
+5
+3
+23
+5
+5
+7
+3
+2
+9
+8
+7
+5
+8
+11
+4
+10
+76
+4
+47
+4
+3
+2
+7
+4
+2
+3
+37
+10
+4
+2
+20
+5
+4
+4
+10
+10
+4
+3
+7
+23
+240
+7
+13
+5
+5
+3
+3
+2
+5
+4
+2
+8
+7
+19
+2
+23
+8
+7
+2
+5
+3
+8
+3
+8
+13
+5
+5
+5
+2
+3
+23
+4
+9
+8
+4
+3
+3
+5
+220
+2
+3
+4
+6
+14
+3
+53
+6
+2
+5
+18
+6
+3
+219
+6
+5
+2
+5
+3
+6
+5
+15
+4
+3
+17
+3
+2
+4
+7
+2
+3
+3
+4
+4
+3
+2
+664
+6
+3
+23
+5
+5
+16
+5
+8
+2
+4
+2
+24
+12
+3
+2
+3
+5
+8
+3
+5
+4
+3
+14
+3
+5
+8
+2
+3
+7
+9
+4
+2
+3
+6
+8
+4
+3
+4
+6
+5
+3
+3
+6
+3
+19
+4
+4
+6
+3
+6
+3
+5
+22
+5
+4
+4
+3
+8
+11
+4
+9
+7
+6
+13
+4
+4
+4
+6
+17
+9
+3
+3
+3
+4
+3
+221
+5
+11
+3
+4
+2
+12
+6
+3
+5
+7
+5
+7
+4
+9
+7
+14
+37
+19
+217
+16
+3
+5
+2
+2
+7
+19
+7
+6
+7
+4
+24
+5
+11
+4
+7
+7
+9
+13
+3
+4
+3
+6
+28
+4
+4
+5
+5
+2
+5
+6
+4
+4
+6
+10
+5
+4
+3
+2
+3
+3
+6
+5
+5
+4
+3
+2
+3
+7
+4
+6
+18
+16
+8
+16
+4
+5
+8
+6
+9
+13
+1545
+6
+215
+6
+5
+6
+3
+45
+31
+5
+2
+2
+4
+3
+3
+2
+5
+4
+3
+5
+7
+7
+4
+5
+8
+5
+4
+749
+2
+31
+9
+11
+2
+11
+5
+4
+4
+7
+9
+11
+4
+5
+4
+7
+3
+4
+6
+2
+15
+3
+4
+3
+4
+3
+5
+2
+13
+5
+5
+3
+3
+23
+4
+4
+5
+7
+4
+13
+2
+4
+3
+4
+2
+6
+2
+7
+3
+5
+5
+3
+29
+5
+4
+4
+3
+10
+2
+3
+79
+16
+6
+6
+7
+7
+3
+5
+5
+7
+4
+3
+7
+9
+5
+6
+5
+9
+6
+3
+6
+4
+17
+2
+10
+9
+3
+6
+2
+3
+21
+22
+5
+11
+4
+2
+17
+2
+224
+2
+14
+3
+4
+4
+2
+4
+4
+4
+4
+5
+3
+4
+4
+10
+2
+6
+3
+3
+5
+7
+2
+7
+5
+6
+3
+218
+2
+2
+5
+2
+6
+3
+5
+222
+14
+6
+33
+3
+2
+5
+3
+3
+3
+9
+5
+3
+3
+2
+7
+4
+3
+4
+3
+5
+6
+5
+26
+4
+13
+9
+7
+3
+221
+3
+3
+4
+4
+4
+4
+2
+18
+5
+3
+7
+9
+6
+8
+3
+10
+3
+11
+9
+5
+4
+17
+5
+5
+6
+6
+3
+2
+4
+12
+17
+6
+7
+218
+4
+2
+4
+10
+3
+5
+15
+3
+9
+4
+3
+3
+6
+29
+3
+3
+4
+5
+5
+3
+8
+5
+6
+6
+7
+5
+3
+5
+3
+29
+2
+31
+5
+15
+24
+16
+5
+207
+4
+3
+3
+2
+15
+4
+4
+13
+5
+5
+4
+6
+10
+2
+7
+8
+4
+6
+20
+5
+3
+4
+3
+12
+12
+5
+17
+7
+3
+3
+3
+6
+10
+3
+5
+25
+80
+4
+9
+3
+2
+11
+3
+3
+2
+3
+8
+7
+5
+5
+19
+5
+3
+3
+12
+11
+2
+6
+5
+5
+5
+3
+3
+3
+4
+209
+14
+3
+2
+5
+19
+4
+4
+3
+4
+14
+5
+6
+4
+13
+9
+7
+4
+7
+10
+2
+9
+5
+7
+2
+8
+4
+6
+5
+5
+222
+8
+7
+12
+5
+216
+3
+4
+4
+6
+3
+14
+8
+7
+13
+4
+3
+3
+3
+3
+17
+5
+4
+3
+33
+6
+6
+33
+7
+5
+3
+8
+7
+5
+2
+9
+4
+2
+233
+24
+7
+4
+8
+10
+3
+4
+15
+2
+16
+3
+3
+13
+12
+7
+5
+4
+207
+4
+2
+4
+27
+15
+2
+5
+2
+25
+6
+5
+5
+6
+13
+6
+18
+6
+4
+12
+225
+10
+7
+5
+2
+2
+11
+4
+14
+21
+8
+10
+3
+5
+4
+232
+2
+5
+5
+3
+7
+17
+11
+6
+6
+23
+4
+6
+3
+5
+4
+2
+17
+3
+6
+5
+8
+3
+2
+2
+14
+9
+4
+4
+2
+5
+5
+3
+7
+6
+12
+6
+10
+3
+6
+2
+2
+19
+5
+4
+4
+9
+2
+4
+13
+3
+5
+6
+3
+6
+5
+4
+9
+6
+3
+5
+7
+3
+6
+6
+4
+3
+10
+6
+3
+221
+3
+5
+3
+6
+4
+8
+5
+3
+6
+4
+4
+2
+54
+5
+6
+11
+3
+3
+4
+4
+4
+3
+7
+3
+11
+11
+7
+10
+6
+13
+223
+213
+15
+231
+7
+3
+7
+228
+2
+3
+4
+4
+5
+6
+7
+4
+13
+3
+4
+5
+3
+6
+4
+6
+7
+2
+4
+3
+4
+3
+3
+6
+3
+7
+3
+5
+18
+5
+6
+8
+10
+3
+3
+3
+2
+4
+2
+4
+4
+5
+6
+6
+4
+10
+13
+3
+12
+5
+12
+16
+8
+4
+19
+11
+2
+4
+5
+6
+8
+5
+6
+4
+18
+10
+4
+2
+216
+6
+6
+6
+2
+4
+12
+8
+3
+11
+5
+6
+14
+5
+3
+13
+4
+5
+4
+5
+3
+28
+6
+3
+7
+219
+3
+9
+7
+3
+10
+6
+3
+4
+19
+5
+7
+11
+6
+15
+19
+4
+13
+11
+3
+7
+5
+10
+2
+8
+11
+2
+6
+4
+6
+24
+6
+3
+3
+3
+3
+6
+18
+4
+11
+4
+2
+5
+10
+8
+3
+9
+5
+3
+4
+5
+6
+2
+5
+7
+4
+4
+14
+6
+4
+4
+5
+5
+7
+2
+4
+3
+7
+3
+3
+6
+4
+5
+4
+4
+4
+3
+3
+3
+3
+8
+14
+2
+3
+5
+3
+2
+4
+5
+3
+7
+3
+3
+18
+3
+4
+4
+5
+7
+3
+3
+3
+13
+5
+4
+8
+211
+5
+5
+3
+5
+2
+5
+4
+2
+655
+6
+3
+5
+11
+2
+5
+3
+12
+9
+15
+11
+5
+12
+217
+2
+6
+17
+3
+3
+207
+5
+5
+4
+5
+9
+3
+2
+8
+5
+4
+3
+2
+5
+12
+4
+14
+5
+4
+2
+13
+5
+8
+4
+225
+4
+3
+4
+5
+4
+3
+3
+6
+23
+9
+2
+6
+7
+233
+4
+4
+6
+18
+3
+4
+6
+3
+4
+4
+2
+3
+7
+4
+13
+227
+4
+3
+5
+4
+2
+12
+9
+17
+3
+7
+14
+6
+4
+5
+21
+4
+8
+9
+2
+9
+25
+16
+3
+6
+4
+7
+8
+5
+2
+3
+5
+4
+3
+3
+5
+3
+3
+3
+2
+3
+19
+2
+4
+3
+4
+2
+3
+4
+4
+2
+4
+3
+3
+3
+2
+6
+3
+17
+5
+6
+4
+3
+13
+5
+3
+3
+3
+4
+9
+4
+2
+14
+12
+4
+5
+24
+4
+3
+37
+12
+11
+21
+3
+4
+3
+13
+4
+2
+3
+15
+4
+11
+4
+4
+3
+8
+3
+4
+4
+12
+8
+5
+3
+3
+4
+2
+220
+3
+5
+223
+3
+3
+3
+10
+3
+15
+4
+241
+9
+7
+3
+6
+6
+23
+4
+13
+7
+3
+4
+7
+4
+9
+3
+3
+4
+10
+5
+5
+1
+5
+24
+2
+4
+5
+5
+6
+14
+3
+8
+2
+3
+5
+13
+13
+3
+5
+2
+3
+15
+3
+4
+2
+10
+4
+4
+4
+5
+5
+3
+5
+3
+4
+7
+4
+27
+3
+6
+4
+15
+3
+5
+6
+6
+5
+4
+8
+3
+9
+2
+6
+3
+4
+3
+7
+4
+18
+3
+11
+3
+3
+8
+9
+7
+24
+3
+219
+7
+10
+4
+5
+9
+12
+2
+5
+4
+4
+4
+3
+3
+19
+5
+8
+16
+8
+6
+22
+3
+23
+3
+242
+9
+4
+3
+3
+5
+7
+3
+3
+5
+8
+3
+7
+5
+14
+8
+10
+3
+4
+3
+7
+4
+6
+7
+4
+10
+4
+3
+11
+3
+7
+10
+3
+13
+6
+8
+12
+10
+5
+7
+9
+3
+4
+7
+7
+10
+8
+30
+9
+19
+4
+3
+19
+15
+4
+13
+3
+215
+223
+4
+7
+4
+8
+17
+16
+3
+7
+6
+5
+5
+4
+12
+3
+7
+4
+4
+13
+4
+5
+2
+5
+6
+5
+6
+6
+7
+10
+18
+23
+9
+3
+3
+6
+5
+2
+4
+2
+7
+3
+3
+2
+5
+5
+14
+10
+224
+6
+3
+4
+3
+7
+5
+9
+3
+6
+4
+2
+5
+11
+4
+3
+3
+2
+8
+4
+7
+4
+10
+7
+3
+3
+18
+18
+17
+3
+3
+3
+4
+5
+3
+3
+4
+12
+7
+3
+11
+13
+5
+4
+7
+13
+5
+4
+11
+3
+12
+3
+6
+4
+4
+21
+4
+6
+9
+5
+3
+10
+8
+4
+6
+4
+4
+6
+5
+4
+8
+6
+4
+6
+4
+4
+5
+9
+6
+3
+4
+2
+9
+3
+18
+2
+4
+3
+13
+3
+6
+6
+8
+7
+9
+3
+2
+16
+3
+4
+6
+3
+2
+33
+22
+14
+4
+9
+12
+4
+5
+6
+3
+23
+9
+4
+3
+5
+5
+3
+4
+5
+3
+5
+3
+10
+4
+5
+5
+8
+4
+4
+6
+8
+5
+4
+3
+4
+6
+3
+3
+3
+5
+9
+12
+6
+5
+9
+3
+5
+3
+2
+2
+2
+18
+3
+2
+21
+2
+5
+4
+6
+4
+5
+10
+3
+9
+3
+2
+10
+7
+3
+6
+6
+4
+4
+8
+12
+7
+3
+7
+3
+3
+9
+3
+4
+5
+4
+4
+5
+5
+10
+15
+4
+4
+14
+6
+227
+3
+14
+5
+216
+22
+5
+4
+2
+2
+6
+3
+4
+2
+9
+9
+4
+3
+28
+13
+11
+4
+5
+3
+3
+2
+3
+3
+5
+3
+4
+3
+5
+23
+26
+3
+4
+5
+6
+4
+6
+3
+5
+5
+3
+4
+3
+2
+2
+2
+7
+14
+3
+6
+7
+17
+2
+2
+15
+14
+16
+4
+6
+7
+13
+6
+4
+5
+6
+16
+3
+3
+28
+3
+6
+15
+3
+9
+2
+4
+6
+3
+3
+22
+4
+12
+6
+7
+2
+5
+4
+10
+3
+16
+6
+9
+2
+5
+12
+7
+5
+5
+5
+5
+2
+11
+9
+17
+4
+3
+11
+7
+3
+5
+15
+4
+3
+4
+211
+8
+7
+5
+4
+7
+6
+7
+6
+3
+6
+5
+6
+5
+3
+4
+4
+26
+4
+6
+10
+4
+4
+3
+2
+3
+3
+4
+5
+9
+3
+9
+4
+4
+5
+5
+8
+2
+4
+2
+3
+8
+4
+11
+19
+5
+8
+6
+3
+5
+6
+12
+3
+2
+4
+16
+12
+3
+4
+4
+8
+6
+5
+6
+6
+219
+8
+222
+6
+16
+3
+13
+19
+5
+4
+3
+11
+6
+10
+4
+7
+7
+12
+5
+3
+3
+5
+6
+10
+3
+8
+2
+5
+4
+7
+2
+4
+4
+2
+12
+9
+6
+4
+2
+40
+2
+4
+10
+4
+223
+4
+2
+20
+6
+7
+24
+5
+4
+5
+2
+20
+16
+6
+5
+13
+2
+3
+3
+19
+3
+2
+4
+5
+6
+7
+11
+12
+5
+6
+7
+7
+3
+5
+3
+5
+3
+14
+3
+4
+4
+2
+11
+1
+7
+3
+9
+6
+11
+12
+5
+8
+6
+221
+4
+2
+12
+4
+3
+15
+4
+5
+226
+7
+218
+7
+5
+4
+5
+18
+4
+5
+9
+4
+4
+2
+9
+18
+18
+9
+5
+6
+6
+3
+3
+7
+3
+5
+4
+4
+4
+12
+3
+6
+31
+5
+4
+7
+3
+6
+5
+6
+5
+11
+2
+2
+11
+11
+6
+7
+5
+8
+7
+10
+5
+23
+7
+4
+3
+5
+34
+2
+5
+23
+7
+3
+6
+8
+4
+4
+4
+2
+5
+3
+8
+5
+4
+8
+25
+2
+3
+17
+8
+3
+4
+8
+7
+3
+15
+6
+5
+7
+21
+9
+5
+6
+6
+5
+3
+2
+3
+10
+3
+6
+3
+14
+7
+4
+4
+8
+7
+8
+2
+6
+12
+4
+213
+6
+5
+21
+8
+2
+5
+23
+3
+11
+2
+3
+6
+25
+2
+3
+6
+7
+6
+6
+4
+4
+6
+3
+17
+9
+7
+6
+4
+3
+10
+7
+2
+3
+3
+3
+11
+8
+3
+7
+6
+4
+14
+36
+3
+4
+3
+3
+22
+13
+21
+4
+2
+7
+4
+4
+17
+15
+3
+7
+11
+2
+4
+7
+6
+209
+6
+3
+2
+2
+24
+4
+9
+4
+3
+3
+3
+29
+2
+2
+4
+3
+3
+5
+4
+6
+3
+3
+2
+4
diff --git a/vendor/github.com/beorn7/perks/quantile/stream.go b/vendor/github.com/beorn7/perks/quantile/stream.go
new file mode 100644 (file)
index 0000000..587b1fc
--- /dev/null
@@ -0,0 +1,292 @@
+// Package quantile computes approximate quantiles over an unbounded data
+// stream within low memory and CPU bounds.
+//
+// A small amount of accuracy is traded to achieve the above properties.
+//
+// Multiple streams can be merged before calling Query to generate a single set
+// of results. This is meaningful when the streams represent the same type of
+// data. See Merge and Samples.
+//
+// For more detailed information about the algorithm used, see:
+//
+// Effective Computation of Biased Quantiles over Data Streams
+//
+// http://www.cs.rutgers.edu/~muthu/bquant.pdf
+package quantile
+
+import (
+       "math"
+       "sort"
+)
+
+// Sample holds an observed value and meta information for compression. JSON
+// tags have been added for convenience.
+type Sample struct {
+       Value float64 `json:",string"`
+       Width float64 `json:",string"`
+       Delta float64 `json:",string"`
+}
+
+// Samples represents a slice of samples. It implements sort.Interface.
+type Samples []Sample
+
+func (a Samples) Len() int           { return len(a) }
+func (a Samples) Less(i, j int) bool { return a[i].Value < a[j].Value }
+func (a Samples) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }
+
+type invariant func(s *stream, r float64) float64
+
+// NewLowBiased returns an initialized Stream for low-biased quantiles
+// (e.g. 0.01, 0.1, 0.5) where the needed quantiles are not known a priori, but
+// error guarantees can still be given even for the lower ranks of the data
+// distribution.
+//
+// The provided epsilon is a relative error, i.e. the true quantile of a value
+// returned by a query is guaranteed to be within (1±Epsilon)*Quantile.
+//
+// See http://www.cs.rutgers.edu/~muthu/bquant.pdf for time, space, and error
+// properties.
+func NewLowBiased(epsilon float64) *Stream {
+       ƒ := func(s *stream, r float64) float64 {
+               return 2 * epsilon * r
+       }
+       return newStream(ƒ)
+}
+
+// NewHighBiased returns an initialized Stream for high-biased quantiles
+// (e.g. 0.01, 0.1, 0.5) where the needed quantiles are not known a priori, but
+// error guarantees can still be given even for the higher ranks of the data
+// distribution.
+//
+// The provided epsilon is a relative error, i.e. the true quantile of a value
+// returned by a query is guaranteed to be within 1-(1±Epsilon)*(1-Quantile).
+//
+// See http://www.cs.rutgers.edu/~muthu/bquant.pdf for time, space, and error
+// properties.
+func NewHighBiased(epsilon float64) *Stream {
+       ƒ := func(s *stream, r float64) float64 {
+               return 2 * epsilon * (s.n - r)
+       }
+       return newStream(ƒ)
+}
+
+// NewTargeted returns an initialized Stream concerned with a particular set of
+// quantile values that are supplied a priori. Knowing these a priori reduces
+// space and computation time. The targets map maps the desired quantiles to
+// their absolute errors, i.e. the true quantile of a value returned by a query
+// is guaranteed to be within (Quantile±Epsilon).
+//
+// See http://www.cs.rutgers.edu/~muthu/bquant.pdf for time, space, and error properties.
+func NewTargeted(targets map[float64]float64) *Stream {
+       ƒ := func(s *stream, r float64) float64 {
+               var m = math.MaxFloat64
+               var f float64
+               for quantile, epsilon := range targets {
+                       if quantile*s.n <= r {
+                               f = (2 * epsilon * r) / quantile
+                       } else {
+                               f = (2 * epsilon * (s.n - r)) / (1 - quantile)
+                       }
+                       if f < m {
+                               m = f
+                       }
+               }
+               return m
+       }
+       return newStream(ƒ)
+}
+
+// Stream computes quantiles for a stream of float64s. It is not thread-safe by
+// design. Take care when using across multiple goroutines.
+type Stream struct {
+       *stream
+       b      Samples
+       sorted bool
+}
+
+func newStream(ƒ invariant) *Stream {
+       x := &stream{ƒ: ƒ}
+       return &Stream{x, make(Samples, 0, 500), true}
+}
+
+// Insert inserts v into the stream.
+func (s *Stream) Insert(v float64) {
+       s.insert(Sample{Value: v, Width: 1})
+}
+
+func (s *Stream) insert(sample Sample) {
+       s.b = append(s.b, sample)
+       s.sorted = false
+       if len(s.b) == cap(s.b) {
+               s.flush()
+       }
+}
+
+// Query returns the computed qth percentiles value. If s was created with
+// NewTargeted, and q is not in the set of quantiles provided a priori, Query
+// will return an unspecified result.
+func (s *Stream) Query(q float64) float64 {
+       if !s.flushed() {
+               // Fast path when there hasn't been enough data for a flush;
+               // this also yields better accuracy for small sets of data.
+               l := len(s.b)
+               if l == 0 {
+                       return 0
+               }
+               i := int(float64(l) * q)
+               if i > 0 {
+                       i -= 1
+               }
+               s.maybeSort()
+               return s.b[i].Value
+       }
+       s.flush()
+       return s.stream.query(q)
+}
+
+// Merge merges samples into the underlying streams samples. This is handy when
+// merging multiple streams from separate threads, database shards, etc.
+//
+// ATTENTION: This method is broken and does not yield correct results. The
+// underlying algorithm is not capable of merging streams correctly.
+func (s *Stream) Merge(samples Samples) {
+       sort.Sort(samples)
+       s.stream.merge(samples)
+}
+
+// Reset reinitializes and clears the list reusing the samples buffer memory.
+func (s *Stream) Reset() {
+       s.stream.reset()
+       s.b = s.b[:0]
+}
+
+// Samples returns stream samples held by s.
+func (s *Stream) Samples() Samples {
+       if !s.flushed() {
+               return s.b
+       }
+       s.flush()
+       return s.stream.samples()
+}
+
+// Count returns the total number of samples observed in the stream
+// since initialization.
+func (s *Stream) Count() int {
+       return len(s.b) + s.stream.count()
+}
+
+func (s *Stream) flush() {
+       s.maybeSort()
+       s.stream.merge(s.b)
+       s.b = s.b[:0]
+}
+
+func (s *Stream) maybeSort() {
+       if !s.sorted {
+               s.sorted = true
+               sort.Sort(s.b)
+       }
+}
+
+func (s *Stream) flushed() bool {
+       return len(s.stream.l) > 0
+}
+
+type stream struct {
+       n float64
+       l []Sample
+       ƒ invariant
+}
+
+func (s *stream) reset() {
+       s.l = s.l[:0]
+       s.n = 0
+}
+
+func (s *stream) insert(v float64) {
+       s.merge(Samples{{v, 1, 0}})
+}
+
+func (s *stream) merge(samples Samples) {
+       // TODO(beorn7): This tries to merge not only individual samples, but
+       // whole summaries. The paper doesn't mention merging summaries at
+       // all. Unittests show that the merging is inaccurate. Find out how to
+       // do merges properly.
+       var r float64
+       i := 0
+       for _, sample := range samples {
+               for ; i < len(s.l); i++ {
+                       c := s.l[i]
+                       if c.Value > sample.Value {
+                               // Insert at position i.
+                               s.l = append(s.l, Sample{})
+                               copy(s.l[i+1:], s.l[i:])
+                               s.l[i] = Sample{
+                                       sample.Value,
+                                       sample.Width,
+                                       math.Max(sample.Delta, math.Floor(s.ƒ(s, r))-1),
+                                       // TODO(beorn7): How to calculate delta correctly?
+                               }
+                               i++
+                               goto inserted
+                       }
+                       r += c.Width
+               }
+               s.l = append(s.l, Sample{sample.Value, sample.Width, 0})
+               i++
+       inserted:
+               s.n += sample.Width
+               r += sample.Width
+       }
+       s.compress()
+}
+
+func (s *stream) count() int {
+       return int(s.n)
+}
+
+func (s *stream) query(q float64) float64 {
+       t := math.Ceil(q * s.n)
+       t += math.Ceil(s.ƒ(s, t) / 2)
+       p := s.l[0]
+       var r float64
+       for _, c := range s.l[1:] {
+               r += p.Width
+               if r+c.Width+c.Delta > t {
+                       return p.Value
+               }
+               p = c
+       }
+       return p.Value
+}
+
+func (s *stream) compress() {
+       if len(s.l) < 2 {
+               return
+       }
+       x := s.l[len(s.l)-1]
+       xi := len(s.l) - 1
+       r := s.n - 1 - x.Width
+
+       for i := len(s.l) - 2; i >= 0; i-- {
+               c := s.l[i]
+               if c.Width+x.Width+x.Delta <= s.ƒ(s, r) {
+                       x.Width += c.Width
+                       s.l[xi] = x
+                       // Remove element at i.
+                       copy(s.l[i:], s.l[i+1:])
+                       s.l = s.l[:len(s.l)-1]
+                       xi -= 1
+               } else {
+                       x = c
+                       xi = i
+               }
+               r -= c.Width
+       }
+}
+
+func (s *stream) samples() Samples {
+       samples := make(Samples, len(s.l))
+       copy(samples, s.l)
+       return samples
+}
diff --git a/vendor/github.com/golang/protobuf/LICENSE b/vendor/github.com/golang/protobuf/LICENSE
new file mode 100644 (file)
index 0000000..1b1b192
--- /dev/null
@@ -0,0 +1,31 @@
+Go support for Protocol Buffers - Google's data interchange format
+
+Copyright 2010 The Go Authors.  All rights reserved.
+https://github.com/golang/protobuf
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+    * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
diff --git a/vendor/github.com/golang/protobuf/proto/Makefile b/vendor/github.com/golang/protobuf/proto/Makefile
new file mode 100644 (file)
index 0000000..e2e0651
--- /dev/null
@@ -0,0 +1,43 @@
+# Go support for Protocol Buffers - Google's data interchange format
+#
+# Copyright 2010 The Go Authors.  All rights reserved.
+# https://github.com/golang/protobuf
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+install:
+       go install
+
+test: install generate-test-pbs
+       go test
+
+
+generate-test-pbs:
+       make install
+       make -C testdata
+       protoc --go_out=Mtestdata/test.proto=github.com/golang/protobuf/proto/testdata,Mgoogle/protobuf/any.proto=github.com/golang/protobuf/ptypes/any:. proto3_proto/proto3.proto
+       make
diff --git a/vendor/github.com/golang/protobuf/proto/clone.go b/vendor/github.com/golang/protobuf/proto/clone.go
new file mode 100644 (file)
index 0000000..e98ddec
--- /dev/null
@@ -0,0 +1,223 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2011 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Protocol buffer deep copy and merge.
+// TODO: RawMessage.
+
+package proto
+
+import (
+       "log"
+       "reflect"
+       "strings"
+)
+
+// Clone returns a deep copy of a protocol buffer.
+func Clone(pb Message) Message {
+       in := reflect.ValueOf(pb)
+       if in.IsNil() {
+               return pb
+       }
+
+       out := reflect.New(in.Type().Elem())
+       // out is empty so a merge is a deep copy.
+       mergeStruct(out.Elem(), in.Elem())
+       return out.Interface().(Message)
+}
+
+// Merge merges src into dst.
+// Required and optional fields that are set in src will be set to that value in dst.
+// Elements of repeated fields will be appended.
+// Merge panics if src and dst are not the same type, or if dst is nil.
+func Merge(dst, src Message) {
+       in := reflect.ValueOf(src)
+       out := reflect.ValueOf(dst)
+       if out.IsNil() {
+               panic("proto: nil destination")
+       }
+       if in.Type() != out.Type() {
+               // Explicit test prior to mergeStruct so that mistyped nils will fail
+               panic("proto: type mismatch")
+       }
+       if in.IsNil() {
+               // Merging nil into non-nil is a quiet no-op
+               return
+       }
+       mergeStruct(out.Elem(), in.Elem())
+}
+
+func mergeStruct(out, in reflect.Value) {
+       sprop := GetProperties(in.Type())
+       for i := 0; i < in.NumField(); i++ {
+               f := in.Type().Field(i)
+               if strings.HasPrefix(f.Name, "XXX_") {
+                       continue
+               }
+               mergeAny(out.Field(i), in.Field(i), false, sprop.Prop[i])
+       }
+
+       if emIn, ok := in.Addr().Interface().(extendableProto); ok {
+               emOut := out.Addr().Interface().(extendableProto)
+               mergeExtension(emOut.ExtensionMap(), emIn.ExtensionMap())
+       }
+
+       uf := in.FieldByName("XXX_unrecognized")
+       if !uf.IsValid() {
+               return
+       }
+       uin := uf.Bytes()
+       if len(uin) > 0 {
+               out.FieldByName("XXX_unrecognized").SetBytes(append([]byte(nil), uin...))
+       }
+}
+
+// mergeAny performs a merge between two values of the same type.
+// viaPtr indicates whether the values were indirected through a pointer (implying proto2).
+// prop is set if this is a struct field (it may be nil).
+func mergeAny(out, in reflect.Value, viaPtr bool, prop *Properties) {
+       if in.Type() == protoMessageType {
+               if !in.IsNil() {
+                       if out.IsNil() {
+                               out.Set(reflect.ValueOf(Clone(in.Interface().(Message))))
+                       } else {
+                               Merge(out.Interface().(Message), in.Interface().(Message))
+                       }
+               }
+               return
+       }
+       switch in.Kind() {
+       case reflect.Bool, reflect.Float32, reflect.Float64, reflect.Int32, reflect.Int64,
+               reflect.String, reflect.Uint32, reflect.Uint64:
+               if !viaPtr && isProto3Zero(in) {
+                       return
+               }
+               out.Set(in)
+       case reflect.Interface:
+               // Probably a oneof field; copy non-nil values.
+               if in.IsNil() {
+                       return
+               }
+               // Allocate destination if it is not set, or set to a different type.
+               // Otherwise we will merge as normal.
+               if out.IsNil() || out.Elem().Type() != in.Elem().Type() {
+                       out.Set(reflect.New(in.Elem().Elem().Type())) // interface -> *T -> T -> new(T)
+               }
+               mergeAny(out.Elem(), in.Elem(), false, nil)
+       case reflect.Map:
+               if in.Len() == 0 {
+                       return
+               }
+               if out.IsNil() {
+                       out.Set(reflect.MakeMap(in.Type()))
+               }
+               // For maps with value types of *T or []byte we need to deep copy each value.
+               elemKind := in.Type().Elem().Kind()
+               for _, key := range in.MapKeys() {
+                       var val reflect.Value
+                       switch elemKind {
+                       case reflect.Ptr:
+                               val = reflect.New(in.Type().Elem().Elem())
+                               mergeAny(val, in.MapIndex(key), false, nil)
+                       case reflect.Slice:
+                               val = in.MapIndex(key)
+                               val = reflect.ValueOf(append([]byte{}, val.Bytes()...))
+                       default:
+                               val = in.MapIndex(key)
+                       }
+                       out.SetMapIndex(key, val)
+               }
+       case reflect.Ptr:
+               if in.IsNil() {
+                       return
+               }
+               if out.IsNil() {
+                       out.Set(reflect.New(in.Elem().Type()))
+               }
+               mergeAny(out.Elem(), in.Elem(), true, nil)
+       case reflect.Slice:
+               if in.IsNil() {
+                       return
+               }
+               if in.Type().Elem().Kind() == reflect.Uint8 {
+                       // []byte is a scalar bytes field, not a repeated field.
+
+                       // Edge case: if this is in a proto3 message, a zero length
+                       // bytes field is considered the zero value, and should not
+                       // be merged.
+                       if prop != nil && prop.proto3 && in.Len() == 0 {
+                               return
+                       }
+
+                       // Make a deep copy.
+                       // Append to []byte{} instead of []byte(nil) so that we never end up
+                       // with a nil result.
+                       out.SetBytes(append([]byte{}, in.Bytes()...))
+                       return
+               }
+               n := in.Len()
+               if out.IsNil() {
+                       out.Set(reflect.MakeSlice(in.Type(), 0, n))
+               }
+               switch in.Type().Elem().Kind() {
+               case reflect.Bool, reflect.Float32, reflect.Float64, reflect.Int32, reflect.Int64,
+                       reflect.String, reflect.Uint32, reflect.Uint64:
+                       out.Set(reflect.AppendSlice(out, in))
+               default:
+                       for i := 0; i < n; i++ {
+                               x := reflect.Indirect(reflect.New(in.Type().Elem()))
+                               mergeAny(x, in.Index(i), false, nil)
+                               out.Set(reflect.Append(out, x))
+                       }
+               }
+       case reflect.Struct:
+               mergeStruct(out, in)
+       default:
+               // unknown type, so not a protocol buffer
+               log.Printf("proto: don't know how to copy %v", in)
+       }
+}
+
+func mergeExtension(out, in map[int32]Extension) {
+       for extNum, eIn := range in {
+               eOut := Extension{desc: eIn.desc}
+               if eIn.value != nil {
+                       v := reflect.New(reflect.TypeOf(eIn.value)).Elem()
+                       mergeAny(v, reflect.ValueOf(eIn.value), false, nil)
+                       eOut.value = v.Interface()
+               }
+               if eIn.enc != nil {
+                       eOut.enc = make([]byte, len(eIn.enc))
+                       copy(eOut.enc, eIn.enc)
+               }
+
+               out[extNum] = eOut
+       }
+}
diff --git a/vendor/github.com/golang/protobuf/proto/decode.go b/vendor/github.com/golang/protobuf/proto/decode.go
new file mode 100644 (file)
index 0000000..f94b9f4
--- /dev/null
@@ -0,0 +1,868 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto
+
+/*
+ * Routines for decoding protocol buffer data to construct in-memory representations.
+ */
+
+import (
+       "errors"
+       "fmt"
+       "io"
+       "os"
+       "reflect"
+)
+
+// errOverflow is returned when an integer is too large to be represented.
+var errOverflow = errors.New("proto: integer overflow")
+
+// ErrInternalBadWireType is returned by generated code when an incorrect
+// wire type is encountered. It does not get returned to user code.
+var ErrInternalBadWireType = errors.New("proto: internal error: bad wiretype for oneof")
+
+// The fundamental decoders that interpret bytes on the wire.
+// Those that take integer types all return uint64 and are
+// therefore of type valueDecoder.
+
+// DecodeVarint reads a varint-encoded integer from the slice.
+// It returns the integer and the number of bytes consumed, or
+// zero if there is not enough.
+// This is the format for the
+// int32, int64, uint32, uint64, bool, and enum
+// protocol buffer types.
+func DecodeVarint(buf []byte) (x uint64, n int) {
+       // x, n already 0
+       for shift := uint(0); shift < 64; shift += 7 {
+               if n >= len(buf) {
+                       return 0, 0
+               }
+               b := uint64(buf[n])
+               n++
+               x |= (b & 0x7F) << shift
+               if (b & 0x80) == 0 {
+                       return x, n
+               }
+       }
+
+       // The number is too large to represent in a 64-bit value.
+       return 0, 0
+}
+
+// DecodeVarint reads a varint-encoded integer from the Buffer.
+// This is the format for the
+// int32, int64, uint32, uint64, bool, and enum
+// protocol buffer types.
+func (p *Buffer) DecodeVarint() (x uint64, err error) {
+       // x, err already 0
+
+       i := p.index
+       l := len(p.buf)
+
+       for shift := uint(0); shift < 64; shift += 7 {
+               if i >= l {
+                       err = io.ErrUnexpectedEOF
+                       return
+               }
+               b := p.buf[i]
+               i++
+               x |= (uint64(b) & 0x7F) << shift
+               if b < 0x80 {
+                       p.index = i
+                       return
+               }
+       }
+
+       // The number is too large to represent in a 64-bit value.
+       err = errOverflow
+       return
+}
+
+// DecodeFixed64 reads a 64-bit integer from the Buffer.
+// This is the format for the
+// fixed64, sfixed64, and double protocol buffer types.
+func (p *Buffer) DecodeFixed64() (x uint64, err error) {
+       // x, err already 0
+       i := p.index + 8
+       if i < 0 || i > len(p.buf) {
+               err = io.ErrUnexpectedEOF
+               return
+       }
+       p.index = i
+
+       x = uint64(p.buf[i-8])
+       x |= uint64(p.buf[i-7]) << 8
+       x |= uint64(p.buf[i-6]) << 16
+       x |= uint64(p.buf[i-5]) << 24
+       x |= uint64(p.buf[i-4]) << 32
+       x |= uint64(p.buf[i-3]) << 40
+       x |= uint64(p.buf[i-2]) << 48
+       x |= uint64(p.buf[i-1]) << 56
+       return
+}
+
+// DecodeFixed32 reads a 32-bit integer from the Buffer.
+// This is the format for the
+// fixed32, sfixed32, and float protocol buffer types.
+func (p *Buffer) DecodeFixed32() (x uint64, err error) {
+       // x, err already 0
+       i := p.index + 4
+       if i < 0 || i > len(p.buf) {
+               err = io.ErrUnexpectedEOF
+               return
+       }
+       p.index = i
+
+       x = uint64(p.buf[i-4])
+       x |= uint64(p.buf[i-3]) << 8
+       x |= uint64(p.buf[i-2]) << 16
+       x |= uint64(p.buf[i-1]) << 24
+       return
+}
+
+// DecodeZigzag64 reads a zigzag-encoded 64-bit integer
+// from the Buffer.
+// This is the format used for the sint64 protocol buffer type.
+func (p *Buffer) DecodeZigzag64() (x uint64, err error) {
+       x, err = p.DecodeVarint()
+       if err != nil {
+               return
+       }
+       x = (x >> 1) ^ uint64((int64(x&1)<<63)>>63)
+       return
+}
+
+// DecodeZigzag32 reads a zigzag-encoded 32-bit integer
+// from  the Buffer.
+// This is the format used for the sint32 protocol buffer type.
+func (p *Buffer) DecodeZigzag32() (x uint64, err error) {
+       x, err = p.DecodeVarint()
+       if err != nil {
+               return
+       }
+       x = uint64((uint32(x) >> 1) ^ uint32((int32(x&1)<<31)>>31))
+       return
+}
+
+// These are not ValueDecoders: they produce an array of bytes or a string.
+// bytes, embedded messages
+
+// DecodeRawBytes reads a count-delimited byte buffer from the Buffer.
+// This is the format used for the bytes protocol buffer
+// type and for embedded messages.
+func (p *Buffer) DecodeRawBytes(alloc bool) (buf []byte, err error) {
+       n, err := p.DecodeVarint()
+       if err != nil {
+               return nil, err
+       }
+
+       nb := int(n)
+       if nb < 0 {
+               return nil, fmt.Errorf("proto: bad byte length %d", nb)
+       }
+       end := p.index + nb
+       if end < p.index || end > len(p.buf) {
+               return nil, io.ErrUnexpectedEOF
+       }
+
+       if !alloc {
+               // todo: check if can get more uses of alloc=false
+               buf = p.buf[p.index:end]
+               p.index += nb
+               return
+       }
+
+       buf = make([]byte, nb)
+       copy(buf, p.buf[p.index:])
+       p.index += nb
+       return
+}
+
+// DecodeStringBytes reads an encoded string from the Buffer.
+// This is the format used for the proto2 string type.
+func (p *Buffer) DecodeStringBytes() (s string, err error) {
+       buf, err := p.DecodeRawBytes(false)
+       if err != nil {
+               return
+       }
+       return string(buf), nil
+}
+
+// Skip the next item in the buffer. Its wire type is decoded and presented as an argument.
+// If the protocol buffer has extensions, and the field matches, add it as an extension.
+// Otherwise, if the XXX_unrecognized field exists, append the skipped data there.
+func (o *Buffer) skipAndSave(t reflect.Type, tag, wire int, base structPointer, unrecField field) error {
+       oi := o.index
+
+       err := o.skip(t, tag, wire)
+       if err != nil {
+               return err
+       }
+
+       if !unrecField.IsValid() {
+               return nil
+       }
+
+       ptr := structPointer_Bytes(base, unrecField)
+
+       // Add the skipped field to struct field
+       obuf := o.buf
+
+       o.buf = *ptr
+       o.EncodeVarint(uint64(tag<<3 | wire))
+       *ptr = append(o.buf, obuf[oi:o.index]...)
+
+       o.buf = obuf
+
+       return nil
+}
+
+// Skip the next item in the buffer. Its wire type is decoded and presented as an argument.
+func (o *Buffer) skip(t reflect.Type, tag, wire int) error {
+
+       var u uint64
+       var err error
+
+       switch wire {
+       case WireVarint:
+               _, err = o.DecodeVarint()
+       case WireFixed64:
+               _, err = o.DecodeFixed64()
+       case WireBytes:
+               _, err = o.DecodeRawBytes(false)
+       case WireFixed32:
+               _, err = o.DecodeFixed32()
+       case WireStartGroup:
+               for {
+                       u, err = o.DecodeVarint()
+                       if err != nil {
+                               break
+                       }
+                       fwire := int(u & 0x7)
+                       if fwire == WireEndGroup {
+                               break
+                       }
+                       ftag := int(u >> 3)
+                       err = o.skip(t, ftag, fwire)
+                       if err != nil {
+                               break
+                       }
+               }
+       default:
+               err = fmt.Errorf("proto: can't skip unknown wire type %d for %s", wire, t)
+       }
+       return err
+}
+
+// Unmarshaler is the interface representing objects that can
+// unmarshal themselves.  The method should reset the receiver before
+// decoding starts.  The argument points to data that may be
+// overwritten, so implementations should not keep references to the
+// buffer.
+type Unmarshaler interface {
+       Unmarshal([]byte) error
+}
+
+// Unmarshal parses the protocol buffer representation in buf and places the
+// decoded result in pb.  If the struct underlying pb does not match
+// the data in buf, the results can be unpredictable.
+//
+// Unmarshal resets pb before starting to unmarshal, so any
+// existing data in pb is always removed. Use UnmarshalMerge
+// to preserve and append to existing data.
+func Unmarshal(buf []byte, pb Message) error {
+       pb.Reset()
+       return UnmarshalMerge(buf, pb)
+}
+
+// UnmarshalMerge parses the protocol buffer representation in buf and
+// writes the decoded result to pb.  If the struct underlying pb does not match
+// the data in buf, the results can be unpredictable.
+//
+// UnmarshalMerge merges into existing data in pb.
+// Most code should use Unmarshal instead.
+func UnmarshalMerge(buf []byte, pb Message) error {
+       // If the object can unmarshal itself, let it.
+       if u, ok := pb.(Unmarshaler); ok {
+               return u.Unmarshal(buf)
+       }
+       return NewBuffer(buf).Unmarshal(pb)
+}
+
+// DecodeMessage reads a count-delimited message from the Buffer.
+func (p *Buffer) DecodeMessage(pb Message) error {
+       enc, err := p.DecodeRawBytes(false)
+       if err != nil {
+               return err
+       }
+       return NewBuffer(enc).Unmarshal(pb)
+}
+
+// DecodeGroup reads a tag-delimited group from the Buffer.
+func (p *Buffer) DecodeGroup(pb Message) error {
+       typ, base, err := getbase(pb)
+       if err != nil {
+               return err
+       }
+       return p.unmarshalType(typ.Elem(), GetProperties(typ.Elem()), true, base)
+}
+
+// Unmarshal parses the protocol buffer representation in the
+// Buffer and places the decoded result in pb.  If the struct
+// underlying pb does not match the data in the buffer, the results can be
+// unpredictable.
+func (p *Buffer) Unmarshal(pb Message) error {
+       // If the object can unmarshal itself, let it.
+       if u, ok := pb.(Unmarshaler); ok {
+               err := u.Unmarshal(p.buf[p.index:])
+               p.index = len(p.buf)
+               return err
+       }
+
+       typ, base, err := getbase(pb)
+       if err != nil {
+               return err
+       }
+
+       err = p.unmarshalType(typ.Elem(), GetProperties(typ.Elem()), false, base)
+
+       if collectStats {
+               stats.Decode++
+       }
+
+       return err
+}
+
+// unmarshalType does the work of unmarshaling a structure.
+func (o *Buffer) unmarshalType(st reflect.Type, prop *StructProperties, is_group bool, base structPointer) error {
+       var state errorState
+       required, reqFields := prop.reqCount, uint64(0)
+
+       var err error
+       for err == nil && o.index < len(o.buf) {
+               oi := o.index
+               var u uint64
+               u, err = o.DecodeVarint()
+               if err != nil {
+                       break
+               }
+               wire := int(u & 0x7)
+               if wire == WireEndGroup {
+                       if is_group {
+                               return nil // input is satisfied
+                       }
+                       return fmt.Errorf("proto: %s: wiretype end group for non-group", st)
+               }
+               tag := int(u >> 3)
+               if tag <= 0 {
+                       return fmt.Errorf("proto: %s: illegal tag %d (wire type %d)", st, tag, wire)
+               }
+               fieldnum, ok := prop.decoderTags.get(tag)
+               if !ok {
+                       // Maybe it's an extension?
+                       if prop.extendable {
+                               if e := structPointer_Interface(base, st).(extendableProto); isExtensionField(e, int32(tag)) {
+                                       if err = o.skip(st, tag, wire); err == nil {
+                                               ext := e.ExtensionMap()[int32(tag)] // may be missing
+                                               ext.enc = append(ext.enc, o.buf[oi:o.index]...)
+                                               e.ExtensionMap()[int32(tag)] = ext
+                                       }
+                                       continue
+                               }
+                       }
+                       // Maybe it's a oneof?
+                       if prop.oneofUnmarshaler != nil {
+                               m := structPointer_Interface(base, st).(Message)
+                               // First return value indicates whether tag is a oneof field.
+                               ok, err = prop.oneofUnmarshaler(m, tag, wire, o)
+                               if err == ErrInternalBadWireType {
+                                       // Map the error to something more descriptive.
+                                       // Do the formatting here to save generated code space.
+                                       err = fmt.Errorf("bad wiretype for oneof field in %T", m)
+                               }
+                               if ok {
+                                       continue
+                               }
+                       }
+                       err = o.skipAndSave(st, tag, wire, base, prop.unrecField)
+                       continue
+               }
+               p := prop.Prop[fieldnum]
+
+               if p.dec == nil {
+                       fmt.Fprintf(os.Stderr, "proto: no protobuf decoder for %s.%s\n", st, st.Field(fieldnum).Name)
+                       continue
+               }
+               dec := p.dec
+               if wire != WireStartGroup && wire != p.WireType {
+                       if wire == WireBytes && p.packedDec != nil {
+                               // a packable field
+                               dec = p.packedDec
+                       } else {
+                               err = fmt.Errorf("proto: bad wiretype for field %s.%s: got wiretype %d, want %d", st, st.Field(fieldnum).Name, wire, p.WireType)
+                               continue
+                       }
+               }
+               decErr := dec(o, p, base)
+               if decErr != nil && !state.shouldContinue(decErr, p) {
+                       err = decErr
+               }
+               if err == nil && p.Required {
+                       // Successfully decoded a required field.
+                       if tag <= 64 {
+                               // use bitmap for fields 1-64 to catch field reuse.
+                               var mask uint64 = 1 << uint64(tag-1)
+                               if reqFields&mask == 0 {
+                                       // new required field
+                                       reqFields |= mask
+                                       required--
+                               }
+                       } else {
+                               // This is imprecise. It can be fooled by a required field
+                               // with a tag > 64 that is encoded twice; that's very rare.
+                               // A fully correct implementation would require allocating
+                               // a data structure, which we would like to avoid.
+                               required--
+                       }
+               }
+       }
+       if err == nil {
+               if is_group {
+                       return io.ErrUnexpectedEOF
+               }
+               if state.err != nil {
+                       return state.err
+               }
+               if required > 0 {
+                       // Not enough information to determine the exact field. If we use extra
+                       // CPU, we could determine the field only if the missing required field
+                       // has a tag <= 64 and we check reqFields.
+                       return &RequiredNotSetError{"{Unknown}"}
+               }
+       }
+       return err
+}
+
+// Individual type decoders
+// For each,
+//     u is the decoded value,
+//     v is a pointer to the field (pointer) in the struct
+
+// Sizes of the pools to allocate inside the Buffer.
+// The goal is modest amortization and allocation
+// on at least 16-byte boundaries.
+const (
+       boolPoolSize   = 16
+       uint32PoolSize = 8
+       uint64PoolSize = 4
+)
+
+// Decode a bool.
+func (o *Buffer) dec_bool(p *Properties, base structPointer) error {
+       u, err := p.valDec(o)
+       if err != nil {
+               return err
+       }
+       if len(o.bools) == 0 {
+               o.bools = make([]bool, boolPoolSize)
+       }
+       o.bools[0] = u != 0
+       *structPointer_Bool(base, p.field) = &o.bools[0]
+       o.bools = o.bools[1:]
+       return nil
+}
+
+func (o *Buffer) dec_proto3_bool(p *Properties, base structPointer) error {
+       u, err := p.valDec(o)
+       if err != nil {
+               return err
+       }
+       *structPointer_BoolVal(base, p.field) = u != 0
+       return nil
+}
+
+// Decode an int32.
+func (o *Buffer) dec_int32(p *Properties, base structPointer) error {
+       u, err := p.valDec(o)
+       if err != nil {
+               return err
+       }
+       word32_Set(structPointer_Word32(base, p.field), o, uint32(u))
+       return nil
+}
+
+func (o *Buffer) dec_proto3_int32(p *Properties, base structPointer) error {
+       u, err := p.valDec(o)
+       if err != nil {
+               return err
+       }
+       word32Val_Set(structPointer_Word32Val(base, p.field), uint32(u))
+       return nil
+}
+
+// Decode an int64.
+func (o *Buffer) dec_int64(p *Properties, base structPointer) error {
+       u, err := p.valDec(o)
+       if err != nil {
+               return err
+       }
+       word64_Set(structPointer_Word64(base, p.field), o, u)
+       return nil
+}
+
+func (o *Buffer) dec_proto3_int64(p *Properties, base structPointer) error {
+       u, err := p.valDec(o)
+       if err != nil {
+               return err
+       }
+       word64Val_Set(structPointer_Word64Val(base, p.field), o, u)
+       return nil
+}
+
+// Decode a string.
+func (o *Buffer) dec_string(p *Properties, base structPointer) error {
+       s, err := o.DecodeStringBytes()
+       if err != nil {
+               return err
+       }
+       *structPointer_String(base, p.field) = &s
+       return nil
+}
+
+func (o *Buffer) dec_proto3_string(p *Properties, base structPointer) error {
+       s, err := o.DecodeStringBytes()
+       if err != nil {
+               return err
+       }
+       *structPointer_StringVal(base, p.field) = s
+       return nil
+}
+
+// Decode a slice of bytes ([]byte).
+func (o *Buffer) dec_slice_byte(p *Properties, base structPointer) error {
+       b, err := o.DecodeRawBytes(true)
+       if err != nil {
+               return err
+       }
+       *structPointer_Bytes(base, p.field) = b
+       return nil
+}
+
+// Decode a slice of bools ([]bool).
+func (o *Buffer) dec_slice_bool(p *Properties, base structPointer) error {
+       u, err := p.valDec(o)
+       if err != nil {
+               return err
+       }
+       v := structPointer_BoolSlice(base, p.field)
+       *v = append(*v, u != 0)
+       return nil
+}
+
+// Decode a slice of bools ([]bool) in packed format.
+func (o *Buffer) dec_slice_packed_bool(p *Properties, base structPointer) error {
+       v := structPointer_BoolSlice(base, p.field)
+
+       nn, err := o.DecodeVarint()
+       if err != nil {
+               return err
+       }
+       nb := int(nn) // number of bytes of encoded bools
+       fin := o.index + nb
+       if fin < o.index {
+               return errOverflow
+       }
+
+       y := *v
+       for o.index < fin {
+               u, err := p.valDec(o)
+               if err != nil {
+                       return err
+               }
+               y = append(y, u != 0)
+       }
+
+       *v = y
+       return nil
+}
+
+// Decode a slice of int32s ([]int32).
+func (o *Buffer) dec_slice_int32(p *Properties, base structPointer) error {
+       u, err := p.valDec(o)
+       if err != nil {
+               return err
+       }
+       structPointer_Word32Slice(base, p.field).Append(uint32(u))
+       return nil
+}
+
+// Decode a slice of int32s ([]int32) in packed format.
+func (o *Buffer) dec_slice_packed_int32(p *Properties, base structPointer) error {
+       v := structPointer_Word32Slice(base, p.field)
+
+       nn, err := o.DecodeVarint()
+       if err != nil {
+               return err
+       }
+       nb := int(nn) // number of bytes of encoded int32s
+
+       fin := o.index + nb
+       if fin < o.index {
+               return errOverflow
+       }
+       for o.index < fin {
+               u, err := p.valDec(o)
+               if err != nil {
+                       return err
+               }
+               v.Append(uint32(u))
+       }
+       return nil
+}
+
+// Decode a slice of int64s ([]int64).
+func (o *Buffer) dec_slice_int64(p *Properties, base structPointer) error {
+       u, err := p.valDec(o)
+       if err != nil {
+               return err
+       }
+
+       structPointer_Word64Slice(base, p.field).Append(u)
+       return nil
+}
+
+// Decode a slice of int64s ([]int64) in packed format.
+func (o *Buffer) dec_slice_packed_int64(p *Properties, base structPointer) error {
+       v := structPointer_Word64Slice(base, p.field)
+
+       nn, err := o.DecodeVarint()
+       if err != nil {
+               return err
+       }
+       nb := int(nn) // number of bytes of encoded int64s
+
+       fin := o.index + nb
+       if fin < o.index {
+               return errOverflow
+       }
+       for o.index < fin {
+               u, err := p.valDec(o)
+               if err != nil {
+                       return err
+               }
+               v.Append(u)
+       }
+       return nil
+}
+
+// Decode a slice of strings ([]string).
+func (o *Buffer) dec_slice_string(p *Properties, base structPointer) error {
+       s, err := o.DecodeStringBytes()
+       if err != nil {
+               return err
+       }
+       v := structPointer_StringSlice(base, p.field)
+       *v = append(*v, s)
+       return nil
+}
+
+// Decode a slice of slice of bytes ([][]byte).
+func (o *Buffer) dec_slice_slice_byte(p *Properties, base structPointer) error {
+       b, err := o.DecodeRawBytes(true)
+       if err != nil {
+               return err
+       }
+       v := structPointer_BytesSlice(base, p.field)
+       *v = append(*v, b)
+       return nil
+}
+
+// Decode a map field.
+func (o *Buffer) dec_new_map(p *Properties, base structPointer) error {
+       raw, err := o.DecodeRawBytes(false)
+       if err != nil {
+               return err
+       }
+       oi := o.index       // index at the end of this map entry
+       o.index -= len(raw) // move buffer back to start of map entry
+
+       mptr := structPointer_NewAt(base, p.field, p.mtype) // *map[K]V
+       if mptr.Elem().IsNil() {
+               mptr.Elem().Set(reflect.MakeMap(mptr.Type().Elem()))
+       }
+       v := mptr.Elem() // map[K]V
+
+       // Prepare addressable doubly-indirect placeholders for the key and value types.
+       // See enc_new_map for why.
+       keyptr := reflect.New(reflect.PtrTo(p.mtype.Key())).Elem() // addressable *K
+       keybase := toStructPointer(keyptr.Addr())                  // **K
+
+       var valbase structPointer
+       var valptr reflect.Value
+       switch p.mtype.Elem().Kind() {
+       case reflect.Slice:
+               // []byte
+               var dummy []byte
+               valptr = reflect.ValueOf(&dummy)  // *[]byte
+               valbase = toStructPointer(valptr) // *[]byte
+       case reflect.Ptr:
+               // message; valptr is **Msg; need to allocate the intermediate pointer
+               valptr = reflect.New(reflect.PtrTo(p.mtype.Elem())).Elem() // addressable *V
+               valptr.Set(reflect.New(valptr.Type().Elem()))
+               valbase = toStructPointer(valptr)
+       default:
+               // everything else
+               valptr = reflect.New(reflect.PtrTo(p.mtype.Elem())).Elem() // addressable *V
+               valbase = toStructPointer(valptr.Addr())                   // **V
+       }
+
+       // Decode.
+       // This parses a restricted wire format, namely the encoding of a message
+       // with two fields. See enc_new_map for the format.
+       for o.index < oi {
+               // tagcode for key and value properties are always a single byte
+               // because they have tags 1 and 2.
+               tagcode := o.buf[o.index]
+               o.index++
+               switch tagcode {
+               case p.mkeyprop.tagcode[0]:
+                       if err := p.mkeyprop.dec(o, p.mkeyprop, keybase); err != nil {
+                               return err
+                       }
+               case p.mvalprop.tagcode[0]:
+                       if err := p.mvalprop.dec(o, p.mvalprop, valbase); err != nil {
+                               return err
+                       }
+               default:
+                       // TODO: Should we silently skip this instead?
+                       return fmt.Errorf("proto: bad map data tag %d", raw[0])
+               }
+       }
+       keyelem, valelem := keyptr.Elem(), valptr.Elem()
+       if !keyelem.IsValid() {
+               keyelem = reflect.Zero(p.mtype.Key())
+       }
+       if !valelem.IsValid() {
+               valelem = reflect.Zero(p.mtype.Elem())
+       }
+
+       v.SetMapIndex(keyelem, valelem)
+       return nil
+}
+
+// Decode a group.
+func (o *Buffer) dec_struct_group(p *Properties, base structPointer) error {
+       bas := structPointer_GetStructPointer(base, p.field)
+       if structPointer_IsNil(bas) {
+               // allocate new nested message
+               bas = toStructPointer(reflect.New(p.stype))
+               structPointer_SetStructPointer(base, p.field, bas)
+       }
+       return o.unmarshalType(p.stype, p.sprop, true, bas)
+}
+
+// Decode an embedded message.
+func (o *Buffer) dec_struct_message(p *Properties, base structPointer) (err error) {
+       raw, e := o.DecodeRawBytes(false)
+       if e != nil {
+               return e
+       }
+
+       bas := structPointer_GetStructPointer(base, p.field)
+       if structPointer_IsNil(bas) {
+               // allocate new nested message
+               bas = toStructPointer(reflect.New(p.stype))
+               structPointer_SetStructPointer(base, p.field, bas)
+       }
+
+       // If the object can unmarshal itself, let it.
+       if p.isUnmarshaler {
+               iv := structPointer_Interface(bas, p.stype)
+               return iv.(Unmarshaler).Unmarshal(raw)
+       }
+
+       obuf := o.buf
+       oi := o.index
+       o.buf = raw
+       o.index = 0
+
+       err = o.unmarshalType(p.stype, p.sprop, false, bas)
+       o.buf = obuf
+       o.index = oi
+
+       return err
+}
+
+// Decode a slice of embedded messages.
+func (o *Buffer) dec_slice_struct_message(p *Properties, base structPointer) error {
+       return o.dec_slice_struct(p, false, base)
+}
+
+// Decode a slice of embedded groups.
+func (o *Buffer) dec_slice_struct_group(p *Properties, base structPointer) error {
+       return o.dec_slice_struct(p, true, base)
+}
+
+// Decode a slice of structs ([]*struct).
+func (o *Buffer) dec_slice_struct(p *Properties, is_group bool, base structPointer) error {
+       v := reflect.New(p.stype)
+       bas := toStructPointer(v)
+       structPointer_StructPointerSlice(base, p.field).Append(bas)
+
+       if is_group {
+               err := o.unmarshalType(p.stype, p.sprop, is_group, bas)
+               return err
+       }
+
+       raw, err := o.DecodeRawBytes(false)
+       if err != nil {
+               return err
+       }
+
+       // If the object can unmarshal itself, let it.
+       if p.isUnmarshaler {
+               iv := v.Interface()
+               return iv.(Unmarshaler).Unmarshal(raw)
+       }
+
+       obuf := o.buf
+       oi := o.index
+       o.buf = raw
+       o.index = 0
+
+       err = o.unmarshalType(p.stype, p.sprop, is_group, bas)
+
+       o.buf = obuf
+       o.index = oi
+
+       return err
+}
diff --git a/vendor/github.com/golang/protobuf/proto/encode.go b/vendor/github.com/golang/protobuf/proto/encode.go
new file mode 100644 (file)
index 0000000..eb7e047
--- /dev/null
@@ -0,0 +1,1331 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto
+
+/*
+ * Routines for encoding data into the wire format for protocol buffers.
+ */
+
+import (
+       "errors"
+       "fmt"
+       "reflect"
+       "sort"
+)
+
+// RequiredNotSetError is the error returned if Marshal is called with
+// a protocol buffer struct whose required fields have not
+// all been initialized. It is also the error returned if Unmarshal is
+// called with an encoded protocol buffer that does not include all the
+// required fields.
+//
+// When printed, RequiredNotSetError reports the first unset required field in a
+// message. If the field cannot be precisely determined, it is reported as
+// "{Unknown}".
+type RequiredNotSetError struct {
+       field string
+}
+
+func (e *RequiredNotSetError) Error() string {
+       return fmt.Sprintf("proto: required field %q not set", e.field)
+}
+
+var (
+       // errRepeatedHasNil is the error returned if Marshal is called with
+       // a struct with a repeated field containing a nil element.
+       errRepeatedHasNil = errors.New("proto: repeated field has nil element")
+
+       // errOneofHasNil is the error returned if Marshal is called with
+       // a struct with a oneof field containing a nil element.
+       errOneofHasNil = errors.New("proto: oneof field has nil value")
+
+       // ErrNil is the error returned if Marshal is called with nil.
+       ErrNil = errors.New("proto: Marshal called with nil")
+)
+
+// The fundamental encoders that put bytes on the wire.
+// Those that take integer types all accept uint64 and are
+// therefore of type valueEncoder.
+
+const maxVarintBytes = 10 // maximum length of a varint
+
+// EncodeVarint returns the varint encoding of x.
+// This is the format for the
+// int32, int64, uint32, uint64, bool, and enum
+// protocol buffer types.
+// Not used by the package itself, but helpful to clients
+// wishing to use the same encoding.
+func EncodeVarint(x uint64) []byte {
+       var buf [maxVarintBytes]byte
+       var n int
+       for n = 0; x > 127; n++ {
+               buf[n] = 0x80 | uint8(x&0x7F)
+               x >>= 7
+       }
+       buf[n] = uint8(x)
+       n++
+       return buf[0:n]
+}
+
+// EncodeVarint writes a varint-encoded integer to the Buffer.
+// This is the format for the
+// int32, int64, uint32, uint64, bool, and enum
+// protocol buffer types.
+func (p *Buffer) EncodeVarint(x uint64) error {
+       for x >= 1<<7 {
+               p.buf = append(p.buf, uint8(x&0x7f|0x80))
+               x >>= 7
+       }
+       p.buf = append(p.buf, uint8(x))
+       return nil
+}
+
+// SizeVarint returns the varint encoding size of an integer.
+func SizeVarint(x uint64) int {
+       return sizeVarint(x)
+}
+
+func sizeVarint(x uint64) (n int) {
+       for {
+               n++
+               x >>= 7
+               if x == 0 {
+                       break
+               }
+       }
+       return n
+}
+
+// EncodeFixed64 writes a 64-bit integer to the Buffer.
+// This is the format for the
+// fixed64, sfixed64, and double protocol buffer types.
+func (p *Buffer) EncodeFixed64(x uint64) error {
+       p.buf = append(p.buf,
+               uint8(x),
+               uint8(x>>8),
+               uint8(x>>16),
+               uint8(x>>24),
+               uint8(x>>32),
+               uint8(x>>40),
+               uint8(x>>48),
+               uint8(x>>56))
+       return nil
+}
+
+func sizeFixed64(x uint64) int {
+       return 8
+}
+
+// EncodeFixed32 writes a 32-bit integer to the Buffer.
+// This is the format for the
+// fixed32, sfixed32, and float protocol buffer types.
+func (p *Buffer) EncodeFixed32(x uint64) error {
+       p.buf = append(p.buf,
+               uint8(x),
+               uint8(x>>8),
+               uint8(x>>16),
+               uint8(x>>24))
+       return nil
+}
+
+func sizeFixed32(x uint64) int {
+       return 4
+}
+
+// EncodeZigzag64 writes a zigzag-encoded 64-bit integer
+// to the Buffer.
+// This is the format used for the sint64 protocol buffer type.
+func (p *Buffer) EncodeZigzag64(x uint64) error {
+       // use signed number to get arithmetic right shift.
+       return p.EncodeVarint(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+
+func sizeZigzag64(x uint64) int {
+       return sizeVarint(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+
+// EncodeZigzag32 writes a zigzag-encoded 32-bit integer
+// to the Buffer.
+// This is the format used for the sint32 protocol buffer type.
+func (p *Buffer) EncodeZigzag32(x uint64) error {
+       // use signed number to get arithmetic right shift.
+       return p.EncodeVarint(uint64((uint32(x) << 1) ^ uint32((int32(x) >> 31))))
+}
+
+func sizeZigzag32(x uint64) int {
+       return sizeVarint(uint64((uint32(x) << 1) ^ uint32((int32(x) >> 31))))
+}
+
+// EncodeRawBytes writes a count-delimited byte buffer to the Buffer.
+// This is the format used for the bytes protocol buffer
+// type and for embedded messages.
+func (p *Buffer) EncodeRawBytes(b []byte) error {
+       p.EncodeVarint(uint64(len(b)))
+       p.buf = append(p.buf, b...)
+       return nil
+}
+
+func sizeRawBytes(b []byte) int {
+       return sizeVarint(uint64(len(b))) +
+               len(b)
+}
+
+// EncodeStringBytes writes an encoded string to the Buffer.
+// This is the format used for the proto2 string type.
+func (p *Buffer) EncodeStringBytes(s string) error {
+       p.EncodeVarint(uint64(len(s)))
+       p.buf = append(p.buf, s...)
+       return nil
+}
+
+func sizeStringBytes(s string) int {
+       return sizeVarint(uint64(len(s))) +
+               len(s)
+}
+
+// Marshaler is the interface representing objects that can marshal themselves.
+type Marshaler interface {
+       Marshal() ([]byte, error)
+}
+
+// Marshal takes the protocol buffer
+// and encodes it into the wire format, returning the data.
+func Marshal(pb Message) ([]byte, error) {
+       // Can the object marshal itself?
+       if m, ok := pb.(Marshaler); ok {
+               return m.Marshal()
+       }
+       p := NewBuffer(nil)
+       err := p.Marshal(pb)
+       var state errorState
+       if err != nil && !state.shouldContinue(err, nil) {
+               return nil, err
+       }
+       if p.buf == nil && err == nil {
+               // Return a non-nil slice on success.
+               return []byte{}, nil
+       }
+       return p.buf, err
+}
+
+// EncodeMessage writes the protocol buffer to the Buffer,
+// prefixed by a varint-encoded length.
+func (p *Buffer) EncodeMessage(pb Message) error {
+       t, base, err := getbase(pb)
+       if structPointer_IsNil(base) {
+               return ErrNil
+       }
+       if err == nil {
+               var state errorState
+               err = p.enc_len_struct(GetProperties(t.Elem()), base, &state)
+       }
+       return err
+}
+
+// Marshal takes the protocol buffer
+// and encodes it into the wire format, writing the result to the
+// Buffer.
+func (p *Buffer) Marshal(pb Message) error {
+       // Can the object marshal itself?
+       if m, ok := pb.(Marshaler); ok {
+               data, err := m.Marshal()
+               if err != nil {
+                       return err
+               }
+               p.buf = append(p.buf, data...)
+               return nil
+       }
+
+       t, base, err := getbase(pb)
+       if structPointer_IsNil(base) {
+               return ErrNil
+       }
+       if err == nil {
+               err = p.enc_struct(GetProperties(t.Elem()), base)
+       }
+
+       if collectStats {
+               stats.Encode++
+       }
+
+       return err
+}
+
+// Size returns the encoded size of a protocol buffer.
+func Size(pb Message) (n int) {
+       // Can the object marshal itself?  If so, Size is slow.
+       // TODO: add Size to Marshaler, or add a Sizer interface.
+       if m, ok := pb.(Marshaler); ok {
+               b, _ := m.Marshal()
+               return len(b)
+       }
+
+       t, base, err := getbase(pb)
+       if structPointer_IsNil(base) {
+               return 0
+       }
+       if err == nil {
+               n = size_struct(GetProperties(t.Elem()), base)
+       }
+
+       if collectStats {
+               stats.Size++
+       }
+
+       return
+}
+
+// Individual type encoders.
+
+// Encode a bool.
+func (o *Buffer) enc_bool(p *Properties, base structPointer) error {
+       v := *structPointer_Bool(base, p.field)
+       if v == nil {
+               return ErrNil
+       }
+       x := 0
+       if *v {
+               x = 1
+       }
+       o.buf = append(o.buf, p.tagcode...)
+       p.valEnc(o, uint64(x))
+       return nil
+}
+
+func (o *Buffer) enc_proto3_bool(p *Properties, base structPointer) error {
+       v := *structPointer_BoolVal(base, p.field)
+       if !v {
+               return ErrNil
+       }
+       o.buf = append(o.buf, p.tagcode...)
+       p.valEnc(o, 1)
+       return nil
+}
+
+func size_bool(p *Properties, base structPointer) int {
+       v := *structPointer_Bool(base, p.field)
+       if v == nil {
+               return 0
+       }
+       return len(p.tagcode) + 1 // each bool takes exactly one byte
+}
+
+func size_proto3_bool(p *Properties, base structPointer) int {
+       v := *structPointer_BoolVal(base, p.field)
+       if !v && !p.oneof {
+               return 0
+       }
+       return len(p.tagcode) + 1 // each bool takes exactly one byte
+}
+
+// Encode an int32.
+func (o *Buffer) enc_int32(p *Properties, base structPointer) error {
+       v := structPointer_Word32(base, p.field)
+       if word32_IsNil(v) {
+               return ErrNil
+       }
+       x := int32(word32_Get(v)) // permit sign extension to use full 64-bit range
+       o.buf = append(o.buf, p.tagcode...)
+       p.valEnc(o, uint64(x))
+       return nil
+}
+
+func (o *Buffer) enc_proto3_int32(p *Properties, base structPointer) error {
+       v := structPointer_Word32Val(base, p.field)
+       x := int32(word32Val_Get(v)) // permit sign extension to use full 64-bit range
+       if x == 0 {
+               return ErrNil
+       }
+       o.buf = append(o.buf, p.tagcode...)
+       p.valEnc(o, uint64(x))
+       return nil
+}
+
+func size_int32(p *Properties, base structPointer) (n int) {
+       v := structPointer_Word32(base, p.field)
+       if word32_IsNil(v) {
+               return 0
+       }
+       x := int32(word32_Get(v)) // permit sign extension to use full 64-bit range
+       n += len(p.tagcode)
+       n += p.valSize(uint64(x))
+       return
+}
+
+func size_proto3_int32(p *Properties, base structPointer) (n int) {
+       v := structPointer_Word32Val(base, p.field)
+       x := int32(word32Val_Get(v)) // permit sign extension to use full 64-bit range
+       if x == 0 && !p.oneof {
+               return 0
+       }
+       n += len(p.tagcode)
+       n += p.valSize(uint64(x))
+       return
+}
+
+// Encode a uint32.
+// Exactly the same as int32, except for no sign extension.
+func (o *Buffer) enc_uint32(p *Properties, base structPointer) error {
+       v := structPointer_Word32(base, p.field)
+       if word32_IsNil(v) {
+               return ErrNil
+       }
+       x := word32_Get(v)
+       o.buf = append(o.buf, p.tagcode...)
+       p.valEnc(o, uint64(x))
+       return nil
+}
+
+func (o *Buffer) enc_proto3_uint32(p *Properties, base structPointer) error {
+       v := structPointer_Word32Val(base, p.field)
+       x := word32Val_Get(v)
+       if x == 0 {
+               return ErrNil
+       }
+       o.buf = append(o.buf, p.tagcode...)
+       p.valEnc(o, uint64(x))
+       return nil
+}
+
+func size_uint32(p *Properties, base structPointer) (n int) {
+       v := structPointer_Word32(base, p.field)
+       if word32_IsNil(v) {
+               return 0
+       }
+       x := word32_Get(v)
+       n += len(p.tagcode)
+       n += p.valSize(uint64(x))
+       return
+}
+
+func size_proto3_uint32(p *Properties, base structPointer) (n int) {
+       v := structPointer_Word32Val(base, p.field)
+       x := word32Val_Get(v)
+       if x == 0 && !p.oneof {
+               return 0
+       }
+       n += len(p.tagcode)
+       n += p.valSize(uint64(x))
+       return
+}
+
+// Encode an int64.
+func (o *Buffer) enc_int64(p *Properties, base structPointer) error {
+       v := structPointer_Word64(base, p.field)
+       if word64_IsNil(v) {
+               return ErrNil
+       }
+       x := word64_Get(v)
+       o.buf = append(o.buf, p.tagcode...)
+       p.valEnc(o, x)
+       return nil
+}
+
+func (o *Buffer) enc_proto3_int64(p *Properties, base structPointer) error {
+       v := structPointer_Word64Val(base, p.field)
+       x := word64Val_Get(v)
+       if x == 0 {
+               return ErrNil
+       }
+       o.buf = append(o.buf, p.tagcode...)
+       p.valEnc(o, x)
+       return nil
+}
+
+func size_int64(p *Properties, base structPointer) (n int) {
+       v := structPointer_Word64(base, p.field)
+       if word64_IsNil(v) {
+               return 0
+       }
+       x := word64_Get(v)
+       n += len(p.tagcode)
+       n += p.valSize(x)
+       return
+}
+
+func size_proto3_int64(p *Properties, base structPointer) (n int) {
+       v := structPointer_Word64Val(base, p.field)
+       x := word64Val_Get(v)
+       if x == 0 && !p.oneof {
+               return 0
+       }
+       n += len(p.tagcode)
+       n += p.valSize(x)
+       return
+}
+
+// Encode a string.
+func (o *Buffer) enc_string(p *Properties, base structPointer) error {
+       v := *structPointer_String(base, p.field)
+       if v == nil {
+               return ErrNil
+       }
+       x := *v
+       o.buf = append(o.buf, p.tagcode...)
+       o.EncodeStringBytes(x)
+       return nil
+}
+
+func (o *Buffer) enc_proto3_string(p *Properties, base structPointer) error {
+       v := *structPointer_StringVal(base, p.field)
+       if v == "" {
+               return ErrNil
+       }
+       o.buf = append(o.buf, p.tagcode...)
+       o.EncodeStringBytes(v)
+       return nil
+}
+
+func size_string(p *Properties, base structPointer) (n int) {
+       v := *structPointer_String(base, p.field)
+       if v == nil {
+               return 0
+       }
+       x := *v
+       n += len(p.tagcode)
+       n += sizeStringBytes(x)
+       return
+}
+
+func size_proto3_string(p *Properties, base structPointer) (n int) {
+       v := *structPointer_StringVal(base, p.field)
+       if v == "" && !p.oneof {
+               return 0
+       }
+       n += len(p.tagcode)
+       n += sizeStringBytes(v)
+       return
+}
+
+// All protocol buffer fields are nillable, but be careful.
+func isNil(v reflect.Value) bool {
+       switch v.Kind() {
+       case reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice:
+               return v.IsNil()
+       }
+       return false
+}
+
+// Encode a message struct.
+func (o *Buffer) enc_struct_message(p *Properties, base structPointer) error {
+       var state errorState
+       structp := structPointer_GetStructPointer(base, p.field)
+       if structPointer_IsNil(structp) {
+               return ErrNil
+       }
+
+       // Can the object marshal itself?
+       if p.isMarshaler {
+               m := structPointer_Interface(structp, p.stype).(Marshaler)
+               data, err := m.Marshal()
+               if err != nil && !state.shouldContinue(err, nil) {
+                       return err
+               }
+               o.buf = append(o.buf, p.tagcode...)
+               o.EncodeRawBytes(data)
+               return state.err
+       }
+
+       o.buf = append(o.buf, p.tagcode...)
+       return o.enc_len_struct(p.sprop, structp, &state)
+}
+
+func size_struct_message(p *Properties, base structPointer) int {
+       structp := structPointer_GetStructPointer(base, p.field)
+       if structPointer_IsNil(structp) {
+               return 0
+       }
+
+       // Can the object marshal itself?
+       if p.isMarshaler {
+               m := structPointer_Interface(structp, p.stype).(Marshaler)
+               data, _ := m.Marshal()
+               n0 := len(p.tagcode)
+               n1 := sizeRawBytes(data)
+               return n0 + n1
+       }
+
+       n0 := len(p.tagcode)
+       n1 := size_struct(p.sprop, structp)
+       n2 := sizeVarint(uint64(n1)) // size of encoded length
+       return n0 + n1 + n2
+}
+
+// Encode a group struct.
+func (o *Buffer) enc_struct_group(p *Properties, base structPointer) error {
+       var state errorState
+       b := structPointer_GetStructPointer(base, p.field)
+       if structPointer_IsNil(b) {
+               return ErrNil
+       }
+
+       o.EncodeVarint(uint64((p.Tag << 3) | WireStartGroup))
+       err := o.enc_struct(p.sprop, b)
+       if err != nil && !state.shouldContinue(err, nil) {
+               return err
+       }
+       o.EncodeVarint(uint64((p.Tag << 3) | WireEndGroup))
+       return state.err
+}
+
+func size_struct_group(p *Properties, base structPointer) (n int) {
+       b := structPointer_GetStructPointer(base, p.field)
+       if structPointer_IsNil(b) {
+               return 0
+       }
+
+       n += sizeVarint(uint64((p.Tag << 3) | WireStartGroup))
+       n += size_struct(p.sprop, b)
+       n += sizeVarint(uint64((p.Tag << 3) | WireEndGroup))
+       return
+}
+
+// Encode a slice of bools ([]bool).
+func (o *Buffer) enc_slice_bool(p *Properties, base structPointer) error {
+       s := *structPointer_BoolSlice(base, p.field)
+       l := len(s)
+       if l == 0 {
+               return ErrNil
+       }
+       for _, x := range s {
+               o.buf = append(o.buf, p.tagcode...)
+               v := uint64(0)
+               if x {
+                       v = 1
+               }
+               p.valEnc(o, v)
+       }
+       return nil
+}
+
+func size_slice_bool(p *Properties, base structPointer) int {
+       s := *structPointer_BoolSlice(base, p.field)
+       l := len(s)
+       if l == 0 {
+               return 0
+       }
+       return l * (len(p.tagcode) + 1) // each bool takes exactly one byte
+}
+
+// Encode a slice of bools ([]bool) in packed format.
+func (o *Buffer) enc_slice_packed_bool(p *Properties, base structPointer) error {
+       s := *structPointer_BoolSlice(base, p.field)
+       l := len(s)
+       if l == 0 {
+               return ErrNil
+       }
+       o.buf = append(o.buf, p.tagcode...)
+       o.EncodeVarint(uint64(l)) // each bool takes exactly one byte
+       for _, x := range s {
+               v := uint64(0)
+               if x {
+                       v = 1
+               }
+               p.valEnc(o, v)
+       }
+       return nil
+}
+
+func size_slice_packed_bool(p *Properties, base structPointer) (n int) {
+       s := *structPointer_BoolSlice(base, p.field)
+       l := len(s)
+       if l == 0 {
+               return 0
+       }
+       n += len(p.tagcode)
+       n += sizeVarint(uint64(l))
+       n += l // each bool takes exactly one byte
+       return
+}
+
+// Encode a slice of bytes ([]byte).
+func (o *Buffer) enc_slice_byte(p *Properties, base structPointer) error {
+       s := *structPointer_Bytes(base, p.field)
+       if s == nil {
+               return ErrNil
+       }
+       o.buf = append(o.buf, p.tagcode...)
+       o.EncodeRawBytes(s)
+       return nil
+}
+
+func (o *Buffer) enc_proto3_slice_byte(p *Properties, base structPointer) error {
+       s := *structPointer_Bytes(base, p.field)
+       if len(s) == 0 {
+               return ErrNil
+       }
+       o.buf = append(o.buf, p.tagcode...)
+       o.EncodeRawBytes(s)
+       return nil
+}
+
+func size_slice_byte(p *Properties, base structPointer) (n int) {
+       s := *structPointer_Bytes(base, p.field)
+       if s == nil && !p.oneof {
+               return 0
+       }
+       n += len(p.tagcode)
+       n += sizeRawBytes(s)
+       return
+}
+
+func size_proto3_slice_byte(p *Properties, base structPointer) (n int) {
+       s := *structPointer_Bytes(base, p.field)
+       if len(s) == 0 && !p.oneof {
+               return 0
+       }
+       n += len(p.tagcode)
+       n += sizeRawBytes(s)
+       return
+}
+
+// Encode a slice of int32s ([]int32).
+func (o *Buffer) enc_slice_int32(p *Properties, base structPointer) error {
+       s := structPointer_Word32Slice(base, p.field)
+       l := s.Len()
+       if l == 0 {
+               return ErrNil
+       }
+       for i := 0; i < l; i++ {
+               o.buf = append(o.buf, p.tagcode...)
+               x := int32(s.Index(i)) // permit sign extension to use full 64-bit range
+               p.valEnc(o, uint64(x))
+       }
+       return nil
+}
+
+func size_slice_int32(p *Properties, base structPointer) (n int) {
+       s := structPointer_Word32Slice(base, p.field)
+       l := s.Len()
+       if l == 0 {
+               return 0
+       }
+       for i := 0; i < l; i++ {
+               n += len(p.tagcode)
+               x := int32(s.Index(i)) // permit sign extension to use full 64-bit range
+               n += p.valSize(uint64(x))
+       }
+       return
+}
+
+// Encode a slice of int32s ([]int32) in packed format.
+func (o *Buffer) enc_slice_packed_int32(p *Properties, base structPointer) error {
+       s := structPointer_Word32Slice(base, p.field)
+       l := s.Len()
+       if l == 0 {
+               return ErrNil
+       }
+       // TODO: Reuse a Buffer.
+       buf := NewBuffer(nil)
+       for i := 0; i < l; i++ {
+               x := int32(s.Index(i)) // permit sign extension to use full 64-bit range
+               p.valEnc(buf, uint64(x))
+       }
+
+       o.buf = append(o.buf, p.tagcode...)
+       o.EncodeVarint(uint64(len(buf.buf)))
+       o.buf = append(o.buf, buf.buf...)
+       return nil
+}
+
+func size_slice_packed_int32(p *Properties, base structPointer) (n int) {
+       s := structPointer_Word32Slice(base, p.field)
+       l := s.Len()
+       if l == 0 {
+               return 0
+       }
+       var bufSize int
+       for i := 0; i < l; i++ {
+               x := int32(s.Index(i)) // permit sign extension to use full 64-bit range
+               bufSize += p.valSize(uint64(x))
+       }
+
+       n += len(p.tagcode)
+       n += sizeVarint(uint64(bufSize))
+       n += bufSize
+       return
+}
+
+// Encode a slice of uint32s ([]uint32).
+// Exactly the same as int32, except for no sign extension.
+func (o *Buffer) enc_slice_uint32(p *Properties, base structPointer) error {
+       s := structPointer_Word32Slice(base, p.field)
+       l := s.Len()
+       if l == 0 {
+               return ErrNil
+       }
+       for i := 0; i < l; i++ {
+               o.buf = append(o.buf, p.tagcode...)
+               x := s.Index(i)
+               p.valEnc(o, uint64(x))
+       }
+       return nil
+}
+
+func size_slice_uint32(p *Properties, base structPointer) (n int) {
+       s := structPointer_Word32Slice(base, p.field)
+       l := s.Len()
+       if l == 0 {
+               return 0
+       }
+       for i := 0; i < l; i++ {
+               n += len(p.tagcode)
+               x := s.Index(i)
+               n += p.valSize(uint64(x))
+       }
+       return
+}
+
+// Encode a slice of uint32s ([]uint32) in packed format.
+// Exactly the same as int32, except for no sign extension.
+func (o *Buffer) enc_slice_packed_uint32(p *Properties, base structPointer) error {
+       s := structPointer_Word32Slice(base, p.field)
+       l := s.Len()
+       if l == 0 {
+               return ErrNil
+       }
+       // TODO: Reuse a Buffer.
+       buf := NewBuffer(nil)
+       for i := 0; i < l; i++ {
+               p.valEnc(buf, uint64(s.Index(i)))
+       }
+
+       o.buf = append(o.buf, p.tagcode...)
+       o.EncodeVarint(uint64(len(buf.buf)))
+       o.buf = append(o.buf, buf.buf...)
+       return nil
+}
+
+func size_slice_packed_uint32(p *Properties, base structPointer) (n int) {
+       s := structPointer_Word32Slice(base, p.field)
+       l := s.Len()
+       if l == 0 {
+               return 0
+       }
+       var bufSize int
+       for i := 0; i < l; i++ {
+               bufSize += p.valSize(uint64(s.Index(i)))
+       }
+
+       n += len(p.tagcode)
+       n += sizeVarint(uint64(bufSize))
+       n += bufSize
+       return
+}
+
+// Encode a slice of int64s ([]int64).
+func (o *Buffer) enc_slice_int64(p *Properties, base structPointer) error {
+       s := structPointer_Word64Slice(base, p.field)
+       l := s.Len()
+       if l == 0 {
+               return ErrNil
+       }
+       for i := 0; i < l; i++ {
+               o.buf = append(o.buf, p.tagcode...)
+               p.valEnc(o, s.Index(i))
+       }
+       return nil
+}
+
+func size_slice_int64(p *Properties, base structPointer) (n int) {
+       s := structPointer_Word64Slice(base, p.field)
+       l := s.Len()
+       if l == 0 {
+               return 0
+       }
+       for i := 0; i < l; i++ {
+               n += len(p.tagcode)
+               n += p.valSize(s.Index(i))
+       }
+       return
+}
+
+// Encode a slice of int64s ([]int64) in packed format.
+func (o *Buffer) enc_slice_packed_int64(p *Properties, base structPointer) error {
+       s := structPointer_Word64Slice(base, p.field)
+       l := s.Len()
+       if l == 0 {
+               return ErrNil
+       }
+       // TODO: Reuse a Buffer.
+       buf := NewBuffer(nil)
+       for i := 0; i < l; i++ {
+               p.valEnc(buf, s.Index(i))
+       }
+
+       o.buf = append(o.buf, p.tagcode...)
+       o.EncodeVarint(uint64(len(buf.buf)))
+       o.buf = append(o.buf, buf.buf...)
+       return nil
+}
+
+func size_slice_packed_int64(p *Properties, base structPointer) (n int) {
+       s := structPointer_Word64Slice(base, p.field)
+       l := s.Len()
+       if l == 0 {
+               return 0
+       }
+       var bufSize int
+       for i := 0; i < l; i++ {
+               bufSize += p.valSize(s.Index(i))
+       }
+
+       n += len(p.tagcode)
+       n += sizeVarint(uint64(bufSize))
+       n += bufSize
+       return
+}
+
+// Encode a slice of slice of bytes ([][]byte).
+func (o *Buffer) enc_slice_slice_byte(p *Properties, base structPointer) error {
+       ss := *structPointer_BytesSlice(base, p.field)
+       l := len(ss)
+       if l == 0 {
+               return ErrNil
+       }
+       for i := 0; i < l; i++ {
+               o.buf = append(o.buf, p.tagcode...)
+               o.EncodeRawBytes(ss[i])
+       }
+       return nil
+}
+
+func size_slice_slice_byte(p *Properties, base structPointer) (n int) {
+       ss := *structPointer_BytesSlice(base, p.field)
+       l := len(ss)
+       if l == 0 {
+               return 0
+       }
+       n += l * len(p.tagcode)
+       for i := 0; i < l; i++ {
+               n += sizeRawBytes(ss[i])
+       }
+       return
+}
+
+// Encode a slice of strings ([]string).
+func (o *Buffer) enc_slice_string(p *Properties, base structPointer) error {
+       ss := *structPointer_StringSlice(base, p.field)
+       l := len(ss)
+       for i := 0; i < l; i++ {
+               o.buf = append(o.buf, p.tagcode...)
+               o.EncodeStringBytes(ss[i])
+       }
+       return nil
+}
+
+func size_slice_string(p *Properties, base structPointer) (n int) {
+       ss := *structPointer_StringSlice(base, p.field)
+       l := len(ss)
+       n += l * len(p.tagcode)
+       for i := 0; i < l; i++ {
+               n += sizeStringBytes(ss[i])
+       }
+       return
+}
+
+// Encode a slice of message structs ([]*struct).
+func (o *Buffer) enc_slice_struct_message(p *Properties, base structPointer) error {
+       var state errorState
+       s := structPointer_StructPointerSlice(base, p.field)
+       l := s.Len()
+
+       for i := 0; i < l; i++ {
+               structp := s.Index(i)
+               if structPointer_IsNil(structp) {
+                       return errRepeatedHasNil
+               }
+
+               // Can the object marshal itself?
+               if p.isMarshaler {
+                       m := structPointer_Interface(structp, p.stype).(Marshaler)
+                       data, err := m.Marshal()
+                       if err != nil && !state.shouldContinue(err, nil) {
+                               return err
+                       }
+                       o.buf = append(o.buf, p.tagcode...)
+                       o.EncodeRawBytes(data)
+                       continue
+               }
+
+               o.buf = append(o.buf, p.tagcode...)
+               err := o.enc_len_struct(p.sprop, structp, &state)
+               if err != nil && !state.shouldContinue(err, nil) {
+                       if err == ErrNil {
+                               return errRepeatedHasNil
+                       }
+                       return err
+               }
+       }
+       return state.err
+}
+
+func size_slice_struct_message(p *Properties, base structPointer) (n int) {
+       s := structPointer_StructPointerSlice(base, p.field)
+       l := s.Len()
+       n += l * len(p.tagcode)
+       for i := 0; i < l; i++ {
+               structp := s.Index(i)
+               if structPointer_IsNil(structp) {
+                       return // return the size up to this point
+               }
+
+               // Can the object marshal itself?
+               if p.isMarshaler {
+                       m := structPointer_Interface(structp, p.stype).(Marshaler)
+                       data, _ := m.Marshal()
+                       n += len(p.tagcode)
+                       n += sizeRawBytes(data)
+                       continue
+               }
+
+               n0 := size_struct(p.sprop, structp)
+               n1 := sizeVarint(uint64(n0)) // size of encoded length
+               n += n0 + n1
+       }
+       return
+}
+
+// Encode a slice of group structs ([]*struct).
+func (o *Buffer) enc_slice_struct_group(p *Properties, base structPointer) error {
+       var state errorState
+       s := structPointer_StructPointerSlice(base, p.field)
+       l := s.Len()
+
+       for i := 0; i < l; i++ {
+               b := s.Index(i)
+               if structPointer_IsNil(b) {
+                       return errRepeatedHasNil
+               }
+
+               o.EncodeVarint(uint64((p.Tag << 3) | WireStartGroup))
+
+               err := o.enc_struct(p.sprop, b)
+
+               if err != nil && !state.shouldContinue(err, nil) {
+                       if err == ErrNil {
+                               return errRepeatedHasNil
+                       }
+                       return err
+               }
+
+               o.EncodeVarint(uint64((p.Tag << 3) | WireEndGroup))
+       }
+       return state.err
+}
+
+func size_slice_struct_group(p *Properties, base structPointer) (n int) {
+       s := structPointer_StructPointerSlice(base, p.field)
+       l := s.Len()
+
+       n += l * sizeVarint(uint64((p.Tag<<3)|WireStartGroup))
+       n += l * sizeVarint(uint64((p.Tag<<3)|WireEndGroup))
+       for i := 0; i < l; i++ {
+               b := s.Index(i)
+               if structPointer_IsNil(b) {
+                       return // return size up to this point
+               }
+
+               n += size_struct(p.sprop, b)
+       }
+       return
+}
+
+// Encode an extension map.
+func (o *Buffer) enc_map(p *Properties, base structPointer) error {
+       v := *structPointer_ExtMap(base, p.field)
+       if err := encodeExtensionMap(v); err != nil {
+               return err
+       }
+       // Fast-path for common cases: zero or one extensions.
+       if len(v) <= 1 {
+               for _, e := range v {
+                       o.buf = append(o.buf, e.enc...)
+               }
+               return nil
+       }
+
+       // Sort keys to provide a deterministic encoding.
+       keys := make([]int, 0, len(v))
+       for k := range v {
+               keys = append(keys, int(k))
+       }
+       sort.Ints(keys)
+
+       for _, k := range keys {
+               o.buf = append(o.buf, v[int32(k)].enc...)
+       }
+       return nil
+}
+
+func size_map(p *Properties, base structPointer) int {
+       v := *structPointer_ExtMap(base, p.field)
+       return sizeExtensionMap(v)
+}
+
+// Encode a map field.
+func (o *Buffer) enc_new_map(p *Properties, base structPointer) error {
+       var state errorState // XXX: or do we need to plumb this through?
+
+       /*
+               A map defined as
+                       map<key_type, value_type> map_field = N;
+               is encoded in the same way as
+                       message MapFieldEntry {
+                               key_type key = 1;
+                               value_type value = 2;
+                       }
+                       repeated MapFieldEntry map_field = N;
+       */
+
+       v := structPointer_NewAt(base, p.field, p.mtype).Elem() // map[K]V
+       if v.Len() == 0 {
+               return nil
+       }
+
+       keycopy, valcopy, keybase, valbase := mapEncodeScratch(p.mtype)
+
+       enc := func() error {
+               if err := p.mkeyprop.enc(o, p.mkeyprop, keybase); err != nil {
+                       return err
+               }
+               if err := p.mvalprop.enc(o, p.mvalprop, valbase); err != nil {
+                       return err
+               }
+               return nil
+       }
+
+       // Don't sort map keys. It is not required by the spec, and C++ doesn't do it.
+       for _, key := range v.MapKeys() {
+               val := v.MapIndex(key)
+
+               // The only illegal map entry values are nil message pointers.
+               if val.Kind() == reflect.Ptr && val.IsNil() {
+                       return errors.New("proto: map has nil element")
+               }
+
+               keycopy.Set(key)
+               valcopy.Set(val)
+
+               o.buf = append(o.buf, p.tagcode...)
+               if err := o.enc_len_thing(enc, &state); err != nil {
+                       return err
+               }
+       }
+       return nil
+}
+
+func size_new_map(p *Properties, base structPointer) int {
+       v := structPointer_NewAt(base, p.field, p.mtype).Elem() // map[K]V
+
+       keycopy, valcopy, keybase, valbase := mapEncodeScratch(p.mtype)
+
+       n := 0
+       for _, key := range v.MapKeys() {
+               val := v.MapIndex(key)
+               keycopy.Set(key)
+               valcopy.Set(val)
+
+               // Tag codes for key and val are the responsibility of the sub-sizer.
+               keysize := p.mkeyprop.size(p.mkeyprop, keybase)
+               valsize := p.mvalprop.size(p.mvalprop, valbase)
+               entry := keysize + valsize
+               // Add on tag code and length of map entry itself.
+               n += len(p.tagcode) + sizeVarint(uint64(entry)) + entry
+       }
+       return n
+}
+
+// mapEncodeScratch returns a new reflect.Value matching the map's value type,
+// and a structPointer suitable for passing to an encoder or sizer.
+func mapEncodeScratch(mapType reflect.Type) (keycopy, valcopy reflect.Value, keybase, valbase structPointer) {
+       // Prepare addressable doubly-indirect placeholders for the key and value types.
+       // This is needed because the element-type encoders expect **T, but the map iteration produces T.
+
+       keycopy = reflect.New(mapType.Key()).Elem()                 // addressable K
+       keyptr := reflect.New(reflect.PtrTo(keycopy.Type())).Elem() // addressable *K
+       keyptr.Set(keycopy.Addr())                                  //
+       keybase = toStructPointer(keyptr.Addr())                    // **K
+
+       // Value types are more varied and require special handling.
+       switch mapType.Elem().Kind() {
+       case reflect.Slice:
+               // []byte
+               var dummy []byte
+               valcopy = reflect.ValueOf(&dummy).Elem() // addressable []byte
+               valbase = toStructPointer(valcopy.Addr())
+       case reflect.Ptr:
+               // message; the generated field type is map[K]*Msg (so V is *Msg),
+               // so we only need one level of indirection.
+               valcopy = reflect.New(mapType.Elem()).Elem() // addressable V
+               valbase = toStructPointer(valcopy.Addr())
+       default:
+               // everything else
+               valcopy = reflect.New(mapType.Elem()).Elem()                // addressable V
+               valptr := reflect.New(reflect.PtrTo(valcopy.Type())).Elem() // addressable *V
+               valptr.Set(valcopy.Addr())                                  //
+               valbase = toStructPointer(valptr.Addr())                    // **V
+       }
+       return
+}
+
+// Encode a struct.
+func (o *Buffer) enc_struct(prop *StructProperties, base structPointer) error {
+       var state errorState
+       // Encode fields in tag order so that decoders may use optimizations
+       // that depend on the ordering.
+       // https://developers.google.com/protocol-buffers/docs/encoding#order
+       for _, i := range prop.order {
+               p := prop.Prop[i]
+               if p.enc != nil {
+                       err := p.enc(o, p, base)
+                       if err != nil {
+                               if err == ErrNil {
+                                       if p.Required && state.err == nil {
+                                               state.err = &RequiredNotSetError{p.Name}
+                                       }
+                               } else if err == errRepeatedHasNil {
+                                       // Give more context to nil values in repeated fields.
+                                       return errors.New("repeated field " + p.OrigName + " has nil element")
+                               } else if !state.shouldContinue(err, p) {
+                                       return err
+                               }
+                       }
+               }
+       }
+
+       // Do oneof fields.
+       if prop.oneofMarshaler != nil {
+               m := structPointer_Interface(base, prop.stype).(Message)
+               if err := prop.oneofMarshaler(m, o); err == ErrNil {
+                       return errOneofHasNil
+               } else if err != nil {
+                       return err
+               }
+       }
+
+       // Add unrecognized fields at the end.
+       if prop.unrecField.IsValid() {
+               v := *structPointer_Bytes(base, prop.unrecField)
+               if len(v) > 0 {
+                       o.buf = append(o.buf, v...)
+               }
+       }
+
+       return state.err
+}
+
+func size_struct(prop *StructProperties, base structPointer) (n int) {
+       for _, i := range prop.order {
+               p := prop.Prop[i]
+               if p.size != nil {
+                       n += p.size(p, base)
+               }
+       }
+
+       // Add unrecognized fields at the end.
+       if prop.unrecField.IsValid() {
+               v := *structPointer_Bytes(base, prop.unrecField)
+               n += len(v)
+       }
+
+       // Factor in any oneof fields.
+       if prop.oneofSizer != nil {
+               m := structPointer_Interface(base, prop.stype).(Message)
+               n += prop.oneofSizer(m)
+       }
+
+       return
+}
+
+var zeroes [20]byte // longer than any conceivable sizeVarint
+
+// Encode a struct, preceded by its encoded length (as a varint).
+func (o *Buffer) enc_len_struct(prop *StructProperties, base structPointer, state *errorState) error {
+       return o.enc_len_thing(func() error { return o.enc_struct(prop, base) }, state)
+}
+
+// Encode something, preceded by its encoded length (as a varint).
+func (o *Buffer) enc_len_thing(enc func() error, state *errorState) error {
+       iLen := len(o.buf)
+       o.buf = append(o.buf, 0, 0, 0, 0) // reserve four bytes for length
+       iMsg := len(o.buf)
+       err := enc()
+       if err != nil && !state.shouldContinue(err, nil) {
+               return err
+       }
+       lMsg := len(o.buf) - iMsg
+       lLen := sizeVarint(uint64(lMsg))
+       switch x := lLen - (iMsg - iLen); {
+       case x > 0: // actual length is x bytes larger than the space we reserved
+               // Move msg x bytes right.
+               o.buf = append(o.buf, zeroes[:x]...)
+               copy(o.buf[iMsg+x:], o.buf[iMsg:iMsg+lMsg])
+       case x < 0: // actual length is x bytes smaller than the space we reserved
+               // Move msg x bytes left.
+               copy(o.buf[iMsg+x:], o.buf[iMsg:iMsg+lMsg])
+               o.buf = o.buf[:len(o.buf)+x] // x is negative
+       }
+       // Encode the length in the reserved space.
+       o.buf = o.buf[:iLen]
+       o.EncodeVarint(uint64(lMsg))
+       o.buf = o.buf[:len(o.buf)+lMsg]
+       return state.err
+}
+
+// errorState maintains the first error that occurs and updates that error
+// with additional context.
+type errorState struct {
+       err error
+}
+
+// shouldContinue reports whether encoding should continue upon encountering the
+// given error. If the error is RequiredNotSetError, shouldContinue returns true
+// and, if this is the first appearance of that error, remembers it for future
+// reporting.
+//
+// If prop is not nil, it may update any error with additional context about the
+// field with the error.
+func (s *errorState) shouldContinue(err error, prop *Properties) bool {
+       // Ignore unset required fields.
+       reqNotSet, ok := err.(*RequiredNotSetError)
+       if !ok {
+               return false
+       }
+       if s.err == nil {
+               if prop != nil {
+                       err = &RequiredNotSetError{prop.Name + "." + reqNotSet.field}
+               }
+               s.err = err
+       }
+       return true
+}
diff --git a/vendor/github.com/golang/protobuf/proto/equal.go b/vendor/github.com/golang/protobuf/proto/equal.go
new file mode 100644 (file)
index 0000000..f5db1de
--- /dev/null
@@ -0,0 +1,276 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2011 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Protocol buffer comparison.
+
+package proto
+
+import (
+       "bytes"
+       "log"
+       "reflect"
+       "strings"
+)
+
+/*
+Equal returns true iff protocol buffers a and b are equal.
+The arguments must both be pointers to protocol buffer structs.
+
+Equality is defined in this way:
+  - Two messages are equal iff they are the same type,
+    corresponding fields are equal, unknown field sets
+    are equal, and extensions sets are equal.
+  - Two set scalar fields are equal iff their values are equal.
+    If the fields are of a floating-point type, remember that
+    NaN != x for all x, including NaN. If the message is defined
+    in a proto3 .proto file, fields are not "set"; specifically,
+    zero length proto3 "bytes" fields are equal (nil == {}).
+  - Two repeated fields are equal iff their lengths are the same,
+    and their corresponding elements are equal (a "bytes" field,
+    although represented by []byte, is not a repeated field)
+  - Two unset fields are equal.
+  - Two unknown field sets are equal if their current
+    encoded state is equal.
+  - Two extension sets are equal iff they have corresponding
+    elements that are pairwise equal.
+  - Every other combination of things are not equal.
+
+The return value is undefined if a and b are not protocol buffers.
+*/
+func Equal(a, b Message) bool {
+       if a == nil || b == nil {
+               return a == b
+       }
+       v1, v2 := reflect.ValueOf(a), reflect.ValueOf(b)
+       if v1.Type() != v2.Type() {
+               return false
+       }
+       if v1.Kind() == reflect.Ptr {
+               if v1.IsNil() {
+                       return v2.IsNil()
+               }
+               if v2.IsNil() {
+                       return false
+               }
+               v1, v2 = v1.Elem(), v2.Elem()
+       }
+       if v1.Kind() != reflect.Struct {
+               return false
+       }
+       return equalStruct(v1, v2)
+}
+
+// v1 and v2 are known to have the same type.
+func equalStruct(v1, v2 reflect.Value) bool {
+       sprop := GetProperties(v1.Type())
+       for i := 0; i < v1.NumField(); i++ {
+               f := v1.Type().Field(i)
+               if strings.HasPrefix(f.Name, "XXX_") {
+                       continue
+               }
+               f1, f2 := v1.Field(i), v2.Field(i)
+               if f.Type.Kind() == reflect.Ptr {
+                       if n1, n2 := f1.IsNil(), f2.IsNil(); n1 && n2 {
+                               // both unset
+                               continue
+                       } else if n1 != n2 {
+                               // set/unset mismatch
+                               return false
+                       }
+                       b1, ok := f1.Interface().(raw)
+                       if ok {
+                               b2 := f2.Interface().(raw)
+                               // RawMessage
+                               if !bytes.Equal(b1.Bytes(), b2.Bytes()) {
+                                       return false
+                               }
+                               continue
+                       }
+                       f1, f2 = f1.Elem(), f2.Elem()
+               }
+               if !equalAny(f1, f2, sprop.Prop[i]) {
+                       return false
+               }
+       }
+
+       if em1 := v1.FieldByName("XXX_extensions"); em1.IsValid() {
+               em2 := v2.FieldByName("XXX_extensions")
+               if !equalExtensions(v1.Type(), em1.Interface().(map[int32]Extension), em2.Interface().(map[int32]Extension)) {
+                       return false
+               }
+       }
+
+       uf := v1.FieldByName("XXX_unrecognized")
+       if !uf.IsValid() {
+               return true
+       }
+
+       u1 := uf.Bytes()
+       u2 := v2.FieldByName("XXX_unrecognized").Bytes()
+       if !bytes.Equal(u1, u2) {
+               return false
+       }
+
+       return true
+}
+
+// v1 and v2 are known to have the same type.
+// prop may be nil.
+func equalAny(v1, v2 reflect.Value, prop *Properties) bool {
+       if v1.Type() == protoMessageType {
+               m1, _ := v1.Interface().(Message)
+               m2, _ := v2.Interface().(Message)
+               return Equal(m1, m2)
+       }
+       switch v1.Kind() {
+       case reflect.Bool:
+               return v1.Bool() == v2.Bool()
+       case reflect.Float32, reflect.Float64:
+               return v1.Float() == v2.Float()
+       case reflect.Int32, reflect.Int64:
+               return v1.Int() == v2.Int()
+       case reflect.Interface:
+               // Probably a oneof field; compare the inner values.
+               n1, n2 := v1.IsNil(), v2.IsNil()
+               if n1 || n2 {
+                       return n1 == n2
+               }
+               e1, e2 := v1.Elem(), v2.Elem()
+               if e1.Type() != e2.Type() {
+                       return false
+               }
+               return equalAny(e1, e2, nil)
+       case reflect.Map:
+               if v1.Len() != v2.Len() {
+                       return false
+               }
+               for _, key := range v1.MapKeys() {
+                       val2 := v2.MapIndex(key)
+                       if !val2.IsValid() {
+                               // This key was not found in the second map.
+                               return false
+                       }
+                       if !equalAny(v1.MapIndex(key), val2, nil) {
+                               return false
+                       }
+               }
+               return true
+       case reflect.Ptr:
+               return equalAny(v1.Elem(), v2.Elem(), prop)
+       case reflect.Slice:
+               if v1.Type().Elem().Kind() == reflect.Uint8 {
+                       // short circuit: []byte
+
+                       // Edge case: if this is in a proto3 message, a zero length
+                       // bytes field is considered the zero value.
+                       if prop != nil && prop.proto3 && v1.Len() == 0 && v2.Len() == 0 {
+                               return true
+                       }
+                       if v1.IsNil() != v2.IsNil() {
+                               return false
+                       }
+                       return bytes.Equal(v1.Interface().([]byte), v2.Interface().([]byte))
+               }
+
+               if v1.Len() != v2.Len() {
+                       return false
+               }
+               for i := 0; i < v1.Len(); i++ {
+                       if !equalAny(v1.Index(i), v2.Index(i), prop) {
+                               return false
+                       }
+               }
+               return true
+       case reflect.String:
+               return v1.Interface().(string) == v2.Interface().(string)
+       case reflect.Struct:
+               return equalStruct(v1, v2)
+       case reflect.Uint32, reflect.Uint64:
+               return v1.Uint() == v2.Uint()
+       }
+
+       // unknown type, so not a protocol buffer
+       log.Printf("proto: don't know how to compare %v", v1)
+       return false
+}
+
+// base is the struct type that the extensions are based on.
+// em1 and em2 are extension maps.
+func equalExtensions(base reflect.Type, em1, em2 map[int32]Extension) bool {
+       if len(em1) != len(em2) {
+               return false
+       }
+
+       for extNum, e1 := range em1 {
+               e2, ok := em2[extNum]
+               if !ok {
+                       return false
+               }
+
+               m1, m2 := e1.value, e2.value
+
+               if m1 != nil && m2 != nil {
+                       // Both are unencoded.
+                       if !equalAny(reflect.ValueOf(m1), reflect.ValueOf(m2), nil) {
+                               return false
+                       }
+                       continue
+               }
+
+               // At least one is encoded. To do a semantically correct comparison
+               // we need to unmarshal them first.
+               var desc *ExtensionDesc
+               if m := extensionMaps[base]; m != nil {
+                       desc = m[extNum]
+               }
+               if desc == nil {
+                       log.Printf("proto: don't know how to compare extension %d of %v", extNum, base)
+                       continue
+               }
+               var err error
+               if m1 == nil {
+                       m1, err = decodeExtension(e1.enc, desc)
+               }
+               if m2 == nil && err == nil {
+                       m2, err = decodeExtension(e2.enc, desc)
+               }
+               if err != nil {
+                       // The encoded form is invalid.
+                       log.Printf("proto: badly encoded extension %d of %v: %v", extNum, base, err)
+                       return false
+               }
+               if !equalAny(reflect.ValueOf(m1), reflect.ValueOf(m2), nil) {
+                       return false
+               }
+       }
+
+       return true
+}
diff --git a/vendor/github.com/golang/protobuf/proto/extensions.go b/vendor/github.com/golang/protobuf/proto/extensions.go
new file mode 100644 (file)
index 0000000..054f4f1
--- /dev/null
@@ -0,0 +1,399 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto
+
+/*
+ * Types and routines for supporting protocol buffer extensions.
+ */
+
+import (
+       "errors"
+       "fmt"
+       "reflect"
+       "strconv"
+       "sync"
+)
+
+// ErrMissingExtension is the error returned by GetExtension if the named extension is not in the message.
+var ErrMissingExtension = errors.New("proto: missing extension")
+
+// ExtensionRange represents a range of message extensions for a protocol buffer.
+// Used in code generated by the protocol compiler.
+type ExtensionRange struct {
+       Start, End int32 // both inclusive
+}
+
+// extendableProto is an interface implemented by any protocol buffer that may be extended.
+type extendableProto interface {
+       Message
+       ExtensionRangeArray() []ExtensionRange
+       ExtensionMap() map[int32]Extension
+}
+
+var extendableProtoType = reflect.TypeOf((*extendableProto)(nil)).Elem()
+
+// ExtensionDesc represents an extension specification.
+// Used in generated code from the protocol compiler.
+type ExtensionDesc struct {
+       ExtendedType  Message     // nil pointer to the type that is being extended
+       ExtensionType interface{} // nil pointer to the extension type
+       Field         int32       // field number
+       Name          string      // fully-qualified name of extension, for text formatting
+       Tag           string      // protobuf tag style
+}
+
+func (ed *ExtensionDesc) repeated() bool {
+       t := reflect.TypeOf(ed.ExtensionType)
+       return t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8
+}
+
+// Extension represents an extension in a message.
+type Extension struct {
+       // When an extension is stored in a message using SetExtension
+       // only desc and value are set. When the message is marshaled
+       // enc will be set to the encoded form of the message.
+       //
+       // When a message is unmarshaled and contains extensions, each
+       // extension will have only enc set. When such an extension is
+       // accessed using GetExtension (or GetExtensions) desc and value
+       // will be set.
+       desc  *ExtensionDesc
+       value interface{}
+       enc   []byte
+}
+
+// SetRawExtension is for testing only.
+func SetRawExtension(base extendableProto, id int32, b []byte) {
+       base.ExtensionMap()[id] = Extension{enc: b}
+}
+
+// isExtensionField returns true iff the given field number is in an extension range.
+func isExtensionField(pb extendableProto, field int32) bool {
+       for _, er := range pb.ExtensionRangeArray() {
+               if er.Start <= field && field <= er.End {
+                       return true
+               }
+       }
+       return false
+}
+
+// checkExtensionTypes checks that the given extension is valid for pb.
+func checkExtensionTypes(pb extendableProto, extension *ExtensionDesc) error {
+       // Check the extended type.
+       if a, b := reflect.TypeOf(pb), reflect.TypeOf(extension.ExtendedType); a != b {
+               return errors.New("proto: bad extended type; " + b.String() + " does not extend " + a.String())
+       }
+       // Check the range.
+       if !isExtensionField(pb, extension.Field) {
+               return errors.New("proto: bad extension number; not in declared ranges")
+       }
+       return nil
+}
+
+// extPropKey is sufficient to uniquely identify an extension.
+type extPropKey struct {
+       base  reflect.Type
+       field int32
+}
+
+var extProp = struct {
+       sync.RWMutex
+       m map[extPropKey]*Properties
+}{
+       m: make(map[extPropKey]*Properties),
+}
+
+func extensionProperties(ed *ExtensionDesc) *Properties {
+       key := extPropKey{base: reflect.TypeOf(ed.ExtendedType), field: ed.Field}
+
+       extProp.RLock()
+       if prop, ok := extProp.m[key]; ok {
+               extProp.RUnlock()
+               return prop
+       }
+       extProp.RUnlock()
+
+       extProp.Lock()
+       defer extProp.Unlock()
+       // Check again.
+       if prop, ok := extProp.m[key]; ok {
+               return prop
+       }
+
+       prop := new(Properties)
+       prop.Init(reflect.TypeOf(ed.ExtensionType), "unknown_name", ed.Tag, nil)
+       extProp.m[key] = prop
+       return prop
+}
+
+// encodeExtensionMap encodes any unmarshaled (unencoded) extensions in m.
+func encodeExtensionMap(m map[int32]Extension) error {
+       for k, e := range m {
+               if e.value == nil || e.desc == nil {
+                       // Extension is only in its encoded form.
+                       continue
+               }
+
+               // We don't skip extensions that have an encoded form set,
+               // because the extension value may have been mutated after
+               // the last time this function was called.
+
+               et := reflect.TypeOf(e.desc.ExtensionType)
+               props := extensionProperties(e.desc)
+
+               p := NewBuffer(nil)
+               // If e.value has type T, the encoder expects a *struct{ X T }.
+               // Pass a *T with a zero field and hope it all works out.
+               x := reflect.New(et)
+               x.Elem().Set(reflect.ValueOf(e.value))
+               if err := props.enc(p, props, toStructPointer(x)); err != nil {
+                       return err
+               }
+               e.enc = p.buf
+               m[k] = e
+       }
+       return nil
+}
+
+func sizeExtensionMap(m map[int32]Extension) (n int) {
+       for _, e := range m {
+               if e.value == nil || e.desc == nil {
+                       // Extension is only in its encoded form.
+                       n += len(e.enc)
+                       continue
+               }
+
+               // We don't skip extensions that have an encoded form set,
+               // because the extension value may have been mutated after
+               // the last time this function was called.
+
+               et := reflect.TypeOf(e.desc.ExtensionType)
+               props := extensionProperties(e.desc)
+
+               // If e.value has type T, the encoder expects a *struct{ X T }.
+               // Pass a *T with a zero field and hope it all works out.
+               x := reflect.New(et)
+               x.Elem().Set(reflect.ValueOf(e.value))
+               n += props.size(props, toStructPointer(x))
+       }
+       return
+}
+
+// HasExtension returns whether the given extension is present in pb.
+func HasExtension(pb extendableProto, extension *ExtensionDesc) bool {
+       // TODO: Check types, field numbers, etc.?
+       _, ok := pb.ExtensionMap()[extension.Field]
+       return ok
+}
+
+// ClearExtension removes the given extension from pb.
+func ClearExtension(pb extendableProto, extension *ExtensionDesc) {
+       // TODO: Check types, field numbers, etc.?
+       delete(pb.ExtensionMap(), extension.Field)
+}
+
+// GetExtension parses and returns the given extension of pb.
+// If the extension is not present and has no default value it returns ErrMissingExtension.
+func GetExtension(pb extendableProto, extension *ExtensionDesc) (interface{}, error) {
+       if err := checkExtensionTypes(pb, extension); err != nil {
+               return nil, err
+       }
+
+       emap := pb.ExtensionMap()
+       e, ok := emap[extension.Field]
+       if !ok {
+               // defaultExtensionValue returns the default value or
+               // ErrMissingExtension if there is no default.
+               return defaultExtensionValue(extension)
+       }
+
+       if e.value != nil {
+               // Already decoded. Check the descriptor, though.
+               if e.desc != extension {
+                       // This shouldn't happen. If it does, it means that
+                       // GetExtension was called twice with two different
+                       // descriptors with the same field number.
+                       return nil, errors.New("proto: descriptor conflict")
+               }
+               return e.value, nil
+       }
+
+       v, err := decodeExtension(e.enc, extension)
+       if err != nil {
+               return nil, err
+       }
+
+       // Remember the decoded version and drop the encoded version.
+       // That way it is safe to mutate what we return.
+       e.value = v
+       e.desc = extension
+       e.enc = nil
+       emap[extension.Field] = e
+       return e.value, nil
+}
+
+// defaultExtensionValue returns the default value for extension.
+// If no default for an extension is defined ErrMissingExtension is returned.
+func defaultExtensionValue(extension *ExtensionDesc) (interface{}, error) {
+       t := reflect.TypeOf(extension.ExtensionType)
+       props := extensionProperties(extension)
+
+       sf, _, err := fieldDefault(t, props)
+       if err != nil {
+               return nil, err
+       }
+
+       if sf == nil || sf.value == nil {
+               // There is no default value.
+               return nil, ErrMissingExtension
+       }
+
+       if t.Kind() != reflect.Ptr {
+               // We do not need to return a Ptr, we can directly return sf.value.
+               return sf.value, nil
+       }
+
+       // We need to return an interface{} that is a pointer to sf.value.
+       value := reflect.New(t).Elem()
+       value.Set(reflect.New(value.Type().Elem()))
+       if sf.kind == reflect.Int32 {
+               // We may have an int32 or an enum, but the underlying data is int32.
+               // Since we can't set an int32 into a non int32 reflect.value directly
+               // set it as a int32.
+               value.Elem().SetInt(int64(sf.value.(int32)))
+       } else {
+               value.Elem().Set(reflect.ValueOf(sf.value))
+       }
+       return value.Interface(), nil
+}
+
+// decodeExtension decodes an extension encoded in b.
+func decodeExtension(b []byte, extension *ExtensionDesc) (interface{}, error) {
+       o := NewBuffer(b)
+
+       t := reflect.TypeOf(extension.ExtensionType)
+
+       props := extensionProperties(extension)
+
+       // t is a pointer to a struct, pointer to basic type or a slice.
+       // Allocate a "field" to store the pointer/slice itself; the
+       // pointer/slice will be stored here. We pass
+       // the address of this field to props.dec.
+       // This passes a zero field and a *t and lets props.dec
+       // interpret it as a *struct{ x t }.
+       value := reflect.New(t).Elem()
+
+       for {
+               // Discard wire type and field number varint. It isn't needed.
+               if _, err := o.DecodeVarint(); err != nil {
+                       return nil, err
+               }
+
+               if err := props.dec(o, props, toStructPointer(value.Addr())); err != nil {
+                       return nil, err
+               }
+
+               if o.index >= len(o.buf) {
+                       break
+               }
+       }
+       return value.Interface(), nil
+}
+
+// GetExtensions returns a slice of the extensions present in pb that are also listed in es.
+// The returned slice has the same length as es; missing extensions will appear as nil elements.
+func GetExtensions(pb Message, es []*ExtensionDesc) (extensions []interface{}, err error) {
+       epb, ok := pb.(extendableProto)
+       if !ok {
+               err = errors.New("proto: not an extendable proto")
+               return
+       }
+       extensions = make([]interface{}, len(es))
+       for i, e := range es {
+               extensions[i], err = GetExtension(epb, e)
+               if err == ErrMissingExtension {
+                       err = nil
+               }
+               if err != nil {
+                       return
+               }
+       }
+       return
+}
+
+// SetExtension sets the specified extension of pb to the specified value.
+func SetExtension(pb extendableProto, extension *ExtensionDesc, value interface{}) error {
+       if err := checkExtensionTypes(pb, extension); err != nil {
+               return err
+       }
+       typ := reflect.TypeOf(extension.ExtensionType)
+       if typ != reflect.TypeOf(value) {
+               return errors.New("proto: bad extension value type")
+       }
+       // nil extension values need to be caught early, because the
+       // encoder can't distinguish an ErrNil due to a nil extension
+       // from an ErrNil due to a missing field. Extensions are
+       // always optional, so the encoder would just swallow the error
+       // and drop all the extensions from the encoded message.
+       if reflect.ValueOf(value).IsNil() {
+               return fmt.Errorf("proto: SetExtension called with nil value of type %T", value)
+       }
+
+       pb.ExtensionMap()[extension.Field] = Extension{desc: extension, value: value}
+       return nil
+}
+
+// A global registry of extensions.
+// The generated code will register the generated descriptors by calling RegisterExtension.
+
+var extensionMaps = make(map[reflect.Type]map[int32]*ExtensionDesc)
+
+// RegisterExtension is called from the generated code.
+func RegisterExtension(desc *ExtensionDesc) {
+       st := reflect.TypeOf(desc.ExtendedType).Elem()
+       m := extensionMaps[st]
+       if m == nil {
+               m = make(map[int32]*ExtensionDesc)
+               extensionMaps[st] = m
+       }
+       if _, ok := m[desc.Field]; ok {
+               panic("proto: duplicate extension registered: " + st.String() + " " + strconv.Itoa(int(desc.Field)))
+       }
+       m[desc.Field] = desc
+}
+
+// RegisteredExtensions returns a map of the registered extensions of a
+// protocol buffer struct, indexed by the extension number.
+// The argument pb should be a nil pointer to the struct type.
+func RegisteredExtensions(pb Message) map[int32]*ExtensionDesc {
+       return extensionMaps[reflect.TypeOf(pb).Elem()]
+}
diff --git a/vendor/github.com/golang/protobuf/proto/lib.go b/vendor/github.com/golang/protobuf/proto/lib.go
new file mode 100644 (file)
index 0000000..0de8f8d
--- /dev/null
@@ -0,0 +1,894 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/*
+Package proto converts data structures to and from the wire format of
+protocol buffers.  It works in concert with the Go source code generated
+for .proto files by the protocol compiler.
+
+A summary of the properties of the protocol buffer interface
+for a protocol buffer variable v:
+
+  - Names are turned from camel_case to CamelCase for export.
+  - There are no methods on v to set fields; just treat
+       them as structure fields.
+  - There are getters that return a field's value if set,
+       and return the field's default value if unset.
+       The getters work even if the receiver is a nil message.
+  - The zero value for a struct is its correct initialization state.
+       All desired fields must be set before marshaling.
+  - A Reset() method will restore a protobuf struct to its zero state.
+  - Non-repeated fields are pointers to the values; nil means unset.
+       That is, optional or required field int32 f becomes F *int32.
+  - Repeated fields are slices.
+  - Helper functions are available to aid the setting of fields.
+       msg.Foo = proto.String("hello") // set field
+  - Constants are defined to hold the default values of all fields that
+       have them.  They have the form Default_StructName_FieldName.
+       Because the getter methods handle defaulted values,
+       direct use of these constants should be rare.
+  - Enums are given type names and maps from names to values.
+       Enum values are prefixed by the enclosing message's name, or by the
+       enum's type name if it is a top-level enum. Enum types have a String
+       method, and a Enum method to assist in message construction.
+  - Nested messages, groups and enums have type names prefixed with the name of
+       the surrounding message type.
+  - Extensions are given descriptor names that start with E_,
+       followed by an underscore-delimited list of the nested messages
+       that contain it (if any) followed by the CamelCased name of the
+       extension field itself.  HasExtension, ClearExtension, GetExtension
+       and SetExtension are functions for manipulating extensions.
+  - Oneof field sets are given a single field in their message,
+       with distinguished wrapper types for each possible field value.
+  - Marshal and Unmarshal are functions to encode and decode the wire format.
+
+When the .proto file specifies `syntax="proto3"`, there are some differences:
+
+  - Non-repeated fields of non-message type are values instead of pointers.
+  - Getters are only generated for message and oneof fields.
+  - Enum types do not get an Enum method.
+
+The simplest way to describe this is to see an example.
+Given file test.proto, containing
+
+       package example;
+
+       enum FOO { X = 17; }
+
+       message Test {
+         required string label = 1;
+         optional int32 type = 2 [default=77];
+         repeated int64 reps = 3;
+         optional group OptionalGroup = 4 {
+           required string RequiredField = 5;
+         }
+         oneof union {
+           int32 number = 6;
+           string name = 7;
+         }
+       }
+
+The resulting file, test.pb.go, is:
+
+       package example
+
+       import proto "github.com/golang/protobuf/proto"
+       import math "math"
+
+       type FOO int32
+       const (
+               FOO_X FOO = 17
+       )
+       var FOO_name = map[int32]string{
+               17: "X",
+       }
+       var FOO_value = map[string]int32{
+               "X": 17,
+       }
+
+       func (x FOO) Enum() *FOO {
+               p := new(FOO)
+               *p = x
+               return p
+       }
+       func (x FOO) String() string {
+               return proto.EnumName(FOO_name, int32(x))
+       }
+       func (x *FOO) UnmarshalJSON(data []byte) error {
+               value, err := proto.UnmarshalJSONEnum(FOO_value, data)
+               if err != nil {
+                       return err
+               }
+               *x = FOO(value)
+               return nil
+       }
+
+       type Test struct {
+               Label         *string             `protobuf:"bytes,1,req,name=label" json:"label,omitempty"`
+               Type          *int32              `protobuf:"varint,2,opt,name=type,def=77" json:"type,omitempty"`
+               Reps          []int64             `protobuf:"varint,3,rep,name=reps" json:"reps,omitempty"`
+               Optionalgroup *Test_OptionalGroup `protobuf:"group,4,opt,name=OptionalGroup" json:"optionalgroup,omitempty"`
+               // Types that are valid to be assigned to Union:
+               //      *Test_Number
+               //      *Test_Name
+               Union            isTest_Union `protobuf_oneof:"union"`
+               XXX_unrecognized []byte       `json:"-"`
+       }
+       func (m *Test) Reset()         { *m = Test{} }
+       func (m *Test) String() string { return proto.CompactTextString(m) }
+       func (*Test) ProtoMessage() {}
+
+       type isTest_Union interface {
+               isTest_Union()
+       }
+
+       type Test_Number struct {
+               Number int32 `protobuf:"varint,6,opt,name=number"`
+       }
+       type Test_Name struct {
+               Name string `protobuf:"bytes,7,opt,name=name"`
+       }
+
+       func (*Test_Number) isTest_Union() {}
+       func (*Test_Name) isTest_Union()   {}
+
+       func (m *Test) GetUnion() isTest_Union {
+               if m != nil {
+                       return m.Union
+               }
+               return nil
+       }
+       const Default_Test_Type int32 = 77
+
+       func (m *Test) GetLabel() string {
+               if m != nil && m.Label != nil {
+                       return *m.Label
+               }
+               return ""
+       }
+
+       func (m *Test) GetType() int32 {
+               if m != nil && m.Type != nil {
+                       return *m.Type
+               }
+               return Default_Test_Type
+       }
+
+       func (m *Test) GetOptionalgroup() *Test_OptionalGroup {
+               if m != nil {
+                       return m.Optionalgroup
+               }
+               return nil
+       }
+
+       type Test_OptionalGroup struct {
+               RequiredField *string `protobuf:"bytes,5,req" json:"RequiredField,omitempty"`
+       }
+       func (m *Test_OptionalGroup) Reset()         { *m = Test_OptionalGroup{} }
+       func (m *Test_OptionalGroup) String() string { return proto.CompactTextString(m) }
+
+       func (m *Test_OptionalGroup) GetRequiredField() string {
+               if m != nil && m.RequiredField != nil {
+                       return *m.RequiredField
+               }
+               return ""
+       }
+
+       func (m *Test) GetNumber() int32 {
+               if x, ok := m.GetUnion().(*Test_Number); ok {
+                       return x.Number
+               }
+               return 0
+       }
+
+       func (m *Test) GetName() string {
+               if x, ok := m.GetUnion().(*Test_Name); ok {
+                       return x.Name
+               }
+               return ""
+       }
+
+       func init() {
+               proto.RegisterEnum("example.FOO", FOO_name, FOO_value)
+       }
+
+To create and play with a Test object:
+
+       package main
+
+       import (
+               "log"
+
+               "github.com/golang/protobuf/proto"
+               pb "./example.pb"
+       )
+
+       func main() {
+               test := &pb.Test{
+                       Label: proto.String("hello"),
+                       Type:  proto.Int32(17),
+                       Reps:  []int64{1, 2, 3},
+                       Optionalgroup: &pb.Test_OptionalGroup{
+                               RequiredField: proto.String("good bye"),
+                       },
+                       Union: &pb.Test_Name{"fred"},
+               }
+               data, err := proto.Marshal(test)
+               if err != nil {
+                       log.Fatal("marshaling error: ", err)
+               }
+               newTest := &pb.Test{}
+               err = proto.Unmarshal(data, newTest)
+               if err != nil {
+                       log.Fatal("unmarshaling error: ", err)
+               }
+               // Now test and newTest contain the same data.
+               if test.GetLabel() != newTest.GetLabel() {
+                       log.Fatalf("data mismatch %q != %q", test.GetLabel(), newTest.GetLabel())
+               }
+               // Use a type switch to determine which oneof was set.
+               switch u := test.Union.(type) {
+               case *pb.Test_Number: // u.Number contains the number.
+               case *pb.Test_Name: // u.Name contains the string.
+               }
+               // etc.
+       }
+*/
+package proto
+
+import (
+       "encoding/json"
+       "fmt"
+       "log"
+       "reflect"
+       "sort"
+       "strconv"
+       "sync"
+)
+
+// Message is implemented by generated protocol buffer messages.
+type Message interface {
+       Reset()
+       String() string
+       ProtoMessage()
+}
+
+// Stats records allocation details about the protocol buffer encoders
+// and decoders.  Useful for tuning the library itself.
+type Stats struct {
+       Emalloc uint64 // mallocs in encode
+       Dmalloc uint64 // mallocs in decode
+       Encode  uint64 // number of encodes
+       Decode  uint64 // number of decodes
+       Chit    uint64 // number of cache hits
+       Cmiss   uint64 // number of cache misses
+       Size    uint64 // number of sizes
+}
+
+// Set to true to enable stats collection.
+const collectStats = false
+
+var stats Stats
+
+// GetStats returns a copy of the global Stats structure.
+func GetStats() Stats { return stats }
+
+// A Buffer is a buffer manager for marshaling and unmarshaling
+// protocol buffers.  It may be reused between invocations to
+// reduce memory usage.  It is not necessary to use a Buffer;
+// the global functions Marshal and Unmarshal create a
+// temporary Buffer and are fine for most applications.
+type Buffer struct {
+       buf   []byte // encode/decode byte stream
+       index int    // write point
+
+       // pools of basic types to amortize allocation.
+       bools   []bool
+       uint32s []uint32
+       uint64s []uint64
+
+       // extra pools, only used with pointer_reflect.go
+       int32s   []int32
+       int64s   []int64
+       float32s []float32
+       float64s []float64
+}
+
+// NewBuffer allocates a new Buffer and initializes its internal data to
+// the contents of the argument slice.
+func NewBuffer(e []byte) *Buffer {
+       return &Buffer{buf: e}
+}
+
+// Reset resets the Buffer, ready for marshaling a new protocol buffer.
+func (p *Buffer) Reset() {
+       p.buf = p.buf[0:0] // for reading/writing
+       p.index = 0        // for reading
+}
+
+// SetBuf replaces the internal buffer with the slice,
+// ready for unmarshaling the contents of the slice.
+func (p *Buffer) SetBuf(s []byte) {
+       p.buf = s
+       p.index = 0
+}
+
+// Bytes returns the contents of the Buffer.
+func (p *Buffer) Bytes() []byte { return p.buf }
+
+/*
+ * Helper routines for simplifying the creation of optional fields of basic type.
+ */
+
+// Bool is a helper routine that allocates a new bool value
+// to store v and returns a pointer to it.
+func Bool(v bool) *bool {
+       return &v
+}
+
+// Int32 is a helper routine that allocates a new int32 value
+// to store v and returns a pointer to it.
+func Int32(v int32) *int32 {
+       return &v
+}
+
+// Int is a helper routine that allocates a new int32 value
+// to store v and returns a pointer to it, but unlike Int32
+// its argument value is an int.
+func Int(v int) *int32 {
+       p := new(int32)
+       *p = int32(v)
+       return p
+}
+
+// Int64 is a helper routine that allocates a new int64 value
+// to store v and returns a pointer to it.
+func Int64(v int64) *int64 {
+       return &v
+}
+
+// Float32 is a helper routine that allocates a new float32 value
+// to store v and returns a pointer to it.
+func Float32(v float32) *float32 {
+       return &v
+}
+
+// Float64 is a helper routine that allocates a new float64 value
+// to store v and returns a pointer to it.
+func Float64(v float64) *float64 {
+       return &v
+}
+
+// Uint32 is a helper routine that allocates a new uint32 value
+// to store v and returns a pointer to it.
+func Uint32(v uint32) *uint32 {
+       return &v
+}
+
+// Uint64 is a helper routine that allocates a new uint64 value
+// to store v and returns a pointer to it.
+func Uint64(v uint64) *uint64 {
+       return &v
+}
+
+// String is a helper routine that allocates a new string value
+// to store v and returns a pointer to it.
+func String(v string) *string {
+       return &v
+}
+
+// EnumName is a helper function to simplify printing protocol buffer enums
+// by name.  Given an enum map and a value, it returns a useful string.
+func EnumName(m map[int32]string, v int32) string {
+       s, ok := m[v]
+       if ok {
+               return s
+       }
+       return strconv.Itoa(int(v))
+}
+
+// UnmarshalJSONEnum is a helper function to simplify recovering enum int values
+// from their JSON-encoded representation. Given a map from the enum's symbolic
+// names to its int values, and a byte buffer containing the JSON-encoded
+// value, it returns an int32 that can be cast to the enum type by the caller.
+//
+// The function can deal with both JSON representations, numeric and symbolic.
+func UnmarshalJSONEnum(m map[string]int32, data []byte, enumName string) (int32, error) {
+       if data[0] == '"' {
+               // New style: enums are strings.
+               var repr string
+               if err := json.Unmarshal(data, &repr); err != nil {
+                       return -1, err
+               }
+               val, ok := m[repr]
+               if !ok {
+                       return 0, fmt.Errorf("unrecognized enum %s value %q", enumName, repr)
+               }
+               return val, nil
+       }
+       // Old style: enums are ints.
+       var val int32
+       if err := json.Unmarshal(data, &val); err != nil {
+               return 0, fmt.Errorf("cannot unmarshal %#q into enum %s", data, enumName)
+       }
+       return val, nil
+}
+
+// DebugPrint dumps the encoded data in b in a debugging format with a header
+// including the string s. Used in testing but made available for general debugging.
+func (p *Buffer) DebugPrint(s string, b []byte) {
+       var u uint64
+
+       obuf := p.buf
+       index := p.index
+       p.buf = b
+       p.index = 0
+       depth := 0
+
+       fmt.Printf("\n--- %s ---\n", s)
+
+out:
+       for {
+               for i := 0; i < depth; i++ {
+                       fmt.Print("  ")
+               }
+
+               index := p.index
+               if index == len(p.buf) {
+                       break
+               }
+
+               op, err := p.DecodeVarint()
+               if err != nil {
+                       fmt.Printf("%3d: fetching op err %v\n", index, err)
+                       break out
+               }
+               tag := op >> 3
+               wire := op & 7
+
+               switch wire {
+               default:
+                       fmt.Printf("%3d: t=%3d unknown wire=%d\n",
+                               index, tag, wire)
+                       break out
+
+               case WireBytes:
+                       var r []byte
+
+                       r, err = p.DecodeRawBytes(false)
+                       if err != nil {
+                               break out
+                       }
+                       fmt.Printf("%3d: t=%3d bytes [%d]", index, tag, len(r))
+                       if len(r) <= 6 {
+                               for i := 0; i < len(r); i++ {
+                                       fmt.Printf(" %.2x", r[i])
+                               }
+                       } else {
+                               for i := 0; i < 3; i++ {
+                                       fmt.Printf(" %.2x", r[i])
+                               }
+                               fmt.Printf(" ..")
+                               for i := len(r) - 3; i < len(r); i++ {
+                                       fmt.Printf(" %.2x", r[i])
+                               }
+                       }
+                       fmt.Printf("\n")
+
+               case WireFixed32:
+                       u, err = p.DecodeFixed32()
+                       if err != nil {
+                               fmt.Printf("%3d: t=%3d fix32 err %v\n", index, tag, err)
+                               break out
+                       }
+                       fmt.Printf("%3d: t=%3d fix32 %d\n", index, tag, u)
+
+               case WireFixed64:
+                       u, err = p.DecodeFixed64()
+                       if err != nil {
+                               fmt.Printf("%3d: t=%3d fix64 err %v\n", index, tag, err)
+                               break out
+                       }
+                       fmt.Printf("%3d: t=%3d fix64 %d\n", index, tag, u)
+
+               case WireVarint:
+                       u, err = p.DecodeVarint()
+                       if err != nil {
+                               fmt.Printf("%3d: t=%3d varint err %v\n", index, tag, err)
+                               break out
+                       }
+                       fmt.Printf("%3d: t=%3d varint %d\n", index, tag, u)
+
+               case WireStartGroup:
+                       fmt.Printf("%3d: t=%3d start\n", index, tag)
+                       depth++
+
+               case WireEndGroup:
+                       depth--
+                       fmt.Printf("%3d: t=%3d end\n", index, tag)
+               }
+       }
+
+       if depth != 0 {
+               fmt.Printf("%3d: start-end not balanced %d\n", p.index, depth)
+       }
+       fmt.Printf("\n")
+
+       p.buf = obuf
+       p.index = index
+}
+
+// SetDefaults sets unset protocol buffer fields to their default values.
+// It only modifies fields that are both unset and have defined defaults.
+// It recursively sets default values in any non-nil sub-messages.
+func SetDefaults(pb Message) {
+       setDefaults(reflect.ValueOf(pb), true, false)
+}
+
+// v is a pointer to a struct.
+func setDefaults(v reflect.Value, recur, zeros bool) {
+       v = v.Elem()
+
+       defaultMu.RLock()
+       dm, ok := defaults[v.Type()]
+       defaultMu.RUnlock()
+       if !ok {
+               dm = buildDefaultMessage(v.Type())
+               defaultMu.Lock()
+               defaults[v.Type()] = dm
+               defaultMu.Unlock()
+       }
+
+       for _, sf := range dm.scalars {
+               f := v.Field(sf.index)
+               if !f.IsNil() {
+                       // field already set
+                       continue
+               }
+               dv := sf.value
+               if dv == nil && !zeros {
+                       // no explicit default, and don't want to set zeros
+                       continue
+               }
+               fptr := f.Addr().Interface() // **T
+               // TODO: Consider batching the allocations we do here.
+               switch sf.kind {
+               case reflect.Bool:
+                       b := new(bool)
+                       if dv != nil {
+                               *b = dv.(bool)
+                       }
+                       *(fptr.(**bool)) = b
+               case reflect.Float32:
+                       f := new(float32)
+                       if dv != nil {
+                               *f = dv.(float32)
+                       }
+                       *(fptr.(**float32)) = f
+               case reflect.Float64:
+                       f := new(float64)
+                       if dv != nil {
+                               *f = dv.(float64)
+                       }
+                       *(fptr.(**float64)) = f
+               case reflect.Int32:
+                       // might be an enum
+                       if ft := f.Type(); ft != int32PtrType {
+                               // enum
+                               f.Set(reflect.New(ft.Elem()))
+                               if dv != nil {
+                                       f.Elem().SetInt(int64(dv.(int32)))
+                               }
+                       } else {
+                               // int32 field
+                               i := new(int32)
+                               if dv != nil {
+                                       *i = dv.(int32)
+                               }
+                               *(fptr.(**int32)) = i
+                       }
+               case reflect.Int64:
+                       i := new(int64)
+                       if dv != nil {
+                               *i = dv.(int64)
+                       }
+                       *(fptr.(**int64)) = i
+               case reflect.String:
+                       s := new(string)
+                       if dv != nil {
+                               *s = dv.(string)
+                       }
+                       *(fptr.(**string)) = s
+               case reflect.Uint8:
+                       // exceptional case: []byte
+                       var b []byte
+                       if dv != nil {
+                               db := dv.([]byte)
+                               b = make([]byte, len(db))
+                               copy(b, db)
+                       } else {
+                               b = []byte{}
+                       }
+                       *(fptr.(*[]byte)) = b
+               case reflect.Uint32:
+                       u := new(uint32)
+                       if dv != nil {
+                               *u = dv.(uint32)
+                       }
+                       *(fptr.(**uint32)) = u
+               case reflect.Uint64:
+                       u := new(uint64)
+                       if dv != nil {
+                               *u = dv.(uint64)
+                       }
+                       *(fptr.(**uint64)) = u
+               default:
+                       log.Printf("proto: can't set default for field %v (sf.kind=%v)", f, sf.kind)
+               }
+       }
+
+       for _, ni := range dm.nested {
+               f := v.Field(ni)
+               // f is *T or []*T or map[T]*T
+               switch f.Kind() {
+               case reflect.Ptr:
+                       if f.IsNil() {
+                               continue
+                       }
+                       setDefaults(f, recur, zeros)
+
+               case reflect.Slice:
+                       for i := 0; i < f.Len(); i++ {
+                               e := f.Index(i)
+                               if e.IsNil() {
+                                       continue
+                               }
+                               setDefaults(e, recur, zeros)
+                       }
+
+               case reflect.Map:
+                       for _, k := range f.MapKeys() {
+                               e := f.MapIndex(k)
+                               if e.IsNil() {
+                                       continue
+                               }
+                               setDefaults(e, recur, zeros)
+                       }
+               }
+       }
+}
+
+var (
+       // defaults maps a protocol buffer struct type to a slice of the fields,
+       // with its scalar fields set to their proto-declared non-zero default values.
+       defaultMu sync.RWMutex
+       defaults  = make(map[reflect.Type]defaultMessage)
+
+       int32PtrType = reflect.TypeOf((*int32)(nil))
+)
+
+// defaultMessage represents information about the default values of a message.
+type defaultMessage struct {
+       scalars []scalarField
+       nested  []int // struct field index of nested messages
+}
+
+type scalarField struct {
+       index int          // struct field index
+       kind  reflect.Kind // element type (the T in *T or []T)
+       value interface{}  // the proto-declared default value, or nil
+}
+
+// t is a struct type.
+func buildDefaultMessage(t reflect.Type) (dm defaultMessage) {
+       sprop := GetProperties(t)
+       for _, prop := range sprop.Prop {
+               fi, ok := sprop.decoderTags.get(prop.Tag)
+               if !ok {
+                       // XXX_unrecognized
+                       continue
+               }
+               ft := t.Field(fi).Type
+
+               sf, nested, err := fieldDefault(ft, prop)
+               switch {
+               case err != nil:
+                       log.Print(err)
+               case nested:
+                       dm.nested = append(dm.nested, fi)
+               case sf != nil:
+                       sf.index = fi
+                       dm.scalars = append(dm.scalars, *sf)
+               }
+       }
+
+       return dm
+}
+
+// fieldDefault returns the scalarField for field type ft.
+// sf will be nil if the field can not have a default.
+// nestedMessage will be true if this is a nested message.
+// Note that sf.index is not set on return.
+func fieldDefault(ft reflect.Type, prop *Properties) (sf *scalarField, nestedMessage bool, err error) {
+       var canHaveDefault bool
+       switch ft.Kind() {
+       case reflect.Ptr:
+               if ft.Elem().Kind() == reflect.Struct {
+                       nestedMessage = true
+               } else {
+                       canHaveDefault = true // proto2 scalar field
+               }
+
+       case reflect.Slice:
+               switch ft.Elem().Kind() {
+               case reflect.Ptr:
+                       nestedMessage = true // repeated message
+               case reflect.Uint8:
+                       canHaveDefault = true // bytes field
+               }
+
+       case reflect.Map:
+               if ft.Elem().Kind() == reflect.Ptr {
+                       nestedMessage = true // map with message values
+               }
+       }
+
+       if !canHaveDefault {
+               if nestedMessage {
+                       return nil, true, nil
+               }
+               return nil, false, nil
+       }
+
+       // We now know that ft is a pointer or slice.
+       sf = &scalarField{kind: ft.Elem().Kind()}
+
+       // scalar fields without defaults
+       if !prop.HasDefault {
+               return sf, false, nil
+       }
+
+       // a scalar field: either *T or []byte
+       switch ft.Elem().Kind() {
+       case reflect.Bool:
+               x, err := strconv.ParseBool(prop.Default)
+               if err != nil {
+                       return nil, false, fmt.Errorf("proto: bad default bool %q: %v", prop.Default, err)
+               }
+               sf.value = x
+       case reflect.Float32:
+               x, err := strconv.ParseFloat(prop.Default, 32)
+               if err != nil {
+                       return nil, false, fmt.Errorf("proto: bad default float32 %q: %v", prop.Default, err)
+               }
+               sf.value = float32(x)
+       case reflect.Float64:
+               x, err := strconv.ParseFloat(prop.Default, 64)
+               if err != nil {
+                       return nil, false, fmt.Errorf("proto: bad default float64 %q: %v", prop.Default, err)
+               }
+               sf.value = x
+       case reflect.Int32:
+               x, err := strconv.ParseInt(prop.Default, 10, 32)
+               if err != nil {
+                       return nil, false, fmt.Errorf("proto: bad default int32 %q: %v", prop.Default, err)
+               }
+               sf.value = int32(x)
+       case reflect.Int64:
+               x, err := strconv.ParseInt(prop.Default, 10, 64)
+               if err != nil {
+                       return nil, false, fmt.Errorf("proto: bad default int64 %q: %v", prop.Default, err)
+               }
+               sf.value = x
+       case reflect.String:
+               sf.value = prop.Default
+       case reflect.Uint8:
+               // []byte (not *uint8)
+               sf.value = []byte(prop.Default)
+       case reflect.Uint32:
+               x, err := strconv.ParseUint(prop.Default, 10, 32)
+               if err != nil {
+                       return nil, false, fmt.Errorf("proto: bad default uint32 %q: %v", prop.Default, err)
+               }
+               sf.value = uint32(x)
+       case reflect.Uint64:
+               x, err := strconv.ParseUint(prop.Default, 10, 64)
+               if err != nil {
+                       return nil, false, fmt.Errorf("proto: bad default uint64 %q: %v", prop.Default, err)
+               }
+               sf.value = x
+       default:
+               return nil, false, fmt.Errorf("proto: unhandled def kind %v", ft.Elem().Kind())
+       }
+
+       return sf, false, nil
+}
+
+// Map fields may have key types of non-float scalars, strings and enums.
+// The easiest way to sort them in some deterministic order is to use fmt.
+// If this turns out to be inefficient we can always consider other options,
+// such as doing a Schwartzian transform.
+
+func mapKeys(vs []reflect.Value) sort.Interface {
+       s := mapKeySorter{
+               vs: vs,
+               // default Less function: textual comparison
+               less: func(a, b reflect.Value) bool {
+                       return fmt.Sprint(a.Interface()) < fmt.Sprint(b.Interface())
+               },
+       }
+
+       // Type specialization per https://developers.google.com/protocol-buffers/docs/proto#maps;
+       // numeric keys are sorted numerically.
+       if len(vs) == 0 {
+               return s
+       }
+       switch vs[0].Kind() {
+       case reflect.Int32, reflect.Int64:
+               s.less = func(a, b reflect.Value) bool { return a.Int() < b.Int() }
+       case reflect.Uint32, reflect.Uint64:
+               s.less = func(a, b reflect.Value) bool { return a.Uint() < b.Uint() }
+       }
+
+       return s
+}
+
+type mapKeySorter struct {
+       vs   []reflect.Value
+       less func(a, b reflect.Value) bool
+}
+
+func (s mapKeySorter) Len() int      { return len(s.vs) }
+func (s mapKeySorter) Swap(i, j int) { s.vs[i], s.vs[j] = s.vs[j], s.vs[i] }
+func (s mapKeySorter) Less(i, j int) bool {
+       return s.less(s.vs[i], s.vs[j])
+}
+
+// isProto3Zero reports whether v is a zero proto3 value.
+func isProto3Zero(v reflect.Value) bool {
+       switch v.Kind() {
+       case reflect.Bool:
+               return !v.Bool()
+       case reflect.Int32, reflect.Int64:
+               return v.Int() == 0
+       case reflect.Uint32, reflect.Uint64:
+               return v.Uint() == 0
+       case reflect.Float32, reflect.Float64:
+               return v.Float() == 0
+       case reflect.String:
+               return v.String() == ""
+       }
+       return false
+}
+
+// ProtoPackageIsVersion1 is referenced from generated protocol buffer files
+// to assert that that code is compatible with this version of the proto package.
+const ProtoPackageIsVersion1 = true
diff --git a/vendor/github.com/golang/protobuf/proto/message_set.go b/vendor/github.com/golang/protobuf/proto/message_set.go
new file mode 100644 (file)
index 0000000..e25e01e
--- /dev/null
@@ -0,0 +1,280 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto
+
+/*
+ * Support for message sets.
+ */
+
+import (
+       "bytes"
+       "encoding/json"
+       "errors"
+       "fmt"
+       "reflect"
+       "sort"
+)
+
+// errNoMessageTypeID occurs when a protocol buffer does not have a message type ID.
+// A message type ID is required for storing a protocol buffer in a message set.
+var errNoMessageTypeID = errors.New("proto does not have a message type ID")
+
+// The first two types (_MessageSet_Item and messageSet)
+// model what the protocol compiler produces for the following protocol message:
+//   message MessageSet {
+//     repeated group Item = 1 {
+//       required int32 type_id = 2;
+//       required string message = 3;
+//     };
+//   }
+// That is the MessageSet wire format. We can't use a proto to generate these
+// because that would introduce a circular dependency between it and this package.
+
+type _MessageSet_Item struct {
+       TypeId  *int32 `protobuf:"varint,2,req,name=type_id"`
+       Message []byte `protobuf:"bytes,3,req,name=message"`
+}
+
+type messageSet struct {
+       Item             []*_MessageSet_Item `protobuf:"group,1,rep"`
+       XXX_unrecognized []byte
+       // TODO: caching?
+}
+
+// Make sure messageSet is a Message.
+var _ Message = (*messageSet)(nil)
+
+// messageTypeIder is an interface satisfied by a protocol buffer type
+// that may be stored in a MessageSet.
+type messageTypeIder interface {
+       MessageTypeId() int32
+}
+
+func (ms *messageSet) find(pb Message) *_MessageSet_Item {
+       mti, ok := pb.(messageTypeIder)
+       if !ok {
+               return nil
+       }
+       id := mti.MessageTypeId()
+       for _, item := range ms.Item {
+               if *item.TypeId == id {
+                       return item
+               }
+       }
+       return nil
+}
+
+func (ms *messageSet) Has(pb Message) bool {
+       if ms.find(pb) != nil {
+               return true
+       }
+       return false
+}
+
+func (ms *messageSet) Unmarshal(pb Message) error {
+       if item := ms.find(pb); item != nil {
+               return Unmarshal(item.Message, pb)
+       }
+       if _, ok := pb.(messageTypeIder); !ok {
+               return errNoMessageTypeID
+       }
+       return nil // TODO: return error instead?
+}
+
+func (ms *messageSet) Marshal(pb Message) error {
+       msg, err := Marshal(pb)
+       if err != nil {
+               return err
+       }
+       if item := ms.find(pb); item != nil {
+               // reuse existing item
+               item.Message = msg
+               return nil
+       }
+
+       mti, ok := pb.(messageTypeIder)
+       if !ok {
+               return errNoMessageTypeID
+       }
+
+       mtid := mti.MessageTypeId()
+       ms.Item = append(ms.Item, &_MessageSet_Item{
+               TypeId:  &mtid,
+               Message: msg,
+       })
+       return nil
+}
+
+func (ms *messageSet) Reset()         { *ms = messageSet{} }
+func (ms *messageSet) String() string { return CompactTextString(ms) }
+func (*messageSet) ProtoMessage()     {}
+
+// Support for the message_set_wire_format message option.
+
+func skipVarint(buf []byte) []byte {
+       i := 0
+       for ; buf[i]&0x80 != 0; i++ {
+       }
+       return buf[i+1:]
+}
+
+// MarshalMessageSet encodes the extension map represented by m in the message set wire format.
+// It is called by generated Marshal methods on protocol buffer messages with the message_set_wire_format option.
+func MarshalMessageSet(m map[int32]Extension) ([]byte, error) {
+       if err := encodeExtensionMap(m); err != nil {
+               return nil, err
+       }
+
+       // Sort extension IDs to provide a deterministic encoding.
+       // See also enc_map in encode.go.
+       ids := make([]int, 0, len(m))
+       for id := range m {
+               ids = append(ids, int(id))
+       }
+       sort.Ints(ids)
+
+       ms := &messageSet{Item: make([]*_MessageSet_Item, 0, len(m))}
+       for _, id := range ids {
+               e := m[int32(id)]
+               // Remove the wire type and field number varint, as well as the length varint.
+               msg := skipVarint(skipVarint(e.enc))
+
+               ms.Item = append(ms.Item, &_MessageSet_Item{
+                       TypeId:  Int32(int32(id)),
+                       Message: msg,
+               })
+       }
+       return Marshal(ms)
+}
+
+// UnmarshalMessageSet decodes the extension map encoded in buf in the message set wire format.
+// It is called by generated Unmarshal methods on protocol buffer messages with the message_set_wire_format option.
+func UnmarshalMessageSet(buf []byte, m map[int32]Extension) error {
+       ms := new(messageSet)
+       if err := Unmarshal(buf, ms); err != nil {
+               return err
+       }
+       for _, item := range ms.Item {
+               id := *item.TypeId
+               msg := item.Message
+
+               // Restore wire type and field number varint, plus length varint.
+               // Be careful to preserve duplicate items.
+               b := EncodeVarint(uint64(id)<<3 | WireBytes)
+               if ext, ok := m[id]; ok {
+                       // Existing data; rip off the tag and length varint
+                       // so we join the new data correctly.
+                       // We can assume that ext.enc is set because we are unmarshaling.
+                       o := ext.enc[len(b):]   // skip wire type and field number
+                       _, n := DecodeVarint(o) // calculate length of length varint
+                       o = o[n:]               // skip length varint
+                       msg = append(o, msg...) // join old data and new data
+               }
+               b = append(b, EncodeVarint(uint64(len(msg)))...)
+               b = append(b, msg...)
+
+               m[id] = Extension{enc: b}
+       }
+       return nil
+}
+
+// MarshalMessageSetJSON encodes the extension map represented by m in JSON format.
+// It is called by generated MarshalJSON methods on protocol buffer messages with the message_set_wire_format option.
+func MarshalMessageSetJSON(m map[int32]Extension) ([]byte, error) {
+       var b bytes.Buffer
+       b.WriteByte('{')
+
+       // Process the map in key order for deterministic output.
+       ids := make([]int32, 0, len(m))
+       for id := range m {
+               ids = append(ids, id)
+       }
+       sort.Sort(int32Slice(ids)) // int32Slice defined in text.go
+
+       for i, id := range ids {
+               ext := m[id]
+               if i > 0 {
+                       b.WriteByte(',')
+               }
+
+               msd, ok := messageSetMap[id]
+               if !ok {
+                       // Unknown type; we can't render it, so skip it.
+                       continue
+               }
+               fmt.Fprintf(&b, `"[%s]":`, msd.name)
+
+               x := ext.value
+               if x == nil {
+                       x = reflect.New(msd.t.Elem()).Interface()
+                       if err := Unmarshal(ext.enc, x.(Message)); err != nil {
+                               return nil, err
+                       }
+               }
+               d, err := json.Marshal(x)
+               if err != nil {
+                       return nil, err
+               }
+               b.Write(d)
+       }
+       b.WriteByte('}')
+       return b.Bytes(), nil
+}
+
+// UnmarshalMessageSetJSON decodes the extension map encoded in buf in JSON format.
+// It is called by generated UnmarshalJSON methods on protocol buffer messages with the message_set_wire_format option.
+func UnmarshalMessageSetJSON(buf []byte, m map[int32]Extension) error {
+       // Common-case fast path.
+       if len(buf) == 0 || bytes.Equal(buf, []byte("{}")) {
+               return nil
+       }
+
+       // This is fairly tricky, and it's not clear that it is needed.
+       return errors.New("TODO: UnmarshalMessageSetJSON not yet implemented")
+}
+
+// A global registry of types that can be used in a MessageSet.
+
+var messageSetMap = make(map[int32]messageSetDesc)
+
+type messageSetDesc struct {
+       t    reflect.Type // pointer to struct
+       name string
+}
+
+// RegisterMessageSetType is called from the generated code.
+func RegisterMessageSetType(m Message, fieldNum int32, name string) {
+       messageSetMap[fieldNum] = messageSetDesc{
+               t:    reflect.TypeOf(m),
+               name: name,
+       }
+}
diff --git a/vendor/github.com/golang/protobuf/proto/pointer_reflect.go b/vendor/github.com/golang/protobuf/proto/pointer_reflect.go
new file mode 100644 (file)
index 0000000..749919d
--- /dev/null
@@ -0,0 +1,479 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2012 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// +build appengine
+
+// This file contains an implementation of proto field accesses using package reflect.
+// It is slower than the code in pointer_unsafe.go but it avoids package unsafe and can
+// be used on App Engine.
+
+package proto
+
+import (
+       "math"
+       "reflect"
+)
+
+// A structPointer is a pointer to a struct.
+type structPointer struct {
+       v reflect.Value
+}
+
+// toStructPointer returns a structPointer equivalent to the given reflect value.
+// The reflect value must itself be a pointer to a struct.
+func toStructPointer(v reflect.Value) structPointer {
+       return structPointer{v}
+}
+
+// IsNil reports whether p is nil.
+func structPointer_IsNil(p structPointer) bool {
+       return p.v.IsNil()
+}
+
+// Interface returns the struct pointer as an interface value.
+func structPointer_Interface(p structPointer, _ reflect.Type) interface{} {
+       return p.v.Interface()
+}
+
+// A field identifies a field in a struct, accessible from a structPointer.
+// In this implementation, a field is identified by the sequence of field indices
+// passed to reflect's FieldByIndex.
+type field []int
+
+// toField returns a field equivalent to the given reflect field.
+func toField(f *reflect.StructField) field {
+       return f.Index
+}
+
+// invalidField is an invalid field identifier.
+var invalidField = field(nil)
+
+// IsValid reports whether the field identifier is valid.
+func (f field) IsValid() bool { return f != nil }
+
+// field returns the given field in the struct as a reflect value.
+func structPointer_field(p structPointer, f field) reflect.Value {
+       // Special case: an extension map entry with a value of type T
+       // passes a *T to the struct-handling code with a zero field,
+       // expecting that it will be treated as equivalent to *struct{ X T },
+       // which has the same memory layout. We have to handle that case
+       // specially, because reflect will panic if we call FieldByIndex on a
+       // non-struct.
+       if f == nil {
+               return p.v.Elem()
+       }
+
+       return p.v.Elem().FieldByIndex(f)
+}
+
+// ifield returns the given field in the struct as an interface value.
+func structPointer_ifield(p structPointer, f field) interface{} {
+       return structPointer_field(p, f).Addr().Interface()
+}
+
+// Bytes returns the address of a []byte field in the struct.
+func structPointer_Bytes(p structPointer, f field) *[]byte {
+       return structPointer_ifield(p, f).(*[]byte)
+}
+
+// BytesSlice returns the address of a [][]byte field in the struct.
+func structPointer_BytesSlice(p structPointer, f field) *[][]byte {
+       return structPointer_ifield(p, f).(*[][]byte)
+}
+
+// Bool returns the address of a *bool field in the struct.
+func structPointer_Bool(p structPointer, f field) **bool {
+       return structPointer_ifield(p, f).(**bool)
+}
+
+// BoolVal returns the address of a bool field in the struct.
+func structPointer_BoolVal(p structPointer, f field) *bool {
+       return structPointer_ifield(p, f).(*bool)
+}
+
+// BoolSlice returns the address of a []bool field in the struct.
+func structPointer_BoolSlice(p structPointer, f field) *[]bool {
+       return structPointer_ifield(p, f).(*[]bool)
+}
+
+// String returns the address of a *string field in the struct.
+func structPointer_String(p structPointer, f field) **string {
+       return structPointer_ifield(p, f).(**string)
+}
+
+// StringVal returns the address of a string field in the struct.
+func structPointer_StringVal(p structPointer, f field) *string {
+       return structPointer_ifield(p, f).(*string)
+}
+
+// StringSlice returns the address of a []string field in the struct.
+func structPointer_StringSlice(p structPointer, f field) *[]string {
+       return structPointer_ifield(p, f).(*[]string)
+}
+
+// ExtMap returns the address of an extension map field in the struct.
+func structPointer_ExtMap(p structPointer, f field) *map[int32]Extension {
+       return structPointer_ifield(p, f).(*map[int32]Extension)
+}
+
+// NewAt returns the reflect.Value for a pointer to a field in the struct.
+func structPointer_NewAt(p structPointer, f field, typ reflect.Type) reflect.Value {
+       return structPointer_field(p, f).Addr()
+}
+
+// SetStructPointer writes a *struct field in the struct.
+func structPointer_SetStructPointer(p structPointer, f field, q structPointer) {
+       structPointer_field(p, f).Set(q.v)
+}
+
+// GetStructPointer reads a *struct field in the struct.
+func structPointer_GetStructPointer(p structPointer, f field) structPointer {
+       return structPointer{structPointer_field(p, f)}
+}
+
+// StructPointerSlice the address of a []*struct field in the struct.
+func structPointer_StructPointerSlice(p structPointer, f field) structPointerSlice {
+       return structPointerSlice{structPointer_field(p, f)}
+}
+
+// A structPointerSlice represents the address of a slice of pointers to structs
+// (themselves messages or groups). That is, v.Type() is *[]*struct{...}.
+type structPointerSlice struct {
+       v reflect.Value
+}
+
+func (p structPointerSlice) Len() int                  { return p.v.Len() }
+func (p structPointerSlice) Index(i int) structPointer { return structPointer{p.v.Index(i)} }
+func (p structPointerSlice) Append(q structPointer) {
+       p.v.Set(reflect.Append(p.v, q.v))
+}
+
+var (
+       int32Type   = reflect.TypeOf(int32(0))
+       uint32Type  = reflect.TypeOf(uint32(0))
+       float32Type = reflect.TypeOf(float32(0))
+       int64Type   = reflect.TypeOf(int64(0))
+       uint64Type  = reflect.TypeOf(uint64(0))
+       float64Type = reflect.TypeOf(float64(0))
+)
+
+// A word32 represents a field of type *int32, *uint32, *float32, or *enum.
+// That is, v.Type() is *int32, *uint32, *float32, or *enum and v is assignable.
+type word32 struct {
+       v reflect.Value
+}
+
+// IsNil reports whether p is nil.
+func word32_IsNil(p word32) bool {
+       return p.v.IsNil()
+}
+
+// Set sets p to point at a newly allocated word with bits set to x.
+func word32_Set(p word32, o *Buffer, x uint32) {
+       t := p.v.Type().Elem()
+       switch t {
+       case int32Type:
+               if len(o.int32s) == 0 {
+                       o.int32s = make([]int32, uint32PoolSize)
+               }
+               o.int32s[0] = int32(x)
+               p.v.Set(reflect.ValueOf(&o.int32s[0]))
+               o.int32s = o.int32s[1:]
+               return
+       case uint32Type:
+               if len(o.uint32s) == 0 {
+                       o.uint32s = make([]uint32, uint32PoolSize)
+               }
+               o.uint32s[0] = x
+               p.v.Set(reflect.ValueOf(&o.uint32s[0]))
+               o.uint32s = o.uint32s[1:]
+               return
+       case float32Type:
+               if len(o.float32s) == 0 {
+                       o.float32s = make([]float32, uint32PoolSize)
+               }
+               o.float32s[0] = math.Float32frombits(x)
+               p.v.Set(reflect.ValueOf(&o.float32s[0]))
+               o.float32s = o.float32s[1:]
+               return
+       }
+
+       // must be enum
+       p.v.Set(reflect.New(t))
+       p.v.Elem().SetInt(int64(int32(x)))
+}
+
+// Get gets the bits pointed at by p, as a uint32.
+func word32_Get(p word32) uint32 {
+       elem := p.v.Elem()
+       switch elem.Kind() {
+       case reflect.Int32:
+               return uint32(elem.Int())
+       case reflect.Uint32:
+               return uint32(elem.Uint())
+       case reflect.Float32:
+               return math.Float32bits(float32(elem.Float()))
+       }
+       panic("unreachable")
+}
+
+// Word32 returns a reference to a *int32, *uint32, *float32, or *enum field in the struct.
+func structPointer_Word32(p structPointer, f field) word32 {
+       return word32{structPointer_field(p, f)}
+}
+
+// A word32Val represents a field of type int32, uint32, float32, or enum.
+// That is, v.Type() is int32, uint32, float32, or enum and v is assignable.
+type word32Val struct {
+       v reflect.Value
+}
+
+// Set sets *p to x.
+func word32Val_Set(p word32Val, x uint32) {
+       switch p.v.Type() {
+       case int32Type:
+               p.v.SetInt(int64(x))
+               return
+       case uint32Type:
+               p.v.SetUint(uint64(x))
+               return
+       case float32Type:
+               p.v.SetFloat(float64(math.Float32frombits(x)))
+               return
+       }
+
+       // must be enum
+       p.v.SetInt(int64(int32(x)))
+}
+
+// Get gets the bits pointed at by p, as a uint32.
+func word32Val_Get(p word32Val) uint32 {
+       elem := p.v
+       switch elem.Kind() {
+       case reflect.Int32:
+               return uint32(elem.Int())
+       case reflect.Uint32:
+               return uint32(elem.Uint())
+       case reflect.Float32:
+               return math.Float32bits(float32(elem.Float()))
+       }
+       panic("unreachable")
+}
+
+// Word32Val returns a reference to a int32, uint32, float32, or enum field in the struct.
+func structPointer_Word32Val(p structPointer, f field) word32Val {
+       return word32Val{structPointer_field(p, f)}
+}
+
+// A word32Slice is a slice of 32-bit values.
+// That is, v.Type() is []int32, []uint32, []float32, or []enum.
+type word32Slice struct {
+       v reflect.Value
+}
+
+func (p word32Slice) Append(x uint32) {
+       n, m := p.v.Len(), p.v.Cap()
+       if n < m {
+               p.v.SetLen(n + 1)
+       } else {
+               t := p.v.Type().Elem()
+               p.v.Set(reflect.Append(p.v, reflect.Zero(t)))
+       }
+       elem := p.v.Index(n)
+       switch elem.Kind() {
+       case reflect.Int32:
+               elem.SetInt(int64(int32(x)))
+       case reflect.Uint32:
+               elem.SetUint(uint64(x))
+       case reflect.Float32:
+               elem.SetFloat(float64(math.Float32frombits(x)))
+       }
+}
+
+func (p word32Slice) Len() int {
+       return p.v.Len()
+}
+
+func (p word32Slice) Index(i int) uint32 {
+       elem := p.v.Index(i)
+       switch elem.Kind() {
+       case reflect.Int32:
+               return uint32(elem.Int())
+       case reflect.Uint32:
+               return uint32(elem.Uint())
+       case reflect.Float32:
+               return math.Float32bits(float32(elem.Float()))
+       }
+       panic("unreachable")
+}
+
+// Word32Slice returns a reference to a []int32, []uint32, []float32, or []enum field in the struct.
+func structPointer_Word32Slice(p structPointer, f field) word32Slice {
+       return word32Slice{structPointer_field(p, f)}
+}
+
+// word64 is like word32 but for 64-bit values.
+type word64 struct {
+       v reflect.Value
+}
+
+func word64_Set(p word64, o *Buffer, x uint64) {
+       t := p.v.Type().Elem()
+       switch t {
+       case int64Type:
+               if len(o.int64s) == 0 {
+                       o.int64s = make([]int64, uint64PoolSize)
+               }
+               o.int64s[0] = int64(x)
+               p.v.Set(reflect.ValueOf(&o.int64s[0]))
+               o.int64s = o.int64s[1:]
+               return
+       case uint64Type:
+               if len(o.uint64s) == 0 {
+                       o.uint64s = make([]uint64, uint64PoolSize)
+               }
+               o.uint64s[0] = x
+               p.v.Set(reflect.ValueOf(&o.uint64s[0]))
+               o.uint64s = o.uint64s[1:]
+               return
+       case float64Type:
+               if len(o.float64s) == 0 {
+                       o.float64s = make([]float64, uint64PoolSize)
+               }
+               o.float64s[0] = math.Float64frombits(x)
+               p.v.Set(reflect.ValueOf(&o.float64s[0]))
+               o.float64s = o.float64s[1:]
+               return
+       }
+       panic("unreachable")
+}
+
+func word64_IsNil(p word64) bool {
+       return p.v.IsNil()
+}
+
+func word64_Get(p word64) uint64 {
+       elem := p.v.Elem()
+       switch elem.Kind() {
+       case reflect.Int64:
+               return uint64(elem.Int())
+       case reflect.Uint64:
+               return elem.Uint()
+       case reflect.Float64:
+               return math.Float64bits(elem.Float())
+       }
+       panic("unreachable")
+}
+
+func structPointer_Word64(p structPointer, f field) word64 {
+       return word64{structPointer_field(p, f)}
+}
+
+// word64Val is like word32Val but for 64-bit values.
+type word64Val struct {
+       v reflect.Value
+}
+
+func word64Val_Set(p word64Val, o *Buffer, x uint64) {
+       switch p.v.Type() {
+       case int64Type:
+               p.v.SetInt(int64(x))
+               return
+       case uint64Type:
+               p.v.SetUint(x)
+               return
+       case float64Type:
+               p.v.SetFloat(math.Float64frombits(x))
+               return
+       }
+       panic("unreachable")
+}
+
+func word64Val_Get(p word64Val) uint64 {
+       elem := p.v
+       switch elem.Kind() {
+       case reflect.Int64:
+               return uint64(elem.Int())
+       case reflect.Uint64:
+               return elem.Uint()
+       case reflect.Float64:
+               return math.Float64bits(elem.Float())
+       }
+       panic("unreachable")
+}
+
+func structPointer_Word64Val(p structPointer, f field) word64Val {
+       return word64Val{structPointer_field(p, f)}
+}
+
+type word64Slice struct {
+       v reflect.Value
+}
+
+func (p word64Slice) Append(x uint64) {
+       n, m := p.v.Len(), p.v.Cap()
+       if n < m {
+               p.v.SetLen(n + 1)
+       } else {
+               t := p.v.Type().Elem()
+               p.v.Set(reflect.Append(p.v, reflect.Zero(t)))
+       }
+       elem := p.v.Index(n)
+       switch elem.Kind() {
+       case reflect.Int64:
+               elem.SetInt(int64(int64(x)))
+       case reflect.Uint64:
+               elem.SetUint(uint64(x))
+       case reflect.Float64:
+               elem.SetFloat(float64(math.Float64frombits(x)))
+       }
+}
+
+func (p word64Slice) Len() int {
+       return p.v.Len()
+}
+
+func (p word64Slice) Index(i int) uint64 {
+       elem := p.v.Index(i)
+       switch elem.Kind() {
+       case reflect.Int64:
+               return uint64(elem.Int())
+       case reflect.Uint64:
+               return uint64(elem.Uint())
+       case reflect.Float64:
+               return math.Float64bits(float64(elem.Float()))
+       }
+       panic("unreachable")
+}
+
+func structPointer_Word64Slice(p structPointer, f field) word64Slice {
+       return word64Slice{structPointer_field(p, f)}
+}
diff --git a/vendor/github.com/golang/protobuf/proto/pointer_unsafe.go b/vendor/github.com/golang/protobuf/proto/pointer_unsafe.go
new file mode 100644 (file)
index 0000000..e9be0fe
--- /dev/null
@@ -0,0 +1,266 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2012 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// +build !appengine
+
+// This file contains the implementation of the proto field accesses using package unsafe.
+
+package proto
+
+import (
+       "reflect"
+       "unsafe"
+)
+
+// NOTE: These type_Foo functions would more idiomatically be methods,
+// but Go does not allow methods on pointer types, and we must preserve
+// some pointer type for the garbage collector. We use these
+// funcs with clunky names as our poor approximation to methods.
+//
+// An alternative would be
+//     type structPointer struct { p unsafe.Pointer }
+// but that does not registerize as well.
+
+// A structPointer is a pointer to a struct.
+type structPointer unsafe.Pointer
+
+// toStructPointer returns a structPointer equivalent to the given reflect value.
+func toStructPointer(v reflect.Value) structPointer {
+       return structPointer(unsafe.Pointer(v.Pointer()))
+}
+
+// IsNil reports whether p is nil.
+func structPointer_IsNil(p structPointer) bool {
+       return p == nil
+}
+
+// Interface returns the struct pointer, assumed to have element type t,
+// as an interface value.
+func structPointer_Interface(p structPointer, t reflect.Type) interface{} {
+       return reflect.NewAt(t, unsafe.Pointer(p)).Interface()
+}
+
+// A field identifies a field in a struct, accessible from a structPointer.
+// In this implementation, a field is identified by its byte offset from the start of the struct.
+type field uintptr
+
+// toField returns a field equivalent to the given reflect field.
+func toField(f *reflect.StructField) field {
+       return field(f.Offset)
+}
+
+// invalidField is an invalid field identifier.
+const invalidField = ^field(0)
+
+// IsValid reports whether the field identifier is valid.
+func (f field) IsValid() bool {
+       return f != ^field(0)
+}
+
+// Bytes returns the address of a []byte field in the struct.
+func structPointer_Bytes(p structPointer, f field) *[]byte {
+       return (*[]byte)(unsafe.Pointer(uintptr(p) + uintptr(f)))
+}
+
+// BytesSlice returns the address of a [][]byte field in the struct.
+func structPointer_BytesSlice(p structPointer, f field) *[][]byte {
+       return (*[][]byte)(unsafe.Pointer(uintptr(p) + uintptr(f)))
+}
+
+// Bool returns the address of a *bool field in the struct.
+func structPointer_Bool(p structPointer, f field) **bool {
+       return (**bool)(unsafe.Pointer(uintptr(p) + uintptr(f)))
+}
+
+// BoolVal returns the address of a bool field in the struct.
+func structPointer_BoolVal(p structPointer, f field) *bool {
+       return (*bool)(unsafe.Pointer(uintptr(p) + uintptr(f)))
+}
+
+// BoolSlice returns the address of a []bool field in the struct.
+func structPointer_BoolSlice(p structPointer, f field) *[]bool {
+       return (*[]bool)(unsafe.Pointer(uintptr(p) + uintptr(f)))
+}
+
+// String returns the address of a *string field in the struct.
+func structPointer_String(p structPointer, f field) **string {
+       return (**string)(unsafe.Pointer(uintptr(p) + uintptr(f)))
+}
+
+// StringVal returns the address of a string field in the struct.
+func structPointer_StringVal(p structPointer, f field) *string {
+       return (*string)(unsafe.Pointer(uintptr(p) + uintptr(f)))
+}
+
+// StringSlice returns the address of a []string field in the struct.
+func structPointer_StringSlice(p structPointer, f field) *[]string {
+       return (*[]string)(unsafe.Pointer(uintptr(p) + uintptr(f)))
+}
+
+// ExtMap returns the address of an extension map field in the struct.
+func structPointer_ExtMap(p structPointer, f field) *map[int32]Extension {
+       return (*map[int32]Extension)(unsafe.Pointer(uintptr(p) + uintptr(f)))
+}
+
+// NewAt returns the reflect.Value for a pointer to a field in the struct.
+func structPointer_NewAt(p structPointer, f field, typ reflect.Type) reflect.Value {
+       return reflect.NewAt(typ, unsafe.Pointer(uintptr(p)+uintptr(f)))
+}
+
+// SetStructPointer writes a *struct field in the struct.
+func structPointer_SetStructPointer(p structPointer, f field, q structPointer) {
+       *(*structPointer)(unsafe.Pointer(uintptr(p) + uintptr(f))) = q
+}
+
+// GetStructPointer reads a *struct field in the struct.
+func structPointer_GetStructPointer(p structPointer, f field) structPointer {
+       return *(*structPointer)(unsafe.Pointer(uintptr(p) + uintptr(f)))
+}
+
+// StructPointerSlice the address of a []*struct field in the struct.
+func structPointer_StructPointerSlice(p structPointer, f field) *structPointerSlice {
+       return (*structPointerSlice)(unsafe.Pointer(uintptr(p) + uintptr(f)))
+}
+
+// A structPointerSlice represents a slice of pointers to structs (themselves submessages or groups).
+type structPointerSlice []structPointer
+
+func (v *structPointerSlice) Len() int                  { return len(*v) }
+func (v *structPointerSlice) Index(i int) structPointer { return (*v)[i] }
+func (v *structPointerSlice) Append(p structPointer)    { *v = append(*v, p) }
+
+// A word32 is the address of a "pointer to 32-bit value" field.
+type word32 **uint32
+
+// IsNil reports whether *v is nil.
+func word32_IsNil(p word32) bool {
+       return *p == nil
+}
+
+// Set sets *v to point at a newly allocated word set to x.
+func word32_Set(p word32, o *Buffer, x uint32) {
+       if len(o.uint32s) == 0 {
+               o.uint32s = make([]uint32, uint32PoolSize)
+       }
+       o.uint32s[0] = x
+       *p = &o.uint32s[0]
+       o.uint32s = o.uint32s[1:]
+}
+
+// Get gets the value pointed at by *v.
+func word32_Get(p word32) uint32 {
+       return **p
+}
+
+// Word32 returns the address of a *int32, *uint32, *float32, or *enum field in the struct.
+func structPointer_Word32(p structPointer, f field) word32 {
+       return word32((**uint32)(unsafe.Pointer(uintptr(p) + uintptr(f))))
+}
+
+// A word32Val is the address of a 32-bit value field.
+type word32Val *uint32
+
+// Set sets *p to x.
+func word32Val_Set(p word32Val, x uint32) {
+       *p = x
+}
+
+// Get gets the value pointed at by p.
+func word32Val_Get(p word32Val) uint32 {
+       return *p
+}
+
+// Word32Val returns the address of a *int32, *uint32, *float32, or *enum field in the struct.
+func structPointer_Word32Val(p structPointer, f field) word32Val {
+       return word32Val((*uint32)(unsafe.Pointer(uintptr(p) + uintptr(f))))
+}
+
+// A word32Slice is a slice of 32-bit values.
+type word32Slice []uint32
+
+func (v *word32Slice) Append(x uint32)    { *v = append(*v, x) }
+func (v *word32Slice) Len() int           { return len(*v) }
+func (v *word32Slice) Index(i int) uint32 { return (*v)[i] }
+
+// Word32Slice returns the address of a []int32, []uint32, []float32, or []enum field in the struct.
+func structPointer_Word32Slice(p structPointer, f field) *word32Slice {
+       return (*word32Slice)(unsafe.Pointer(uintptr(p) + uintptr(f)))
+}
+
+// word64 is like word32 but for 64-bit values.
+type word64 **uint64
+
+func word64_Set(p word64, o *Buffer, x uint64) {
+       if len(o.uint64s) == 0 {
+               o.uint64s = make([]uint64, uint64PoolSize)
+       }
+       o.uint64s[0] = x
+       *p = &o.uint64s[0]
+       o.uint64s = o.uint64s[1:]
+}
+
+func word64_IsNil(p word64) bool {
+       return *p == nil
+}
+
+func word64_Get(p word64) uint64 {
+       return **p
+}
+
+func structPointer_Word64(p structPointer, f field) word64 {
+       return word64((**uint64)(unsafe.Pointer(uintptr(p) + uintptr(f))))
+}
+
+// word64Val is like word32Val but for 64-bit values.
+type word64Val *uint64
+
+func word64Val_Set(p word64Val, o *Buffer, x uint64) {
+       *p = x
+}
+
+func word64Val_Get(p word64Val) uint64 {
+       return *p
+}
+
+func structPointer_Word64Val(p structPointer, f field) word64Val {
+       return word64Val((*uint64)(unsafe.Pointer(uintptr(p) + uintptr(f))))
+}
+
+// word64Slice is like word32Slice but for 64-bit values.
+type word64Slice []uint64
+
+func (v *word64Slice) Append(x uint64)    { *v = append(*v, x) }
+func (v *word64Slice) Len() int           { return len(*v) }
+func (v *word64Slice) Index(i int) uint64 { return (*v)[i] }
+
+func structPointer_Word64Slice(p structPointer, f field) *word64Slice {
+       return (*word64Slice)(unsafe.Pointer(uintptr(p) + uintptr(f)))
+}
diff --git a/vendor/github.com/golang/protobuf/proto/properties.go b/vendor/github.com/golang/protobuf/proto/properties.go
new file mode 100644 (file)
index 0000000..4fe2ec2
--- /dev/null
@@ -0,0 +1,846 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto
+
+/*
+ * Routines for encoding data into the wire format for protocol buffers.
+ */
+
+import (
+       "fmt"
+       "log"
+       "os"
+       "reflect"
+       "sort"
+       "strconv"
+       "strings"
+       "sync"
+)
+
+const debug bool = false
+
+// Constants that identify the encoding of a value on the wire.
+const (
+       WireVarint     = 0
+       WireFixed64    = 1
+       WireBytes      = 2
+       WireStartGroup = 3
+       WireEndGroup   = 4
+       WireFixed32    = 5
+)
+
+const startSize = 10 // initial slice/string sizes
+
+// Encoders are defined in encode.go
+// An encoder outputs the full representation of a field, including its
+// tag and encoder type.
+type encoder func(p *Buffer, prop *Properties, base structPointer) error
+
+// A valueEncoder encodes a single integer in a particular encoding.
+type valueEncoder func(o *Buffer, x uint64) error
+
+// Sizers are defined in encode.go
+// A sizer returns the encoded size of a field, including its tag and encoder
+// type.
+type sizer func(prop *Properties, base structPointer) int
+
+// A valueSizer returns the encoded size of a single integer in a particular
+// encoding.
+type valueSizer func(x uint64) int
+
+// Decoders are defined in decode.go
+// A decoder creates a value from its wire representation.
+// Unrecognized subelements are saved in unrec.
+type decoder func(p *Buffer, prop *Properties, base structPointer) error
+
+// A valueDecoder decodes a single integer in a particular encoding.
+type valueDecoder func(o *Buffer) (x uint64, err error)
+
+// A oneofMarshaler does the marshaling for all oneof fields in a message.
+type oneofMarshaler func(Message, *Buffer) error
+
+// A oneofUnmarshaler does the unmarshaling for a oneof field in a message.
+type oneofUnmarshaler func(Message, int, int, *Buffer) (bool, error)
+
+// A oneofSizer does the sizing for all oneof fields in a message.
+type oneofSizer func(Message) int
+
+// tagMap is an optimization over map[int]int for typical protocol buffer
+// use-cases. Encoded protocol buffers are often in tag order with small tag
+// numbers.
+type tagMap struct {
+       fastTags []int
+       slowTags map[int]int
+}
+
+// tagMapFastLimit is the upper bound on the tag number that will be stored in
+// the tagMap slice rather than its map.
+const tagMapFastLimit = 1024
+
+func (p *tagMap) get(t int) (int, bool) {
+       if t > 0 && t < tagMapFastLimit {
+               if t >= len(p.fastTags) {
+                       return 0, false
+               }
+               fi := p.fastTags[t]
+               return fi, fi >= 0
+       }
+       fi, ok := p.slowTags[t]
+       return fi, ok
+}
+
+func (p *tagMap) put(t int, fi int) {
+       if t > 0 && t < tagMapFastLimit {
+               for len(p.fastTags) < t+1 {
+                       p.fastTags = append(p.fastTags, -1)
+               }
+               p.fastTags[t] = fi
+               return
+       }
+       if p.slowTags == nil {
+               p.slowTags = make(map[int]int)
+       }
+       p.slowTags[t] = fi
+}
+
+// StructProperties represents properties for all the fields of a struct.
+// decoderTags and decoderOrigNames should only be used by the decoder.
+type StructProperties struct {
+       Prop             []*Properties  // properties for each field
+       reqCount         int            // required count
+       decoderTags      tagMap         // map from proto tag to struct field number
+       decoderOrigNames map[string]int // map from original name to struct field number
+       order            []int          // list of struct field numbers in tag order
+       unrecField       field          // field id of the XXX_unrecognized []byte field
+       extendable       bool           // is this an extendable proto
+
+       oneofMarshaler   oneofMarshaler
+       oneofUnmarshaler oneofUnmarshaler
+       oneofSizer       oneofSizer
+       stype            reflect.Type
+
+       // OneofTypes contains information about the oneof fields in this message.
+       // It is keyed by the original name of a field.
+       OneofTypes map[string]*OneofProperties
+}
+
+// OneofProperties represents information about a specific field in a oneof.
+type OneofProperties struct {
+       Type  reflect.Type // pointer to generated struct type for this oneof field
+       Field int          // struct field number of the containing oneof in the message
+       Prop  *Properties
+}
+
+// Implement the sorting interface so we can sort the fields in tag order, as recommended by the spec.
+// See encode.go, (*Buffer).enc_struct.
+
+func (sp *StructProperties) Len() int { return len(sp.order) }
+func (sp *StructProperties) Less(i, j int) bool {
+       return sp.Prop[sp.order[i]].Tag < sp.Prop[sp.order[j]].Tag
+}
+func (sp *StructProperties) Swap(i, j int) { sp.order[i], sp.order[j] = sp.order[j], sp.order[i] }
+
+// Properties represents the protocol-specific behavior of a single struct field.
+type Properties struct {
+       Name     string // name of the field, for error messages
+       OrigName string // original name before protocol compiler (always set)
+       JSONName string // name to use for JSON; determined by protoc
+       Wire     string
+       WireType int
+       Tag      int
+       Required bool
+       Optional bool
+       Repeated bool
+       Packed   bool   // relevant for repeated primitives only
+       Enum     string // set for enum types only
+       proto3   bool   // whether this is known to be a proto3 field; set for []byte only
+       oneof    bool   // whether this is a oneof field
+
+       Default    string // default value
+       HasDefault bool   // whether an explicit default was provided
+       def_uint64 uint64
+
+       enc           encoder
+       valEnc        valueEncoder // set for bool and numeric types only
+       field         field
+       tagcode       []byte // encoding of EncodeVarint((Tag<<3)|WireType)
+       tagbuf        [8]byte
+       stype         reflect.Type      // set for struct types only
+       sprop         *StructProperties // set for struct types only
+       isMarshaler   bool
+       isUnmarshaler bool
+
+       mtype    reflect.Type // set for map types only
+       mkeyprop *Properties  // set for map types only
+       mvalprop *Properties  // set for map types only
+
+       size    sizer
+       valSize valueSizer // set for bool and numeric types only
+
+       dec    decoder
+       valDec valueDecoder // set for bool and numeric types only
+
+       // If this is a packable field, this will be the decoder for the packed version of the field.
+       packedDec decoder
+}
+
+// String formats the properties in the protobuf struct field tag style.
+func (p *Properties) String() string {
+       s := p.Wire
+       s = ","
+       s += strconv.Itoa(p.Tag)
+       if p.Required {
+               s += ",req"
+       }
+       if p.Optional {
+               s += ",opt"
+       }
+       if p.Repeated {
+               s += ",rep"
+       }
+       if p.Packed {
+               s += ",packed"
+       }
+       s += ",name=" + p.OrigName
+       if p.JSONName != p.OrigName {
+               s += ",json=" + p.JSONName
+       }
+       if p.proto3 {
+               s += ",proto3"
+       }
+       if p.oneof {
+               s += ",oneof"
+       }
+       if len(p.Enum) > 0 {
+               s += ",enum=" + p.Enum
+       }
+       if p.HasDefault {
+               s += ",def=" + p.Default
+       }
+       return s
+}
+
+// Parse populates p by parsing a string in the protobuf struct field tag style.
+func (p *Properties) Parse(s string) {
+       // "bytes,49,opt,name=foo,def=hello!"
+       fields := strings.Split(s, ",") // breaks def=, but handled below.
+       if len(fields) < 2 {
+               fmt.Fprintf(os.Stderr, "proto: tag has too few fields: %q\n", s)
+               return
+       }
+
+       p.Wire = fields[0]
+       switch p.Wire {
+       case "varint":
+               p.WireType = WireVarint
+               p.valEnc = (*Buffer).EncodeVarint
+               p.valDec = (*Buffer).DecodeVarint
+               p.valSize = sizeVarint
+       case "fixed32":
+               p.WireType = WireFixed32
+               p.valEnc = (*Buffer).EncodeFixed32
+               p.valDec = (*Buffer).DecodeFixed32
+               p.valSize = sizeFixed32
+       case "fixed64":
+               p.WireType = WireFixed64
+               p.valEnc = (*Buffer).EncodeFixed64
+               p.valDec = (*Buffer).DecodeFixed64
+               p.valSize = sizeFixed64
+       case "zigzag32":
+               p.WireType = WireVarint
+               p.valEnc = (*Buffer).EncodeZigzag32
+               p.valDec = (*Buffer).DecodeZigzag32
+               p.valSize = sizeZigzag32
+       case "zigzag64":
+               p.WireType = WireVarint
+               p.valEnc = (*Buffer).EncodeZigzag64
+               p.valDec = (*Buffer).DecodeZigzag64
+               p.valSize = sizeZigzag64
+       case "bytes", "group":
+               p.WireType = WireBytes
+               // no numeric converter for non-numeric types
+       default:
+               fmt.Fprintf(os.Stderr, "proto: tag has unknown wire type: %q\n", s)
+               return
+       }
+
+       var err error
+       p.Tag, err = strconv.Atoi(fields[1])
+       if err != nil {
+               return
+       }
+
+       for i := 2; i < len(fields); i++ {
+               f := fields[i]
+               switch {
+               case f == "req":
+                       p.Required = true
+               case f == "opt":
+                       p.Optional = true
+               case f == "rep":
+                       p.Repeated = true
+               case f == "packed":
+                       p.Packed = true
+               case strings.HasPrefix(f, "name="):
+                       p.OrigName = f[5:]
+               case strings.HasPrefix(f, "json="):
+                       p.JSONName = f[5:]
+               case strings.HasPrefix(f, "enum="):
+                       p.Enum = f[5:]
+               case f == "proto3":
+                       p.proto3 = true
+               case f == "oneof":
+                       p.oneof = true
+               case strings.HasPrefix(f, "def="):
+                       p.HasDefault = true
+                       p.Default = f[4:] // rest of string
+                       if i+1 < len(fields) {
+                               // Commas aren't escaped, and def is always last.
+                               p.Default += "," + strings.Join(fields[i+1:], ",")
+                               break
+                       }
+               }
+       }
+}
+
+func logNoSliceEnc(t1, t2 reflect.Type) {
+       fmt.Fprintf(os.Stderr, "proto: no slice oenc for %T = []%T\n", t1, t2)
+}
+
+var protoMessageType = reflect.TypeOf((*Message)(nil)).Elem()
+
+// Initialize the fields for encoding and decoding.
+func (p *Properties) setEncAndDec(typ reflect.Type, f *reflect.StructField, lockGetProp bool) {
+       p.enc = nil
+       p.dec = nil
+       p.size = nil
+
+       switch t1 := typ; t1.Kind() {
+       default:
+               fmt.Fprintf(os.Stderr, "proto: no coders for %v\n", t1)
+
+       // proto3 scalar types
+
+       case reflect.Bool:
+               p.enc = (*Buffer).enc_proto3_bool
+               p.dec = (*Buffer).dec_proto3_bool
+               p.size = size_proto3_bool
+       case reflect.Int32:
+               p.enc = (*Buffer).enc_proto3_int32
+               p.dec = (*Buffer).dec_proto3_int32
+               p.size = size_proto3_int32
+       case reflect.Uint32:
+               p.enc = (*Buffer).enc_proto3_uint32
+               p.dec = (*Buffer).dec_proto3_int32 // can reuse
+               p.size = size_proto3_uint32
+       case reflect.Int64, reflect.Uint64:
+               p.enc = (*Buffer).enc_proto3_int64
+               p.dec = (*Buffer).dec_proto3_int64
+               p.size = size_proto3_int64
+       case reflect.Float32:
+               p.enc = (*Buffer).enc_proto3_uint32 // can just treat them as bits
+               p.dec = (*Buffer).dec_proto3_int32
+               p.size = size_proto3_uint32
+       case reflect.Float64:
+               p.enc = (*Buffer).enc_proto3_int64 // can just treat them as bits
+               p.dec = (*Buffer).dec_proto3_int64
+               p.size = size_proto3_int64
+       case reflect.String:
+               p.enc = (*Buffer).enc_proto3_string
+               p.dec = (*Buffer).dec_proto3_string
+               p.size = size_proto3_string
+
+       case reflect.Ptr:
+               switch t2 := t1.Elem(); t2.Kind() {
+               default:
+                       fmt.Fprintf(os.Stderr, "proto: no encoder function for %v -> %v\n", t1, t2)
+                       break
+               case reflect.Bool:
+                       p.enc = (*Buffer).enc_bool
+                       p.dec = (*Buffer).dec_bool
+                       p.size = size_bool
+               case reflect.Int32:
+                       p.enc = (*Buffer).enc_int32
+                       p.dec = (*Buffer).dec_int32
+                       p.size = size_int32
+               case reflect.Uint32:
+                       p.enc = (*Buffer).enc_uint32
+                       p.dec = (*Buffer).dec_int32 // can reuse
+                       p.size = size_uint32
+               case reflect.Int64, reflect.Uint64:
+                       p.enc = (*Buffer).enc_int64
+                       p.dec = (*Buffer).dec_int64
+                       p.size = size_int64
+               case reflect.Float32:
+                       p.enc = (*Buffer).enc_uint32 // can just treat them as bits
+                       p.dec = (*Buffer).dec_int32
+                       p.size = size_uint32
+               case reflect.Float64:
+                       p.enc = (*Buffer).enc_int64 // can just treat them as bits
+                       p.dec = (*Buffer).dec_int64
+                       p.size = size_int64
+               case reflect.String:
+                       p.enc = (*Buffer).enc_string
+                       p.dec = (*Buffer).dec_string
+                       p.size = size_string
+               case reflect.Struct:
+                       p.stype = t1.Elem()
+                       p.isMarshaler = isMarshaler(t1)
+                       p.isUnmarshaler = isUnmarshaler(t1)
+                       if p.Wire == "bytes" {
+                               p.enc = (*Buffer).enc_struct_message
+                               p.dec = (*Buffer).dec_struct_message
+                               p.size = size_struct_message
+                       } else {
+                               p.enc = (*Buffer).enc_struct_group
+                               p.dec = (*Buffer).dec_struct_group
+                               p.size = size_struct_group
+                       }
+               }
+
+       case reflect.Slice:
+               switch t2 := t1.Elem(); t2.Kind() {
+               default:
+                       logNoSliceEnc(t1, t2)
+                       break
+               case reflect.Bool:
+                       if p.Packed {
+                               p.enc = (*Buffer).enc_slice_packed_bool
+                               p.size = size_slice_packed_bool
+                       } else {
+                               p.enc = (*Buffer).enc_slice_bool
+                               p.size = size_slice_bool
+                       }
+                       p.dec = (*Buffer).dec_slice_bool
+                       p.packedDec = (*Buffer).dec_slice_packed_bool
+               case reflect.Int32:
+                       if p.Packed {
+                               p.enc = (*Buffer).enc_slice_packed_int32
+                               p.size = size_slice_packed_int32
+                       } else {
+                               p.enc = (*Buffer).enc_slice_int32
+                               p.size = size_slice_int32
+                       }
+                       p.dec = (*Buffer).dec_slice_int32
+                       p.packedDec = (*Buffer).dec_slice_packed_int32
+               case reflect.Uint32:
+                       if p.Packed {
+                               p.enc = (*Buffer).enc_slice_packed_uint32
+                               p.size = size_slice_packed_uint32
+                       } else {
+                               p.enc = (*Buffer).enc_slice_uint32
+                               p.size = size_slice_uint32
+                       }
+                       p.dec = (*Buffer).dec_slice_int32
+                       p.packedDec = (*Buffer).dec_slice_packed_int32
+               case reflect.Int64, reflect.Uint64:
+                       if p.Packed {
+                               p.enc = (*Buffer).enc_slice_packed_int64
+                               p.size = size_slice_packed_int64
+                       } else {
+                               p.enc = (*Buffer).enc_slice_int64
+                               p.size = size_slice_int64
+                       }
+                       p.dec = (*Buffer).dec_slice_int64
+                       p.packedDec = (*Buffer).dec_slice_packed_int64
+               case reflect.Uint8:
+                       p.enc = (*Buffer).enc_slice_byte
+                       p.dec = (*Buffer).dec_slice_byte
+                       p.size = size_slice_byte
+                       // This is a []byte, which is either a bytes field,
+                       // or the value of a map field. In the latter case,
+                       // we always encode an empty []byte, so we should not
+                       // use the proto3 enc/size funcs.
+                       // f == nil iff this is the key/value of a map field.
+                       if p.proto3 && f != nil {
+                               p.enc = (*Buffer).enc_proto3_slice_byte
+                               p.size = size_proto3_slice_byte
+                       }
+               case reflect.Float32, reflect.Float64:
+                       switch t2.Bits() {
+                       case 32:
+                               // can just treat them as bits
+                               if p.Packed {
+                                       p.enc = (*Buffer).enc_slice_packed_uint32
+                                       p.size = size_slice_packed_uint32
+                               } else {
+                                       p.enc = (*Buffer).enc_slice_uint32
+                                       p.size = size_slice_uint32
+                               }
+                               p.dec = (*Buffer).dec_slice_int32
+                               p.packedDec = (*Buffer).dec_slice_packed_int32
+                       case 64:
+                               // can just treat them as bits
+                               if p.Packed {
+                                       p.enc = (*Buffer).enc_slice_packed_int64
+                                       p.size = size_slice_packed_int64
+                               } else {
+                                       p.enc = (*Buffer).enc_slice_int64
+                                       p.size = size_slice_int64
+                               }
+                               p.dec = (*Buffer).dec_slice_int64
+                               p.packedDec = (*Buffer).dec_slice_packed_int64
+                       default:
+                               logNoSliceEnc(t1, t2)
+                               break
+                       }
+               case reflect.String:
+                       p.enc = (*Buffer).enc_slice_string
+                       p.dec = (*Buffer).dec_slice_string
+                       p.size = size_slice_string
+               case reflect.Ptr:
+                       switch t3 := t2.Elem(); t3.Kind() {
+                       default:
+                               fmt.Fprintf(os.Stderr, "proto: no ptr oenc for %T -> %T -> %T\n", t1, t2, t3)
+                               break
+                       case reflect.Struct:
+                               p.stype = t2.Elem()
+                               p.isMarshaler = isMarshaler(t2)
+                               p.isUnmarshaler = isUnmarshaler(t2)
+                               if p.Wire == "bytes" {
+                                       p.enc = (*Buffer).enc_slice_struct_message
+                                       p.dec = (*Buffer).dec_slice_struct_message
+                                       p.size = size_slice_struct_message
+                               } else {
+                                       p.enc = (*Buffer).enc_slice_struct_group
+                                       p.dec = (*Buffer).dec_slice_struct_group
+                                       p.size = size_slice_struct_group
+                               }
+                       }
+               case reflect.Slice:
+                       switch t2.Elem().Kind() {
+                       default:
+                               fmt.Fprintf(os.Stderr, "proto: no slice elem oenc for %T -> %T -> %T\n", t1, t2, t2.Elem())
+                               break
+                       case reflect.Uint8:
+                               p.enc = (*Buffer).enc_slice_slice_byte
+                               p.dec = (*Buffer).dec_slice_slice_byte
+                               p.size = size_slice_slice_byte
+                       }
+               }
+
+       case reflect.Map:
+               p.enc = (*Buffer).enc_new_map
+               p.dec = (*Buffer).dec_new_map
+               p.size = size_new_map
+
+               p.mtype = t1
+               p.mkeyprop = &Properties{}
+               p.mkeyprop.init(reflect.PtrTo(p.mtype.Key()), "Key", f.Tag.Get("protobuf_key"), nil, lockGetProp)
+               p.mvalprop = &Properties{}
+               vtype := p.mtype.Elem()
+               if vtype.Kind() != reflect.Ptr && vtype.Kind() != reflect.Slice {
+                       // The value type is not a message (*T) or bytes ([]byte),
+                       // so we need encoders for the pointer to this type.
+                       vtype = reflect.PtrTo(vtype)
+               }
+               p.mvalprop.init(vtype, "Value", f.Tag.Get("protobuf_val"), nil, lockGetProp)
+       }
+
+       // precalculate tag code
+       wire := p.WireType
+       if p.Packed {
+               wire = WireBytes
+       }
+       x := uint32(p.Tag)<<3 | uint32(wire)
+       i := 0
+       for i = 0; x > 127; i++ {
+               p.tagbuf[i] = 0x80 | uint8(x&0x7F)
+               x >>= 7
+       }
+       p.tagbuf[i] = uint8(x)
+       p.tagcode = p.tagbuf[0 : i+1]
+
+       if p.stype != nil {
+               if lockGetProp {
+                       p.sprop = GetProperties(p.stype)
+               } else {
+                       p.sprop = getPropertiesLocked(p.stype)
+               }
+       }
+}
+
+var (
+       marshalerType   = reflect.TypeOf((*Marshaler)(nil)).Elem()
+       unmarshalerType = reflect.TypeOf((*Unmarshaler)(nil)).Elem()
+)
+
+// isMarshaler reports whether type t implements Marshaler.
+func isMarshaler(t reflect.Type) bool {
+       // We're checking for (likely) pointer-receiver methods
+       // so if t is not a pointer, something is very wrong.
+       // The calls above only invoke isMarshaler on pointer types.
+       if t.Kind() != reflect.Ptr {
+               panic("proto: misuse of isMarshaler")
+       }
+       return t.Implements(marshalerType)
+}
+
+// isUnmarshaler reports whether type t implements Unmarshaler.
+func isUnmarshaler(t reflect.Type) bool {
+       // We're checking for (likely) pointer-receiver methods
+       // so if t is not a pointer, something is very wrong.
+       // The calls above only invoke isUnmarshaler on pointer types.
+       if t.Kind() != reflect.Ptr {
+               panic("proto: misuse of isUnmarshaler")
+       }
+       return t.Implements(unmarshalerType)
+}
+
+// Init populates the properties from a protocol buffer struct tag.
+func (p *Properties) Init(typ reflect.Type, name, tag string, f *reflect.StructField) {
+       p.init(typ, name, tag, f, true)
+}
+
+func (p *Properties) init(typ reflect.Type, name, tag string, f *reflect.StructField, lockGetProp bool) {
+       // "bytes,49,opt,def=hello!"
+       p.Name = name
+       p.OrigName = name
+       if f != nil {
+               p.field = toField(f)
+       }
+       if tag == "" {
+               return
+       }
+       p.Parse(tag)
+       p.setEncAndDec(typ, f, lockGetProp)
+}
+
+var (
+       propertiesMu  sync.RWMutex
+       propertiesMap = make(map[reflect.Type]*StructProperties)
+)
+
+// GetProperties returns the list of properties for the type represented by t.
+// t must represent a generated struct type of a protocol message.
+func GetProperties(t reflect.Type) *StructProperties {
+       if t.Kind() != reflect.Struct {
+               panic("proto: type must have kind struct")
+       }
+
+       // Most calls to GetProperties in a long-running program will be
+       // retrieving details for types we have seen before.
+       propertiesMu.RLock()
+       sprop, ok := propertiesMap[t]
+       propertiesMu.RUnlock()
+       if ok {
+               if collectStats {
+                       stats.Chit++
+               }
+               return sprop
+       }
+
+       propertiesMu.Lock()
+       sprop = getPropertiesLocked(t)
+       propertiesMu.Unlock()
+       return sprop
+}
+
+// getPropertiesLocked requires that propertiesMu is held.
+func getPropertiesLocked(t reflect.Type) *StructProperties {
+       if prop, ok := propertiesMap[t]; ok {
+               if collectStats {
+                       stats.Chit++
+               }
+               return prop
+       }
+       if collectStats {
+               stats.Cmiss++
+       }
+
+       prop := new(StructProperties)
+       // in case of recursive protos, fill this in now.
+       propertiesMap[t] = prop
+
+       // build properties
+       prop.extendable = reflect.PtrTo(t).Implements(extendableProtoType)
+       prop.unrecField = invalidField
+       prop.Prop = make([]*Properties, t.NumField())
+       prop.order = make([]int, t.NumField())
+
+       for i := 0; i < t.NumField(); i++ {
+               f := t.Field(i)
+               p := new(Properties)
+               name := f.Name
+               p.init(f.Type, name, f.Tag.Get("protobuf"), &f, false)
+
+               if f.Name == "XXX_extensions" { // special case
+                       p.enc = (*Buffer).enc_map
+                       p.dec = nil // not needed
+                       p.size = size_map
+               }
+               if f.Name == "XXX_unrecognized" { // special case
+                       prop.unrecField = toField(&f)
+               }
+               oneof := f.Tag.Get("protobuf_oneof") != "" // special case
+               prop.Prop[i] = p
+               prop.order[i] = i
+               if debug {
+                       print(i, " ", f.Name, " ", t.String(), " ")
+                       if p.Tag > 0 {
+                               print(p.String())
+                       }
+                       print("\n")
+               }
+               if p.enc == nil && !strings.HasPrefix(f.Name, "XXX_") && !oneof {
+                       fmt.Fprintln(os.Stderr, "proto: no encoder for", f.Name, f.Type.String(), "[GetProperties]")
+               }
+       }
+
+       // Re-order prop.order.
+       sort.Sort(prop)
+
+       type oneofMessage interface {
+               XXX_OneofFuncs() (func(Message, *Buffer) error, func(Message, int, int, *Buffer) (bool, error), func(Message) int, []interface{})
+       }
+       if om, ok := reflect.Zero(reflect.PtrTo(t)).Interface().(oneofMessage); ok {
+               var oots []interface{}
+               prop.oneofMarshaler, prop.oneofUnmarshaler, prop.oneofSizer, oots = om.XXX_OneofFuncs()
+               prop.stype = t
+
+               // Interpret oneof metadata.
+               prop.OneofTypes = make(map[string]*OneofProperties)
+               for _, oot := range oots {
+                       oop := &OneofProperties{
+                               Type: reflect.ValueOf(oot).Type(), // *T
+                               Prop: new(Properties),
+                       }
+                       sft := oop.Type.Elem().Field(0)
+                       oop.Prop.Name = sft.Name
+                       oop.Prop.Parse(sft.Tag.Get("protobuf"))
+                       // There will be exactly one interface field that
+                       // this new value is assignable to.
+                       for i := 0; i < t.NumField(); i++ {
+                               f := t.Field(i)
+                               if f.Type.Kind() != reflect.Interface {
+                                       continue
+                               }
+                               if !oop.Type.AssignableTo(f.Type) {
+                                       continue
+                               }
+                               oop.Field = i
+                               break
+                       }
+                       prop.OneofTypes[oop.Prop.OrigName] = oop
+               }
+       }
+
+       // build required counts
+       // build tags
+       reqCount := 0
+       prop.decoderOrigNames = make(map[string]int)
+       for i, p := range prop.Prop {
+               if strings.HasPrefix(p.Name, "XXX_") {
+                       // Internal fields should not appear in tags/origNames maps.
+                       // They are handled specially when encoding and decoding.
+                       continue
+               }
+               if p.Required {
+                       reqCount++
+               }
+               prop.decoderTags.put(p.Tag, i)
+               prop.decoderOrigNames[p.OrigName] = i
+       }
+       prop.reqCount = reqCount
+
+       return prop
+}
+
+// Return the Properties object for the x[0]'th field of the structure.
+func propByIndex(t reflect.Type, x []int) *Properties {
+       if len(x) != 1 {
+               fmt.Fprintf(os.Stderr, "proto: field index dimension %d (not 1) for type %s\n", len(x), t)
+               return nil
+       }
+       prop := GetProperties(t)
+       return prop.Prop[x[0]]
+}
+
+// Get the address and type of a pointer to a struct from an interface.
+func getbase(pb Message) (t reflect.Type, b structPointer, err error) {
+       if pb == nil {
+               err = ErrNil
+               return
+       }
+       // get the reflect type of the pointer to the struct.
+       t = reflect.TypeOf(pb)
+       // get the address of the struct.
+       value := reflect.ValueOf(pb)
+       b = toStructPointer(value)
+       return
+}
+
+// A global registry of enum types.
+// The generated code will register the generated maps by calling RegisterEnum.
+
+var enumValueMaps = make(map[string]map[string]int32)
+
+// RegisterEnum is called from the generated code to install the enum descriptor
+// maps into the global table to aid parsing text format protocol buffers.
+func RegisterEnum(typeName string, unusedNameMap map[int32]string, valueMap map[string]int32) {
+       if _, ok := enumValueMaps[typeName]; ok {
+               panic("proto: duplicate enum registered: " + typeName)
+       }
+       enumValueMaps[typeName] = valueMap
+}
+
+// EnumValueMap returns the mapping from names to integers of the
+// enum type enumType, or a nil if not found.
+func EnumValueMap(enumType string) map[string]int32 {
+       return enumValueMaps[enumType]
+}
+
+// A registry of all linked message types.
+// The string is a fully-qualified proto name ("pkg.Message").
+var (
+       protoTypes    = make(map[string]reflect.Type)
+       revProtoTypes = make(map[reflect.Type]string)
+)
+
+// RegisterType is called from generated code and maps from the fully qualified
+// proto name to the type (pointer to struct) of the protocol buffer.
+func RegisterType(x Message, name string) {
+       if _, ok := protoTypes[name]; ok {
+               // TODO: Some day, make this a panic.
+               log.Printf("proto: duplicate proto type registered: %s", name)
+               return
+       }
+       t := reflect.TypeOf(x)
+       protoTypes[name] = t
+       revProtoTypes[t] = name
+}
+
+// MessageName returns the fully-qualified proto name for the given message type.
+func MessageName(x Message) string { return revProtoTypes[reflect.TypeOf(x)] }
+
+// MessageType returns the message type (pointer to struct) for a named message.
+func MessageType(name string) reflect.Type { return protoTypes[name] }
diff --git a/vendor/github.com/golang/protobuf/proto/text.go b/vendor/github.com/golang/protobuf/proto/text.go
new file mode 100644 (file)
index 0000000..37c9535
--- /dev/null
@@ -0,0 +1,849 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto
+
+// Functions for writing the text protocol buffer format.
+
+import (
+       "bufio"
+       "bytes"
+       "encoding"
+       "errors"
+       "fmt"
+       "io"
+       "log"
+       "math"
+       "reflect"
+       "sort"
+       "strings"
+)
+
+var (
+       newline         = []byte("\n")
+       spaces          = []byte("                                        ")
+       gtNewline       = []byte(">\n")
+       endBraceNewline = []byte("}\n")
+       backslashN      = []byte{'\\', 'n'}
+       backslashR      = []byte{'\\', 'r'}
+       backslashT      = []byte{'\\', 't'}
+       backslashDQ     = []byte{'\\', '"'}
+       backslashBS     = []byte{'\\', '\\'}
+       posInf          = []byte("inf")
+       negInf          = []byte("-inf")
+       nan             = []byte("nan")
+)
+
+type writer interface {
+       io.Writer
+       WriteByte(byte) error
+}
+
+// textWriter is an io.Writer that tracks its indentation level.
+type textWriter struct {
+       ind      int
+       complete bool // if the current position is a complete line
+       compact  bool // whether to write out as a one-liner
+       w        writer
+}
+
+func (w *textWriter) WriteString(s string) (n int, err error) {
+       if !strings.Contains(s, "\n") {
+               if !w.compact && w.complete {
+                       w.writeIndent()
+               }
+               w.complete = false
+               return io.WriteString(w.w, s)
+       }
+       // WriteString is typically called without newlines, so this
+       // codepath and its copy are rare.  We copy to avoid
+       // duplicating all of Write's logic here.
+       return w.Write([]byte(s))
+}
+
+func (w *textWriter) Write(p []byte) (n int, err error) {
+       newlines := bytes.Count(p, newline)
+       if newlines == 0 {
+               if !w.compact && w.complete {
+                       w.writeIndent()
+               }
+               n, err = w.w.Write(p)
+               w.complete = false
+               return n, err
+       }
+
+       frags := bytes.SplitN(p, newline, newlines+1)
+       if w.compact {
+               for i, frag := range frags {
+                       if i > 0 {
+                               if err := w.w.WriteByte(' '); err != nil {
+                                       return n, err
+                               }
+                               n++
+                       }
+                       nn, err := w.w.Write(frag)
+                       n += nn
+                       if err != nil {
+                               return n, err
+                       }
+               }
+               return n, nil
+       }
+
+       for i, frag := range frags {
+               if w.complete {
+                       w.writeIndent()
+               }
+               nn, err := w.w.Write(frag)
+               n += nn
+               if err != nil {
+                       return n, err
+               }
+               if i+1 < len(frags) {
+                       if err := w.w.WriteByte('\n'); err != nil {
+                               return n, err
+                       }
+                       n++
+               }
+       }
+       w.complete = len(frags[len(frags)-1]) == 0
+       return n, nil
+}
+
+func (w *textWriter) WriteByte(c byte) error {
+       if w.compact && c == '\n' {
+               c = ' '
+       }
+       if !w.compact && w.complete {
+               w.writeIndent()
+       }
+       err := w.w.WriteByte(c)
+       w.complete = c == '\n'
+       return err
+}
+
+func (w *textWriter) indent() { w.ind++ }
+
+func (w *textWriter) unindent() {
+       if w.ind == 0 {
+               log.Printf("proto: textWriter unindented too far")
+               return
+       }
+       w.ind--
+}
+
+func writeName(w *textWriter, props *Properties) error {
+       if _, err := w.WriteString(props.OrigName); err != nil {
+               return err
+       }
+       if props.Wire != "group" {
+               return w.WriteByte(':')
+       }
+       return nil
+}
+
+// raw is the interface satisfied by RawMessage.
+type raw interface {
+       Bytes() []byte
+}
+
+func requiresQuotes(u string) bool {
+       // When type URL contains any characters except [0-9A-Za-z./\-]*, it must be quoted.
+       for _, ch := range u {
+               switch {
+               case ch == '.' || ch == '/' || ch == '_':
+                       continue
+               case '0' <= ch && ch <= '9':
+                       continue
+               case 'A' <= ch && ch <= 'Z':
+                       continue
+               case 'a' <= ch && ch <= 'z':
+                       continue
+               default:
+                       return true
+               }
+       }
+       return false
+}
+
+// isAny reports whether sv is a google.protobuf.Any message
+func isAny(sv reflect.Value) bool {
+       type wkt interface {
+               XXX_WellKnownType() string
+       }
+       t, ok := sv.Addr().Interface().(wkt)
+       return ok && t.XXX_WellKnownType() == "Any"
+}
+
+// writeProto3Any writes an expanded google.protobuf.Any message.
+//
+// It returns (false, nil) if sv value can't be unmarshaled (e.g. because
+// required messages are not linked in).
+//
+// It returns (true, error) when sv was written in expanded format or an error
+// was encountered.
+func (tm *TextMarshaler) writeProto3Any(w *textWriter, sv reflect.Value) (bool, error) {
+       turl := sv.FieldByName("TypeUrl")
+       val := sv.FieldByName("Value")
+       if !turl.IsValid() || !val.IsValid() {
+               return true, errors.New("proto: invalid google.protobuf.Any message")
+       }
+
+       b, ok := val.Interface().([]byte)
+       if !ok {
+               return true, errors.New("proto: invalid google.protobuf.Any message")
+       }
+
+       parts := strings.Split(turl.String(), "/")
+       mt := MessageType(parts[len(parts)-1])
+       if mt == nil {
+               return false, nil
+       }
+       m := reflect.New(mt.Elem())
+       if err := Unmarshal(b, m.Interface().(Message)); err != nil {
+               return false, nil
+       }
+       w.Write([]byte("["))
+       u := turl.String()
+       if requiresQuotes(u) {
+               writeString(w, u)
+       } else {
+               w.Write([]byte(u))
+       }
+       if w.compact {
+               w.Write([]byte("]:<"))
+       } else {
+               w.Write([]byte("]: <\n"))
+               w.ind++
+       }
+       if err := tm.writeStruct(w, m.Elem()); err != nil {
+               return true, err
+       }
+       if w.compact {
+               w.Write([]byte("> "))
+       } else {
+               w.ind--
+               w.Write([]byte(">\n"))
+       }
+       return true, nil
+}
+
+func (tm *TextMarshaler) writeStruct(w *textWriter, sv reflect.Value) error {
+       if tm.ExpandAny && isAny(sv) {
+               if canExpand, err := tm.writeProto3Any(w, sv); canExpand {
+                       return err
+               }
+       }
+       st := sv.Type()
+       sprops := GetProperties(st)
+       for i := 0; i < sv.NumField(); i++ {
+               fv := sv.Field(i)
+               props := sprops.Prop[i]
+               name := st.Field(i).Name
+
+               if strings.HasPrefix(name, "XXX_") {
+                       // There are two XXX_ fields:
+                       //   XXX_unrecognized []byte
+                       //   XXX_extensions   map[int32]proto.Extension
+                       // The first is handled here;
+                       // the second is handled at the bottom of this function.
+                       if name == "XXX_unrecognized" && !fv.IsNil() {
+                               if err := writeUnknownStruct(w, fv.Interface().([]byte)); err != nil {
+                                       return err
+                               }
+                       }
+                       continue
+               }
+               if fv.Kind() == reflect.Ptr && fv.IsNil() {
+                       // Field not filled in. This could be an optional field or
+                       // a required field that wasn't filled in. Either way, there
+                       // isn't anything we can show for it.
+                       continue
+               }
+               if fv.Kind() == reflect.Slice && fv.IsNil() {
+                       // Repeated field that is empty, or a bytes field that is unused.
+                       continue
+               }
+
+               if props.Repeated && fv.Kind() == reflect.Slice {
+                       // Repeated field.
+                       for j := 0; j < fv.Len(); j++ {
+                               if err := writeName(w, props); err != nil {
+                                       return err
+                               }
+                               if !w.compact {
+                                       if err := w.WriteByte(' '); err != nil {
+                                               return err
+                                       }
+                               }
+                               v := fv.Index(j)
+                               if v.Kind() == reflect.Ptr && v.IsNil() {
+                                       // A nil message in a repeated field is not valid,
+                                       // but we can handle that more gracefully than panicking.
+                                       if _, err := w.Write([]byte("<nil>\n")); err != nil {
+                                               return err
+                                       }
+                                       continue
+                               }
+                               if err := tm.writeAny(w, v, props); err != nil {
+                                       return err
+                               }
+                               if err := w.WriteByte('\n'); err != nil {
+                                       return err
+                               }
+                       }
+                       continue
+               }
+               if fv.Kind() == reflect.Map {
+                       // Map fields are rendered as a repeated struct with key/value fields.
+                       keys := fv.MapKeys()
+                       sort.Sort(mapKeys(keys))
+                       for _, key := range keys {
+                               val := fv.MapIndex(key)
+                               if err := writeName(w, props); err != nil {
+                                       return err
+                               }
+                               if !w.compact {
+                                       if err := w.WriteByte(' '); err != nil {
+                                               return err
+                                       }
+                               }
+                               // open struct
+                               if err := w.WriteByte('<'); err != nil {
+                                       return err
+                               }
+                               if !w.compact {
+                                       if err := w.WriteByte('\n'); err != nil {
+                                               return err
+                                       }
+                               }
+                               w.indent()
+                               // key
+                               if _, err := w.WriteString("key:"); err != nil {
+                                       return err
+                               }
+                               if !w.compact {
+                                       if err := w.WriteByte(' '); err != nil {
+                                               return err
+                                       }
+                               }
+                               if err := tm.writeAny(w, key, props.mkeyprop); err != nil {
+                                       return err
+                               }
+                               if err := w.WriteByte('\n'); err != nil {
+                                       return err
+                               }
+                               // nil values aren't legal, but we can avoid panicking because of them.
+                               if val.Kind() != reflect.Ptr || !val.IsNil() {
+                                       // value
+                                       if _, err := w.WriteString("value:"); err != nil {
+                                               return err
+                                       }
+                                       if !w.compact {
+                                               if err := w.WriteByte(' '); err != nil {
+                                                       return err
+                                               }
+                                       }
+                                       if err := tm.writeAny(w, val, props.mvalprop); err != nil {
+                                               return err
+                                       }
+                                       if err := w.WriteByte('\n'); err != nil {
+                                               return err
+                                       }
+                               }
+                               // close struct
+                               w.unindent()
+                               if err := w.WriteByte('>'); err != nil {
+                                       return err
+                               }
+                               if err := w.WriteByte('\n'); err != nil {
+                                       return err
+                               }
+                       }
+                       continue
+               }
+               if props.proto3 && fv.Kind() == reflect.Slice && fv.Len() == 0 {
+                       // empty bytes field
+                       continue
+               }
+               if fv.Kind() != reflect.Ptr && fv.Kind() != reflect.Slice {
+                       // proto3 non-repeated scalar field; skip if zero value
+                       if isProto3Zero(fv) {
+                               continue
+                       }
+               }
+
+               if fv.Kind() == reflect.Interface {
+                       // Check if it is a oneof.
+                       if st.Field(i).Tag.Get("protobuf_oneof") != "" {
+                               // fv is nil, or holds a pointer to generated struct.
+                               // That generated struct has exactly one field,
+                               // which has a protobuf struct tag.
+                               if fv.IsNil() {
+                                       continue
+                               }
+                               inner := fv.Elem().Elem() // interface -> *T -> T
+                               tag := inner.Type().Field(0).Tag.Get("protobuf")
+                               props = new(Properties) // Overwrite the outer props var, but not its pointee.
+                               props.Parse(tag)
+                               // Write the value in the oneof, not the oneof itself.
+                               fv = inner.Field(0)
+
+                               // Special case to cope with malformed messages gracefully:
+                               // If the value in the oneof is a nil pointer, don't panic
+                               // in writeAny.
+                               if fv.Kind() == reflect.Ptr && fv.IsNil() {
+                                       // Use errors.New so writeAny won't render quotes.
+                                       msg := errors.New("/* nil */")
+                                       fv = reflect.ValueOf(&msg).Elem()
+                               }
+                       }
+               }
+
+               if err := writeName(w, props); err != nil {
+                       return err
+               }
+               if !w.compact {
+                       if err := w.WriteByte(' '); err != nil {
+                               return err
+                       }
+               }
+               if b, ok := fv.Interface().(raw); ok {
+                       if err := writeRaw(w, b.Bytes()); err != nil {
+                               return err
+                       }
+                       continue
+               }
+
+               // Enums have a String method, so writeAny will work fine.
+               if err := tm.writeAny(w, fv, props); err != nil {
+                       return err
+               }
+
+               if err := w.WriteByte('\n'); err != nil {
+                       return err
+               }
+       }
+
+       // Extensions (the XXX_extensions field).
+       pv := sv.Addr()
+       if pv.Type().Implements(extendableProtoType) {
+               if err := tm.writeExtensions(w, pv); err != nil {
+                       return err
+               }
+       }
+
+       return nil
+}
+
+// writeRaw writes an uninterpreted raw message.
+func writeRaw(w *textWriter, b []byte) error {
+       if err := w.WriteByte('<'); err != nil {
+               return err
+       }
+       if !w.compact {
+               if err := w.WriteByte('\n'); err != nil {
+                       return err
+               }
+       }
+       w.indent()
+       if err := writeUnknownStruct(w, b); err != nil {
+               return err
+       }
+       w.unindent()
+       if err := w.WriteByte('>'); err != nil {
+               return err
+       }
+       return nil
+}
+
+// writeAny writes an arbitrary field.
+func (tm *TextMarshaler) writeAny(w *textWriter, v reflect.Value, props *Properties) error {
+       v = reflect.Indirect(v)
+
+       // Floats have special cases.
+       if v.Kind() == reflect.Float32 || v.Kind() == reflect.Float64 {
+               x := v.Float()
+               var b []byte
+               switch {
+               case math.IsInf(x, 1):
+                       b = posInf
+               case math.IsInf(x, -1):
+                       b = negInf
+               case math.IsNaN(x):
+                       b = nan
+               }
+               if b != nil {
+                       _, err := w.Write(b)
+                       return err
+               }
+               // Other values are handled below.
+       }
+
+       // We don't attempt to serialise every possible value type; only those
+       // that can occur in protocol buffers.
+       switch v.Kind() {
+       case reflect.Slice:
+               // Should only be a []byte; repeated fields are handled in writeStruct.
+               if err := writeString(w, string(v.Interface().([]byte))); err != nil {
+                       return err
+               }
+       case reflect.String:
+               if err := writeString(w, v.String()); err != nil {
+                       return err
+               }
+       case reflect.Struct:
+               // Required/optional group/message.
+               var bra, ket byte = '<', '>'
+               if props != nil && props.Wire == "group" {
+                       bra, ket = '{', '}'
+               }
+               if err := w.WriteByte(bra); err != nil {
+                       return err
+               }
+               if !w.compact {
+                       if err := w.WriteByte('\n'); err != nil {
+                               return err
+                       }
+               }
+               w.indent()
+               if etm, ok := v.Interface().(encoding.TextMarshaler); ok {
+                       text, err := etm.MarshalText()
+                       if err != nil {
+                               return err
+                       }
+                       if _, err = w.Write(text); err != nil {
+                               return err
+                       }
+               } else if err := tm.writeStruct(w, v); err != nil {
+                       return err
+               }
+               w.unindent()
+               if err := w.WriteByte(ket); err != nil {
+                       return err
+               }
+       default:
+               _, err := fmt.Fprint(w, v.Interface())
+               return err
+       }
+       return nil
+}
+
+// equivalent to C's isprint.
+func isprint(c byte) bool {
+       return c >= 0x20 && c < 0x7f
+}
+
+// writeString writes a string in the protocol buffer text format.
+// It is similar to strconv.Quote except we don't use Go escape sequences,
+// we treat the string as a byte sequence, and we use octal escapes.
+// These differences are to maintain interoperability with the other
+// languages' implementations of the text format.
+func writeString(w *textWriter, s string) error {
+       // use WriteByte here to get any needed indent
+       if err := w.WriteByte('"'); err != nil {
+               return err
+       }
+       // Loop over the bytes, not the runes.
+       for i := 0; i < len(s); i++ {
+               var err error
+               // Divergence from C++: we don't escape apostrophes.
+               // There's no need to escape them, and the C++ parser
+               // copes with a naked apostrophe.
+               switch c := s[i]; c {
+               case '\n':
+                       _, err = w.w.Write(backslashN)
+               case '\r':
+                       _, err = w.w.Write(backslashR)
+               case '\t':
+                       _, err = w.w.Write(backslashT)
+               case '"':
+                       _, err = w.w.Write(backslashDQ)
+               case '\\':
+                       _, err = w.w.Write(backslashBS)
+               default:
+                       if isprint(c) {
+                               err = w.w.WriteByte(c)
+                       } else {
+                               _, err = fmt.Fprintf(w.w, "\\%03o", c)
+                       }
+               }
+               if err != nil {
+                       return err
+               }
+       }
+       return w.WriteByte('"')
+}
+
+func writeUnknownStruct(w *textWriter, data []byte) (err error) {
+       if !w.compact {
+               if _, err := fmt.Fprintf(w, "/* %d unknown bytes */\n", len(data)); err != nil {
+                       return err
+               }
+       }
+       b := NewBuffer(data)
+       for b.index < len(b.buf) {
+               x, err := b.DecodeVarint()
+               if err != nil {
+                       _, err := fmt.Fprintf(w, "/* %v */\n", err)
+                       return err
+               }
+               wire, tag := x&7, x>>3
+               if wire == WireEndGroup {
+                       w.unindent()
+                       if _, err := w.Write(endBraceNewline); err != nil {
+                               return err
+                       }
+                       continue
+               }
+               if _, err := fmt.Fprint(w, tag); err != nil {
+                       return err
+               }
+               if wire != WireStartGroup {
+                       if err := w.WriteByte(':'); err != nil {
+                               return err
+                       }
+               }
+               if !w.compact || wire == WireStartGroup {
+                       if err := w.WriteByte(' '); err != nil {
+                               return err
+                       }
+               }
+               switch wire {
+               case WireBytes:
+                       buf, e := b.DecodeRawBytes(false)
+                       if e == nil {
+                               _, err = fmt.Fprintf(w, "%q", buf)
+                       } else {
+                               _, err = fmt.Fprintf(w, "/* %v */", e)
+                       }
+               case WireFixed32:
+                       x, err = b.DecodeFixed32()
+                       err = writeUnknownInt(w, x, err)
+               case WireFixed64:
+                       x, err = b.DecodeFixed64()
+                       err = writeUnknownInt(w, x, err)
+               case WireStartGroup:
+                       err = w.WriteByte('{')
+                       w.indent()
+               case WireVarint:
+                       x, err = b.DecodeVarint()
+                       err = writeUnknownInt(w, x, err)
+               default:
+                       _, err = fmt.Fprintf(w, "/* unknown wire type %d */", wire)
+               }
+               if err != nil {
+                       return err
+               }
+               if err = w.WriteByte('\n'); err != nil {
+                       return err
+               }
+       }
+       return nil
+}
+
+func writeUnknownInt(w *textWriter, x uint64, err error) error {
+       if err == nil {
+               _, err = fmt.Fprint(w, x)
+       } else {
+               _, err = fmt.Fprintf(w, "/* %v */", err)
+       }
+       return err
+}
+
+type int32Slice []int32
+
+func (s int32Slice) Len() int           { return len(s) }
+func (s int32Slice) Less(i, j int) bool { return s[i] < s[j] }
+func (s int32Slice) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }
+
+// writeExtensions writes all the extensions in pv.
+// pv is assumed to be a pointer to a protocol message struct that is extendable.
+func (tm *TextMarshaler) writeExtensions(w *textWriter, pv reflect.Value) error {
+       emap := extensionMaps[pv.Type().Elem()]
+       ep := pv.Interface().(extendableProto)
+
+       // Order the extensions by ID.
+       // This isn't strictly necessary, but it will give us
+       // canonical output, which will also make testing easier.
+       m := ep.ExtensionMap()
+       ids := make([]int32, 0, len(m))
+       for id := range m {
+               ids = append(ids, id)
+       }
+       sort.Sort(int32Slice(ids))
+
+       for _, extNum := range ids {
+               ext := m[extNum]
+               var desc *ExtensionDesc
+               if emap != nil {
+                       desc = emap[extNum]
+               }
+               if desc == nil {
+                       // Unknown extension.
+                       if err := writeUnknownStruct(w, ext.enc); err != nil {
+                               return err
+                       }
+                       continue
+               }
+
+               pb, err := GetExtension(ep, desc)
+               if err != nil {
+                       return fmt.Errorf("failed getting extension: %v", err)
+               }
+
+               // Repeated extensions will appear as a slice.
+               if !desc.repeated() {
+                       if err := tm.writeExtension(w, desc.Name, pb); err != nil {
+                               return err
+                       }
+               } else {
+                       v := reflect.ValueOf(pb)
+                       for i := 0; i < v.Len(); i++ {
+                               if err := tm.writeExtension(w, desc.Name, v.Index(i).Interface()); err != nil {
+                                       return err
+                               }
+                       }
+               }
+       }
+       return nil
+}
+
+func (tm *TextMarshaler) writeExtension(w *textWriter, name string, pb interface{}) error {
+       if _, err := fmt.Fprintf(w, "[%s]:", name); err != nil {
+               return err
+       }
+       if !w.compact {
+               if err := w.WriteByte(' '); err != nil {
+                       return err
+               }
+       }
+       if err := tm.writeAny(w, reflect.ValueOf(pb), nil); err != nil {
+               return err
+       }
+       if err := w.WriteByte('\n'); err != nil {
+               return err
+       }
+       return nil
+}
+
+func (w *textWriter) writeIndent() {
+       if !w.complete {
+               return
+       }
+       remain := w.ind * 2
+       for remain > 0 {
+               n := remain
+               if n > len(spaces) {
+                       n = len(spaces)
+               }
+               w.w.Write(spaces[:n])
+               remain -= n
+       }
+       w.complete = false
+}
+
+// TextMarshaler is a configurable text format marshaler.
+type TextMarshaler struct {
+       Compact   bool // use compact text format (one line).
+       ExpandAny bool // expand google.protobuf.Any messages of known types
+}
+
+// Marshal writes a given protocol buffer in text format.
+// The only errors returned are from w.
+func (tm *TextMarshaler) Marshal(w io.Writer, pb Message) error {
+       val := reflect.ValueOf(pb)
+       if pb == nil || val.IsNil() {
+               w.Write([]byte("<nil>"))
+               return nil
+       }
+       var bw *bufio.Writer
+       ww, ok := w.(writer)
+       if !ok {
+               bw = bufio.NewWriter(w)
+               ww = bw
+       }
+       aw := &textWriter{
+               w:        ww,
+               complete: true,
+               compact:  tm.Compact,
+       }
+
+       if etm, ok := pb.(encoding.TextMarshaler); ok {
+               text, err := etm.MarshalText()
+               if err != nil {
+                       return err
+               }
+               if _, err = aw.Write(text); err != nil {
+                       return err
+               }
+               if bw != nil {
+                       return bw.Flush()
+               }
+               return nil
+       }
+       // Dereference the received pointer so we don't have outer < and >.
+       v := reflect.Indirect(val)
+       if err := tm.writeStruct(aw, v); err != nil {
+               return err
+       }
+       if bw != nil {
+               return bw.Flush()
+       }
+       return nil
+}
+
+// Text is the same as Marshal, but returns the string directly.
+func (tm *TextMarshaler) Text(pb Message) string {
+       var buf bytes.Buffer
+       tm.Marshal(&buf, pb)
+       return buf.String()
+}
+
+var (
+       defaultTextMarshaler = TextMarshaler{}
+       compactTextMarshaler = TextMarshaler{Compact: true}
+)
+
+// TODO: consider removing some of the Marshal functions below.
+
+// MarshalText writes a given protocol buffer in text format.
+// The only errors returned are from w.
+func MarshalText(w io.Writer, pb Message) error { return defaultTextMarshaler.Marshal(w, pb) }
+
+// MarshalTextString is the same as MarshalText, but returns the string directly.
+func MarshalTextString(pb Message) string { return defaultTextMarshaler.Text(pb) }
+
+// CompactText writes a given protocol buffer in compact text format (one line).
+func CompactText(w io.Writer, pb Message) error { return compactTextMarshaler.Marshal(w, pb) }
+
+// CompactTextString is the same as CompactText, but returns the string directly.
+func CompactTextString(pb Message) string { return compactTextMarshaler.Text(pb) }
diff --git a/vendor/github.com/golang/protobuf/proto/text_parser.go b/vendor/github.com/golang/protobuf/proto/text_parser.go
new file mode 100644 (file)
index 0000000..b5e1c8e
--- /dev/null
@@ -0,0 +1,871 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto
+
+// Functions for parsing the Text protocol buffer format.
+// TODO: message sets.
+
+import (
+       "encoding"
+       "errors"
+       "fmt"
+       "reflect"
+       "strconv"
+       "strings"
+       "unicode/utf8"
+)
+
+type ParseError struct {
+       Message string
+       Line    int // 1-based line number
+       Offset  int // 0-based byte offset from start of input
+}
+
+func (p *ParseError) Error() string {
+       if p.Line == 1 {
+               // show offset only for first line
+               return fmt.Sprintf("line 1.%d: %v", p.Offset, p.Message)
+       }
+       return fmt.Sprintf("line %d: %v", p.Line, p.Message)
+}
+
+type token struct {
+       value    string
+       err      *ParseError
+       line     int    // line number
+       offset   int    // byte number from start of input, not start of line
+       unquoted string // the unquoted version of value, if it was a quoted string
+}
+
+func (t *token) String() string {
+       if t.err == nil {
+               return fmt.Sprintf("%q (line=%d, offset=%d)", t.value, t.line, t.offset)
+       }
+       return fmt.Sprintf("parse error: %v", t.err)
+}
+
+type textParser struct {
+       s            string // remaining input
+       done         bool   // whether the parsing is finished (success or error)
+       backed       bool   // whether back() was called
+       offset, line int
+       cur          token
+}
+
+func newTextParser(s string) *textParser {
+       p := new(textParser)
+       p.s = s
+       p.line = 1
+       p.cur.line = 1
+       return p
+}
+
+func (p *textParser) errorf(format string, a ...interface{}) *ParseError {
+       pe := &ParseError{fmt.Sprintf(format, a...), p.cur.line, p.cur.offset}
+       p.cur.err = pe
+       p.done = true
+       return pe
+}
+
+// Numbers and identifiers are matched by [-+._A-Za-z0-9]
+func isIdentOrNumberChar(c byte) bool {
+       switch {
+       case 'A' <= c && c <= 'Z', 'a' <= c && c <= 'z':
+               return true
+       case '0' <= c && c <= '9':
+               return true
+       }
+       switch c {
+       case '-', '+', '.', '_':
+               return true
+       }
+       return false
+}
+
+func isWhitespace(c byte) bool {
+       switch c {
+       case ' ', '\t', '\n', '\r':
+               return true
+       }
+       return false
+}
+
+func isQuote(c byte) bool {
+       switch c {
+       case '"', '\'':
+               return true
+       }
+       return false
+}
+
+func (p *textParser) skipWhitespace() {
+       i := 0
+       for i < len(p.s) && (isWhitespace(p.s[i]) || p.s[i] == '#') {
+               if p.s[i] == '#' {
+                       // comment; skip to end of line or input
+                       for i < len(p.s) && p.s[i] != '\n' {
+                               i++
+                       }
+                       if i == len(p.s) {
+                               break
+                       }
+               }
+               if p.s[i] == '\n' {
+                       p.line++
+               }
+               i++
+       }
+       p.offset += i
+       p.s = p.s[i:len(p.s)]
+       if len(p.s) == 0 {
+               p.done = true
+       }
+}
+
+func (p *textParser) advance() {
+       // Skip whitespace
+       p.skipWhitespace()
+       if p.done {
+               return
+       }
+
+       // Start of non-whitespace
+       p.cur.err = nil
+       p.cur.offset, p.cur.line = p.offset, p.line
+       p.cur.unquoted = ""
+       switch p.s[0] {
+       case '<', '>', '{', '}', ':', '[', ']', ';', ',', '/':
+               // Single symbol
+               p.cur.value, p.s = p.s[0:1], p.s[1:len(p.s)]
+       case '"', '\'':
+               // Quoted string
+               i := 1
+               for i < len(p.s) && p.s[i] != p.s[0] && p.s[i] != '\n' {
+                       if p.s[i] == '\\' && i+1 < len(p.s) {
+                               // skip escaped char
+                               i++
+                       }
+                       i++
+               }
+               if i >= len(p.s) || p.s[i] != p.s[0] {
+                       p.errorf("unmatched quote")
+                       return
+               }
+               unq, err := unquoteC(p.s[1:i], rune(p.s[0]))
+               if err != nil {
+                       p.errorf("invalid quoted string %s: %v", p.s[0:i+1], err)
+                       return
+               }
+               p.cur.value, p.s = p.s[0:i+1], p.s[i+1:len(p.s)]
+               p.cur.unquoted = unq
+       default:
+               i := 0
+               for i < len(p.s) && isIdentOrNumberChar(p.s[i]) {
+                       i++
+               }
+               if i == 0 {
+                       p.errorf("unexpected byte %#x", p.s[0])
+                       return
+               }
+               p.cur.value, p.s = p.s[0:i], p.s[i:len(p.s)]
+       }
+       p.offset += len(p.cur.value)
+}
+
+var (
+       errBadUTF8 = errors.New("proto: bad UTF-8")
+       errBadHex  = errors.New("proto: bad hexadecimal")
+)
+
+func unquoteC(s string, quote rune) (string, error) {
+       // This is based on C++'s tokenizer.cc.
+       // Despite its name, this is *not* parsing C syntax.
+       // For instance, "\0" is an invalid quoted string.
+
+       // Avoid allocation in trivial cases.
+       simple := true
+       for _, r := range s {
+               if r == '\\' || r == quote {
+                       simple = false
+                       break
+               }
+       }
+       if simple {
+               return s, nil
+       }
+
+       buf := make([]byte, 0, 3*len(s)/2)
+       for len(s) > 0 {
+               r, n := utf8.DecodeRuneInString(s)
+               if r == utf8.RuneError && n == 1 {
+                       return "", errBadUTF8
+               }
+               s = s[n:]
+               if r != '\\' {
+                       if r < utf8.RuneSelf {
+                               buf = append(buf, byte(r))
+                       } else {
+                               buf = append(buf, string(r)...)
+                       }
+                       continue
+               }
+
+               ch, tail, err := unescape(s)
+               if err != nil {
+                       return "", err
+               }
+               buf = append(buf, ch...)
+               s = tail
+       }
+       return string(buf), nil
+}
+
+func unescape(s string) (ch string, tail string, err error) {
+       r, n := utf8.DecodeRuneInString(s)
+       if r == utf8.RuneError && n == 1 {
+               return "", "", errBadUTF8
+       }
+       s = s[n:]
+       switch r {
+       case 'a':
+               return "\a", s, nil
+       case 'b':
+               return "\b", s, nil
+       case 'f':
+               return "\f", s, nil
+       case 'n':
+               return "\n", s, nil
+       case 'r':
+               return "\r", s, nil
+       case 't':
+               return "\t", s, nil
+       case 'v':
+               return "\v", s, nil
+       case '?':
+               return "?", s, nil // trigraph workaround
+       case '\'', '"', '\\':
+               return string(r), s, nil
+       case '0', '1', '2', '3', '4', '5', '6', '7', 'x', 'X':
+               if len(s) < 2 {
+                       return "", "", fmt.Errorf(`\%c requires 2 following digits`, r)
+               }
+               base := 8
+               ss := s[:2]
+               s = s[2:]
+               if r == 'x' || r == 'X' {
+                       base = 16
+               } else {
+                       ss = string(r) + ss
+               }
+               i, err := strconv.ParseUint(ss, base, 8)
+               if err != nil {
+                       return "", "", err
+               }
+               return string([]byte{byte(i)}), s, nil
+       case 'u', 'U':
+               n := 4
+               if r == 'U' {
+                       n = 8
+               }
+               if len(s) < n {
+                       return "", "", fmt.Errorf(`\%c requires %d digits`, r, n)
+               }
+
+               bs := make([]byte, n/2)
+               for i := 0; i < n; i += 2 {
+                       a, ok1 := unhex(s[i])
+                       b, ok2 := unhex(s[i+1])
+                       if !ok1 || !ok2 {
+                               return "", "", errBadHex
+                       }
+                       bs[i/2] = a<<4 | b
+               }
+               s = s[n:]
+               return string(bs), s, nil
+       }
+       return "", "", fmt.Errorf(`unknown escape \%c`, r)
+}
+
+// Adapted from src/pkg/strconv/quote.go.
+func unhex(b byte) (v byte, ok bool) {
+       switch {
+       case '0' <= b && b <= '9':
+               return b - '0', true
+       case 'a' <= b && b <= 'f':
+               return b - 'a' + 10, true
+       case 'A' <= b && b <= 'F':
+               return b - 'A' + 10, true
+       }
+       return 0, false
+}
+
+// Back off the parser by one token. Can only be done between calls to next().
+// It makes the next advance() a no-op.
+func (p *textParser) back() { p.backed = true }
+
+// Advances the parser and returns the new current token.
+func (p *textParser) next() *token {
+       if p.backed || p.done {
+               p.backed = false
+               return &p.cur
+       }
+       p.advance()
+       if p.done {
+               p.cur.value = ""
+       } else if len(p.cur.value) > 0 && isQuote(p.cur.value[0]) {
+               // Look for multiple quoted strings separated by whitespace,
+               // and concatenate them.
+               cat := p.cur
+               for {
+                       p.skipWhitespace()
+                       if p.done || !isQuote(p.s[0]) {
+                               break
+                       }
+                       p.advance()
+                       if p.cur.err != nil {
+                               return &p.cur
+                       }
+                       cat.value += " " + p.cur.value
+                       cat.unquoted += p.cur.unquoted
+               }
+               p.done = false // parser may have seen EOF, but we want to return cat
+               p.cur = cat
+       }
+       return &p.cur
+}
+
+func (p *textParser) consumeToken(s string) error {
+       tok := p.next()
+       if tok.err != nil {
+               return tok.err
+       }
+       if tok.value != s {
+               p.back()
+               return p.errorf("expected %q, found %q", s, tok.value)
+       }
+       return nil
+}
+
+// Return a RequiredNotSetError indicating which required field was not set.
+func (p *textParser) missingRequiredFieldError(sv reflect.Value) *RequiredNotSetError {
+       st := sv.Type()
+       sprops := GetProperties(st)
+       for i := 0; i < st.NumField(); i++ {
+               if !isNil(sv.Field(i)) {
+                       continue
+               }
+
+               props := sprops.Prop[i]
+               if props.Required {
+                       return &RequiredNotSetError{fmt.Sprintf("%v.%v", st, props.OrigName)}
+               }
+       }
+       return &RequiredNotSetError{fmt.Sprintf("%v.<unknown field name>", st)} // should not happen
+}
+
+// Returns the index in the struct for the named field, as well as the parsed tag properties.
+func structFieldByName(sprops *StructProperties, name string) (int, *Properties, bool) {
+       i, ok := sprops.decoderOrigNames[name]
+       if ok {
+               return i, sprops.Prop[i], true
+       }
+       return -1, nil, false
+}
+
+// Consume a ':' from the input stream (if the next token is a colon),
+// returning an error if a colon is needed but not present.
+func (p *textParser) checkForColon(props *Properties, typ reflect.Type) *ParseError {
+       tok := p.next()
+       if tok.err != nil {
+               return tok.err
+       }
+       if tok.value != ":" {
+               // Colon is optional when the field is a group or message.
+               needColon := true
+               switch props.Wire {
+               case "group":
+                       needColon = false
+               case "bytes":
+                       // A "bytes" field is either a message, a string, or a repeated field;
+                       // those three become *T, *string and []T respectively, so we can check for
+                       // this field being a pointer to a non-string.
+                       if typ.Kind() == reflect.Ptr {
+                               // *T or *string
+                               if typ.Elem().Kind() == reflect.String {
+                                       break
+                               }
+                       } else if typ.Kind() == reflect.Slice {
+                               // []T or []*T
+                               if typ.Elem().Kind() != reflect.Ptr {
+                                       break
+                               }
+                       } else if typ.Kind() == reflect.String {
+                               // The proto3 exception is for a string field,
+                               // which requires a colon.
+                               break
+                       }
+                       needColon = false
+               }
+               if needColon {
+                       return p.errorf("expected ':', found %q", tok.value)
+               }
+               p.back()
+       }
+       return nil
+}
+
+func (p *textParser) readStruct(sv reflect.Value, terminator string) error {
+       st := sv.Type()
+       sprops := GetProperties(st)
+       reqCount := sprops.reqCount
+       var reqFieldErr error
+       fieldSet := make(map[string]bool)
+       // A struct is a sequence of "name: value", terminated by one of
+       // '>' or '}', or the end of the input.  A name may also be
+       // "[extension]" or "[type/url]".
+       //
+       // The whole struct can also be an expanded Any message, like:
+       // [type/url] < ... struct contents ... >
+       for {
+               tok := p.next()
+               if tok.err != nil {
+                       return tok.err
+               }
+               if tok.value == terminator {
+                       break
+               }
+               if tok.value == "[" {
+                       // Looks like an extension or an Any.
+                       //
+                       // TODO: Check whether we need to handle
+                       // namespace rooted names (e.g. ".something.Foo").
+                       extName, err := p.consumeExtName()
+                       if err != nil {
+                               return err
+                       }
+
+                       if s := strings.LastIndex(extName, "/"); s >= 0 {
+                               // If it contains a slash, it's an Any type URL.
+                               messageName := extName[s+1:]
+                               mt := MessageType(messageName)
+                               if mt == nil {
+                                       return p.errorf("unrecognized message %q in google.protobuf.Any", messageName)
+                               }
+                               tok = p.next()
+                               if tok.err != nil {
+                                       return tok.err
+                               }
+                               // consume an optional colon
+                               if tok.value == ":" {
+                                       tok = p.next()
+                                       if tok.err != nil {
+                                               return tok.err
+                                       }
+                               }
+                               var terminator string
+                               switch tok.value {
+                               case "<":
+                                       terminator = ">"
+                               case "{":
+                                       terminator = "}"
+                               default:
+                                       return p.errorf("expected '{' or '<', found %q", tok.value)
+                               }
+                               v := reflect.New(mt.Elem())
+                               if pe := p.readStruct(v.Elem(), terminator); pe != nil {
+                                       return pe
+                               }
+                               b, err := Marshal(v.Interface().(Message))
+                               if err != nil {
+                                       return p.errorf("failed to marshal message of type %q: %v", messageName, err)
+                               }
+                               sv.FieldByName("TypeUrl").SetString(extName)
+                               sv.FieldByName("Value").SetBytes(b)
+                               continue
+                       }
+
+                       var desc *ExtensionDesc
+                       // This could be faster, but it's functional.
+                       // TODO: Do something smarter than a linear scan.
+                       for _, d := range RegisteredExtensions(reflect.New(st).Interface().(Message)) {
+                               if d.Name == extName {
+                                       desc = d
+                                       break
+                               }
+                       }
+                       if desc == nil {
+                               return p.errorf("unrecognized extension %q", extName)
+                       }
+
+                       props := &Properties{}
+                       props.Parse(desc.Tag)
+
+                       typ := reflect.TypeOf(desc.ExtensionType)
+                       if err := p.checkForColon(props, typ); err != nil {
+                               return err
+                       }
+
+                       rep := desc.repeated()
+
+                       // Read the extension structure, and set it in
+                       // the value we're constructing.
+                       var ext reflect.Value
+                       if !rep {
+                               ext = reflect.New(typ).Elem()
+                       } else {
+                               ext = reflect.New(typ.Elem()).Elem()
+                       }
+                       if err := p.readAny(ext, props); err != nil {
+                               if _, ok := err.(*RequiredNotSetError); !ok {
+                                       return err
+                               }
+                               reqFieldErr = err
+                       }
+                       ep := sv.Addr().Interface().(extendableProto)
+                       if !rep {
+                               SetExtension(ep, desc, ext.Interface())
+                       } else {
+                               old, err := GetExtension(ep, desc)
+                               var sl reflect.Value
+                               if err == nil {
+                                       sl = reflect.ValueOf(old) // existing slice
+                               } else {
+                                       sl = reflect.MakeSlice(typ, 0, 1)
+                               }
+                               sl = reflect.Append(sl, ext)
+                               SetExtension(ep, desc, sl.Interface())
+                       }
+                       if err := p.consumeOptionalSeparator(); err != nil {
+                               return err
+                       }
+                       continue
+               }
+
+               // This is a normal, non-extension field.
+               name := tok.value
+               var dst reflect.Value
+               fi, props, ok := structFieldByName(sprops, name)
+               if ok {
+                       dst = sv.Field(fi)
+               } else if oop, ok := sprops.OneofTypes[name]; ok {
+                       // It is a oneof.
+                       props = oop.Prop
+                       nv := reflect.New(oop.Type.Elem())
+                       dst = nv.Elem().Field(0)
+                       sv.Field(oop.Field).Set(nv)
+               }
+               if !dst.IsValid() {
+                       return p.errorf("unknown field name %q in %v", name, st)
+               }
+
+               if dst.Kind() == reflect.Map {
+                       // Consume any colon.
+                       if err := p.checkForColon(props, dst.Type()); err != nil {
+                               return err
+                       }
+
+                       // Construct the map if it doesn't already exist.
+                       if dst.IsNil() {
+                               dst.Set(reflect.MakeMap(dst.Type()))
+                       }
+                       key := reflect.New(dst.Type().Key()).Elem()
+                       val := reflect.New(dst.Type().Elem()).Elem()
+
+                       // The map entry should be this sequence of tokens:
+                       //      < key : KEY value : VALUE >
+                       // Technically the "key" and "value" could come in any order,
+                       // but in practice they won't.
+
+                       tok := p.next()
+                       var terminator string
+                       switch tok.value {
+                       case "<":
+                               terminator = ">"
+                       case "{":
+                               terminator = "}"
+                       default:
+                               return p.errorf("expected '{' or '<', found %q", tok.value)
+                       }
+                       if err := p.consumeToken("key"); err != nil {
+                               return err
+                       }
+                       if err := p.consumeToken(":"); err != nil {
+                               return err
+                       }
+                       if err := p.readAny(key, props.mkeyprop); err != nil {
+                               return err
+                       }
+                       if err := p.consumeOptionalSeparator(); err != nil {
+                               return err
+                       }
+                       if err := p.consumeToken("value"); err != nil {
+                               return err
+                       }
+                       if err := p.checkForColon(props.mvalprop, dst.Type().Elem()); err != nil {
+                               return err
+                       }
+                       if err := p.readAny(val, props.mvalprop); err != nil {
+                               return err
+                       }
+                       if err := p.consumeOptionalSeparator(); err != nil {
+                               return err
+                       }
+                       if err := p.consumeToken(terminator); err != nil {
+                               return err
+                       }
+
+                       dst.SetMapIndex(key, val)
+                       continue
+               }
+
+               // Check that it's not already set if it's not a repeated field.
+               if !props.Repeated && fieldSet[name] {
+                       return p.errorf("non-repeated field %q was repeated", name)
+               }
+
+               if err := p.checkForColon(props, dst.Type()); err != nil {
+                       return err
+               }
+
+               // Parse into the field.
+               fieldSet[name] = true
+               if err := p.readAny(dst, props); err != nil {
+                       if _, ok := err.(*RequiredNotSetError); !ok {
+                               return err
+                       }
+                       reqFieldErr = err
+               } else if props.Required {
+                       reqCount--
+               }
+
+               if err := p.consumeOptionalSeparator(); err != nil {
+                       return err
+               }
+
+       }
+
+       if reqCount > 0 {
+               return p.missingRequiredFieldError(sv)
+       }
+       return reqFieldErr
+}
+
+// consumeExtName consumes extension name or expanded Any type URL and the
+// following ']'. It returns the name or URL consumed.
+func (p *textParser) consumeExtName() (string, error) {
+       tok := p.next()
+       if tok.err != nil {
+               return "", tok.err
+       }
+
+       // If extension name or type url is quoted, it's a single token.
+       if len(tok.value) > 2 && isQuote(tok.value[0]) && tok.value[len(tok.value)-1] == tok.value[0] {
+               name, err := unquoteC(tok.value[1:len(tok.value)-1], rune(tok.value[0]))
+               if err != nil {
+                       return "", err
+               }
+               return name, p.consumeToken("]")
+       }
+
+       // Consume everything up to "]"
+       var parts []string
+       for tok.value != "]" {
+               parts = append(parts, tok.value)
+               tok = p.next()
+               if tok.err != nil {
+                       return "", p.errorf("unrecognized type_url or extension name: %s", tok.err)
+               }
+       }
+       return strings.Join(parts, ""), nil
+}
+
+// consumeOptionalSeparator consumes an optional semicolon or comma.
+// It is used in readStruct to provide backward compatibility.
+func (p *textParser) consumeOptionalSeparator() error {
+       tok := p.next()
+       if tok.err != nil {
+               return tok.err
+       }
+       if tok.value != ";" && tok.value != "," {
+               p.back()
+       }
+       return nil
+}
+
+func (p *textParser) readAny(v reflect.Value, props *Properties) error {
+       tok := p.next()
+       if tok.err != nil {
+               return tok.err
+       }
+       if tok.value == "" {
+               return p.errorf("unexpected EOF")
+       }
+
+       switch fv := v; fv.Kind() {
+       case reflect.Slice:
+               at := v.Type()
+               if at.Elem().Kind() == reflect.Uint8 {
+                       // Special case for []byte
+                       if tok.value[0] != '"' && tok.value[0] != '\'' {
+                               // Deliberately written out here, as the error after
+                               // this switch statement would write "invalid []byte: ...",
+                               // which is not as user-friendly.
+                               return p.errorf("invalid string: %v", tok.value)
+                       }
+                       bytes := []byte(tok.unquoted)
+                       fv.Set(reflect.ValueOf(bytes))
+                       return nil
+               }
+               // Repeated field.
+               if tok.value == "[" {
+                       // Repeated field with list notation, like [1,2,3].
+                       for {
+                               fv.Set(reflect.Append(fv, reflect.New(at.Elem()).Elem()))
+                               err := p.readAny(fv.Index(fv.Len()-1), props)
+                               if err != nil {
+                                       return err
+                               }
+                               tok := p.next()
+                               if tok.err != nil {
+                                       return tok.err
+                               }
+                               if tok.value == "]" {
+                                       break
+                               }
+                               if tok.value != "," {
+                                       return p.errorf("Expected ']' or ',' found %q", tok.value)
+                               }
+                       }
+                       return nil
+               }
+               // One value of the repeated field.
+               p.back()
+               fv.Set(reflect.Append(fv, reflect.New(at.Elem()).Elem()))
+               return p.readAny(fv.Index(fv.Len()-1), props)
+       case reflect.Bool:
+               // Either "true", "false", 1 or 0.
+               switch tok.value {
+               case "true", "1":
+                       fv.SetBool(true)
+                       return nil
+               case "false", "0":
+                       fv.SetBool(false)
+                       return nil
+               }
+       case reflect.Float32, reflect.Float64:
+               v := tok.value
+               // Ignore 'f' for compatibility with output generated by C++, but don't
+               // remove 'f' when the value is "-inf" or "inf".
+               if strings.HasSuffix(v, "f") && tok.value != "-inf" && tok.value != "inf" {
+                       v = v[:len(v)-1]
+               }
+               if f, err := strconv.ParseFloat(v, fv.Type().Bits()); err == nil {
+                       fv.SetFloat(f)
+                       return nil
+               }
+       case reflect.Int32:
+               if x, err := strconv.ParseInt(tok.value, 0, 32); err == nil {
+                       fv.SetInt(x)
+                       return nil
+               }
+
+               if len(props.Enum) == 0 {
+                       break
+               }
+               m, ok := enumValueMaps[props.Enum]
+               if !ok {
+                       break
+               }
+               x, ok := m[tok.value]
+               if !ok {
+                       break
+               }
+               fv.SetInt(int64(x))
+               return nil
+       case reflect.Int64:
+               if x, err := strconv.ParseInt(tok.value, 0, 64); err == nil {
+                       fv.SetInt(x)
+                       return nil
+               }
+
+       case reflect.Ptr:
+               // A basic field (indirected through pointer), or a repeated message/group
+               p.back()
+               fv.Set(reflect.New(fv.Type().Elem()))
+               return p.readAny(fv.Elem(), props)
+       case reflect.String:
+               if tok.value[0] == '"' || tok.value[0] == '\'' {
+                       fv.SetString(tok.unquoted)
+                       return nil
+               }
+       case reflect.Struct:
+               var terminator string
+               switch tok.value {
+               case "{":
+                       terminator = "}"
+               case "<":
+                       terminator = ">"
+               default:
+                       return p.errorf("expected '{' or '<', found %q", tok.value)
+               }
+               // TODO: Handle nested messages which implement encoding.TextUnmarshaler.
+               return p.readStruct(fv, terminator)
+       case reflect.Uint32:
+               if x, err := strconv.ParseUint(tok.value, 0, 32); err == nil {
+                       fv.SetUint(uint64(x))
+                       return nil
+               }
+       case reflect.Uint64:
+               if x, err := strconv.ParseUint(tok.value, 0, 64); err == nil {
+                       fv.SetUint(x)
+                       return nil
+               }
+       }
+       return p.errorf("invalid %v: %v", v.Type(), tok.value)
+}
+
+// UnmarshalText reads a protocol buffer in Text format. UnmarshalText resets pb
+// before starting to unmarshal, so any existing data in pb is always removed.
+// If a required field is not set and no other error occurs,
+// UnmarshalText returns *RequiredNotSetError.
+func UnmarshalText(s string, pb Message) error {
+       if um, ok := pb.(encoding.TextUnmarshaler); ok {
+               err := um.UnmarshalText([]byte(s))
+               return err
+       }
+       pb.Reset()
+       v := reflect.ValueOf(pb)
+       if pe := newTextParser(s).readStruct(v.Elem(), ""); pe != nil {
+               return pe
+       }
+       return nil
+}
diff --git a/vendor/github.com/matttproud/golang_protobuf_extensions/LICENSE b/vendor/github.com/matttproud/golang_protobuf_extensions/LICENSE
new file mode 100644 (file)
index 0000000..8dada3e
--- /dev/null
@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "{}"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright {yyyy} {name of copyright owner}
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/vendor/github.com/matttproud/golang_protobuf_extensions/NOTICE b/vendor/github.com/matttproud/golang_protobuf_extensions/NOTICE
new file mode 100644 (file)
index 0000000..5d8cb5b
--- /dev/null
@@ -0,0 +1 @@
+Copyright 2012 Matt T. Proud (matt.proud@gmail.com)
diff --git a/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/decode.go b/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/decode.go
new file mode 100644 (file)
index 0000000..66d9b54
--- /dev/null
@@ -0,0 +1,75 @@
+// Copyright 2013 Matt T. Proud
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package pbutil
+
+import (
+       "encoding/binary"
+       "errors"
+       "io"
+
+       "github.com/golang/protobuf/proto"
+)
+
+var errInvalidVarint = errors.New("invalid varint32 encountered")
+
+// ReadDelimited decodes a message from the provided length-delimited stream,
+// where the length is encoded as 32-bit varint prefix to the message body.
+// It returns the total number of bytes read and any applicable error.  This is
+// roughly equivalent to the companion Java API's
+// MessageLite#parseDelimitedFrom.  As per the reader contract, this function
+// calls r.Read repeatedly as required until exactly one message including its
+// prefix is read and decoded (or an error has occurred).  The function never
+// reads more bytes from the stream than required.  The function never returns
+// an error if a message has been read and decoded correctly, even if the end
+// of the stream has been reached in doing so.  In that case, any subsequent
+// calls return (0, io.EOF).
+func ReadDelimited(r io.Reader, m proto.Message) (n int, err error) {
+       // Per AbstractParser#parsePartialDelimitedFrom with
+       // CodedInputStream#readRawVarint32.
+       headerBuf := make([]byte, binary.MaxVarintLen32)
+       var bytesRead, varIntBytes int
+       var messageLength uint64
+       for varIntBytes == 0 { // i.e. no varint has been decoded yet.
+               if bytesRead >= len(headerBuf) {
+                       return bytesRead, errInvalidVarint
+               }
+               // We have to read byte by byte here to avoid reading more bytes
+               // than required. Each read byte is appended to what we have
+               // read before.
+               newBytesRead, err := r.Read(headerBuf[bytesRead : bytesRead+1])
+               if newBytesRead == 0 {
+                       if err != nil {
+                               return bytesRead, err
+                       }
+                       // A Reader should not return (0, nil), but if it does,
+                       // it should be treated as no-op (according to the
+                       // Reader contract). So let's go on...
+                       continue
+               }
+               bytesRead += newBytesRead
+               // Now present everything read so far to the varint decoder and
+               // see if a varint can be decoded already.
+               messageLength, varIntBytes = proto.DecodeVarint(headerBuf[:bytesRead])
+       }
+
+       messageBuf := make([]byte, messageLength)
+       newBytesRead, err := io.ReadFull(r, messageBuf)
+       bytesRead += newBytesRead
+       if err != nil {
+               return bytesRead, err
+       }
+
+       return bytesRead, proto.Unmarshal(messageBuf, m)
+}
diff --git a/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/doc.go b/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/doc.go
new file mode 100644 (file)
index 0000000..c318385
--- /dev/null
@@ -0,0 +1,16 @@
+// Copyright 2013 Matt T. Proud
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Package pbutil provides record length-delimited Protocol Buffer streaming.
+package pbutil
diff --git a/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/encode.go b/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/encode.go
new file mode 100644 (file)
index 0000000..4b76ea9
--- /dev/null
@@ -0,0 +1,46 @@
+// Copyright 2013 Matt T. Proud
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package pbutil
+
+import (
+       "encoding/binary"
+       "io"
+
+       "github.com/golang/protobuf/proto"
+)
+
+// WriteDelimited encodes and dumps a message to the provided writer prefixed
+// with a 32-bit varint indicating the length of the encoded message, producing
+// a length-delimited record stream, which can be used to chain together
+// encoded messages of the same type together in a file.  It returns the total
+// number of bytes written and any applicable error.  This is roughly
+// equivalent to the companion Java API's MessageLite#writeDelimitedTo.
+func WriteDelimited(w io.Writer, m proto.Message) (n int, err error) {
+       buffer, err := proto.Marshal(m)
+       if err != nil {
+               return 0, err
+       }
+
+       buf := make([]byte, binary.MaxVarintLen32)
+       encodedLength := binary.PutUvarint(buf, uint64(len(buffer)))
+
+       sync, err := w.Write(buf[:encodedLength])
+       if err != nil {
+               return sync, err
+       }
+
+       n, err = w.Write(buffer)
+       return n + sync, err
+}
diff --git a/vendor/github.com/prometheus/client_golang/LICENSE b/vendor/github.com/prometheus/client_golang/LICENSE
new file mode 100644 (file)
index 0000000..261eeb9
--- /dev/null
@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/vendor/github.com/prometheus/client_golang/NOTICE b/vendor/github.com/prometheus/client_golang/NOTICE
new file mode 100644 (file)
index 0000000..37e4a7d
--- /dev/null
@@ -0,0 +1,28 @@
+Prometheus instrumentation library for Go applications
+Copyright 2012-2015 The Prometheus Authors
+
+This product includes software developed at
+SoundCloud Ltd. (http://soundcloud.com/).
+
+
+The following components are included in this product:
+
+goautoneg
+http://bitbucket.org/ww/goautoneg
+Copyright 2011, Open Knowledge Foundation Ltd.
+See README.txt for license details.
+
+perks - a fork of https://github.com/bmizerany/perks
+https://github.com/beorn7/perks
+Copyright 2013-2015 Blake Mizerany, Björn Rabenstein
+See https://github.com/beorn7/perks/blob/master/README.md for license details.
+
+Go support for Protocol Buffers - Google's data interchange format
+http://github.com/golang/protobuf/
+Copyright 2010 The Go Authors
+See source code for license details.
+
+Support for streaming Protocol Buffer messages for the Go language (golang).
+https://github.com/matttproud/golang_protobuf_extensions
+Copyright 2013 Matt T. Proud
+Licensed under the Apache License, Version 2.0
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/README.md b/vendor/github.com/prometheus/client_golang/prometheus/README.md
new file mode 100644 (file)
index 0000000..81032be
--- /dev/null
@@ -0,0 +1,53 @@
+# Overview
+This is the [Prometheus](http://www.prometheus.io) telemetric
+instrumentation client [Go](http://golang.org) client library.  It
+enable authors to define process-space metrics for their servers and
+expose them through a web service interface for extraction,
+aggregation, and a whole slew of other post processing techniques.
+
+# Installing
+    $ go get github.com/prometheus/client_golang/prometheus
+
+# Example
+```go
+package main
+
+import (
+       "net/http"
+
+       "github.com/prometheus/client_golang/prometheus"
+)
+
+var (
+       indexed = prometheus.NewCounter(prometheus.CounterOpts{
+               Namespace: "my_company",
+               Subsystem: "indexer",
+               Name:      "documents_indexed",
+               Help:      "The number of documents indexed.",
+       })
+       size = prometheus.NewGauge(prometheus.GaugeOpts{
+               Namespace: "my_company",
+               Subsystem: "storage",
+               Name:      "documents_total_size_bytes",
+               Help:      "The total size of all documents in the storage.",
+       })
+)
+
+func main() {
+       http.Handle("/metrics", prometheus.Handler())
+
+       indexed.Inc()
+       size.Set(5)
+
+       http.ListenAndServe(":8080", nil)
+}
+
+func init() {
+       prometheus.MustRegister(indexed)
+       prometheus.MustRegister(size)
+}
+```
+
+# Documentation
+
+[![GoDoc](https://godoc.org/github.com/prometheus/client_golang?status.png)](https://godoc.org/github.com/prometheus/client_golang)
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/collector.go b/vendor/github.com/prometheus/client_golang/prometheus/collector.go
new file mode 100644 (file)
index 0000000..c046880
--- /dev/null
@@ -0,0 +1,75 @@
+// Copyright 2014 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package prometheus
+
+// Collector is the interface implemented by anything that can be used by
+// Prometheus to collect metrics. A Collector has to be registered for
+// collection. See Register, MustRegister, RegisterOrGet, and MustRegisterOrGet.
+//
+// The stock metrics provided by this package (like Gauge, Counter, Summary) are
+// also Collectors (which only ever collect one metric, namely itself). An
+// implementer of Collector may, however, collect multiple metrics in a
+// coordinated fashion and/or create metrics on the fly. Examples for collectors
+// already implemented in this library are the metric vectors (i.e. collection
+// of multiple instances of the same Metric but with different label values)
+// like GaugeVec or SummaryVec, and the ExpvarCollector.
+type Collector interface {
+       // Describe sends the super-set of all possible descriptors of metrics
+       // collected by this Collector to the provided channel and returns once
+       // the last descriptor has been sent. The sent descriptors fulfill the
+       // consistency and uniqueness requirements described in the Desc
+       // documentation. (It is valid if one and the same Collector sends
+       // duplicate descriptors. Those duplicates are simply ignored. However,
+       // two different Collectors must not send duplicate descriptors.) This
+       // method idempotently sends the same descriptors throughout the
+       // lifetime of the Collector. If a Collector encounters an error while
+       // executing this method, it must send an invalid descriptor (created
+       // with NewInvalidDesc) to signal the error to the registry.
+       Describe(chan<- *Desc)
+       // Collect is called by Prometheus when collecting metrics. The
+       // implementation sends each collected metric via the provided channel
+       // and returns once the last metric has been sent. The descriptor of
+       // each sent metric is one of those returned by Describe. Returned
+       // metrics that share the same descriptor must differ in their variable
+       // label values. This method may be called concurrently and must
+       // therefore be implemented in a concurrency safe way. Blocking occurs
+       // at the expense of total performance of rendering all registered
+       // metrics. Ideally, Collector implementations support concurrent
+       // readers.
+       Collect(chan<- Metric)
+}
+
+// SelfCollector implements Collector for a single Metric so that that the
+// Metric collects itself. Add it as an anonymous field to a struct that
+// implements Metric, and call Init with the Metric itself as an argument.
+type SelfCollector struct {
+       self Metric
+}
+
+// Init provides the SelfCollector with a reference to the metric it is supposed
+// to collect. It is usually called within the factory function to create a
+// metric. See example.
+func (c *SelfCollector) Init(self Metric) {
+       c.self = self
+}
+
+// Describe implements Collector.
+func (c *SelfCollector) Describe(ch chan<- *Desc) {
+       ch <- c.self.Desc()
+}
+
+// Collect implements Collector.
+func (c *SelfCollector) Collect(ch chan<- Metric) {
+       ch <- c.self
+}
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/counter.go b/vendor/github.com/prometheus/client_golang/prometheus/counter.go
new file mode 100644 (file)
index 0000000..d2a564b
--- /dev/null
@@ -0,0 +1,173 @@
+// Copyright 2014 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package prometheus
+
+import (
+       "errors"
+)
+
+// Counter is a Metric that represents a single numerical value that only ever
+// goes up. That implies that it cannot be used to count items whose number can
+// also go down, e.g. the number of currently running goroutines. Those
+// "counters" are represented by Gauges.
+//
+// A Counter is typically used to count requests served, tasks completed, errors
+// occurred, etc.
+//
+// To create Counter instances, use NewCounter.
+type Counter interface {
+       Metric
+       Collector
+
+       // Set is used to set the Counter to an arbitrary value. It is only used
+       // if you have to transfer a value from an external counter into this
+       // Prometheus metric. Do not use it for regular handling of a
+       // Prometheus counter (as it can be used to break the contract of
+       // monotonically increasing values).
+       Set(float64)
+       // Inc increments the counter by 1.
+       Inc()
+       // Add adds the given value to the counter. It panics if the value is <
+       // 0.
+       Add(float64)
+}
+
+// CounterOpts is an alias for Opts. See there for doc comments.
+type CounterOpts Opts
+
+// NewCounter creates a new Counter based on the provided CounterOpts.
+func NewCounter(opts CounterOpts) Counter {
+       desc := NewDesc(
+               BuildFQName(opts.Namespace, opts.Subsystem, opts.Name),
+               opts.Help,
+               nil,
+               opts.ConstLabels,
+       )
+       result := &counter{value: value{desc: desc, valType: CounterValue, labelPairs: desc.constLabelPairs}}
+       result.Init(result) // Init self-collection.
+       return result
+}
+
+type counter struct {
+       value
+}
+
+func (c *counter) Add(v float64) {
+       if v < 0 {
+               panic(errors.New("counter cannot decrease in value"))
+       }
+       c.value.Add(v)
+}
+
+// CounterVec is a Collector that bundles a set of Counters that all share the
+// same Desc, but have different values for their variable labels. This is used
+// if you want to count the same thing partitioned by various dimensions
+// (e.g. number of HTTP requests, partitioned by response code and
+// method). Create instances with NewCounterVec.
+//
+// CounterVec embeds MetricVec. See there for a full list of methods with
+// detailed documentation.
+type CounterVec struct {
+       MetricVec
+}
+
+// NewCounterVec creates a new CounterVec based on the provided CounterOpts and
+// partitioned by the given label names. At least one label name must be
+// provided.
+func NewCounterVec(opts CounterOpts, labelNames []string) *CounterVec {
+       desc := NewDesc(
+               BuildFQName(opts.Namespace, opts.Subsystem, opts.Name),
+               opts.Help,
+               labelNames,
+               opts.ConstLabels,
+       )
+       return &CounterVec{
+               MetricVec: MetricVec{
+                       children: map[uint64]Metric{},
+                       desc:     desc,
+                       newMetric: func(lvs ...string) Metric {
+                               result := &counter{value: value{
+                                       desc:       desc,
+                                       valType:    CounterValue,
+                                       labelPairs: makeLabelPairs(desc, lvs),
+                               }}
+                               result.Init(result) // Init self-collection.
+                               return result
+                       },
+               },
+       }
+}
+
+// GetMetricWithLabelValues replaces the method of the same name in
+// MetricVec. The difference is that this method returns a Counter and not a
+// Metric so that no type conversion is required.
+func (m *CounterVec) GetMetricWithLabelValues(lvs ...string) (Counter, error) {
+       metric, err := m.MetricVec.GetMetricWithLabelValues(lvs...)
+       if metric != nil {
+               return metric.(Counter), err
+       }
+       return nil, err
+}
+
+// GetMetricWith replaces the method of the same name in MetricVec. The
+// difference is that this method returns a Counter and not a Metric so that no
+// type conversion is required.
+func (m *CounterVec) GetMetricWith(labels Labels) (Counter, error) {
+       metric, err := m.MetricVec.GetMetricWith(labels)
+       if metric != nil {
+               return metric.(Counter), err
+       }
+       return nil, err
+}
+
+// WithLabelValues works as GetMetricWithLabelValues, but panics where
+// GetMetricWithLabelValues would have returned an error. By not returning an
+// error, WithLabelValues allows shortcuts like
+//     myVec.WithLabelValues("404", "GET").Add(42)
+func (m *CounterVec) WithLabelValues(lvs ...string) Counter {
+       return m.MetricVec.WithLabelValues(lvs...).(Counter)
+}
+
+// With works as GetMetricWith, but panics where GetMetricWithLabels would have
+// returned an error. By not returning an error, With allows shortcuts like
+//     myVec.With(Labels{"code": "404", "method": "GET"}).Add(42)
+func (m *CounterVec) With(labels Labels) Counter {
+       return m.MetricVec.With(labels).(Counter)
+}
+
+// CounterFunc is a Counter whose value is determined at collect time by calling a
+// provided function.
+//
+// To create CounterFunc instances, use NewCounterFunc.
+type CounterFunc interface {
+       Metric
+       Collector
+}
+
+// NewCounterFunc creates a new CounterFunc based on the provided
+// CounterOpts. The value reported is determined by calling the given function
+// from within the Write method. Take into account that metric collection may
+// happen concurrently. If that results in concurrent calls to Write, like in
+// the case where a CounterFunc is directly registered with Prometheus, the
+// provided function must be concurrency-safe. The function should also honor
+// the contract for a Counter (values only go up, not down), but compliance will
+// not be checked.
+func NewCounterFunc(opts CounterOpts, function func() float64) CounterFunc {
+       return newValueFunc(NewDesc(
+               BuildFQName(opts.Namespace, opts.Subsystem, opts.Name),
+               opts.Help,
+               nil,
+               opts.ConstLabels,
+       ), CounterValue, function)
+}
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/desc.go b/vendor/github.com/prometheus/client_golang/prometheus/desc.go
new file mode 100644 (file)
index 0000000..ee02d9b
--- /dev/null
@@ -0,0 +1,192 @@
+package prometheus
+
+import (
+       "errors"
+       "fmt"
+       "regexp"
+       "sort"
+       "strings"
+
+       "github.com/golang/protobuf/proto"
+
+       dto "github.com/prometheus/client_model/go"
+)
+
+var (
+       metricNameRE = regexp.MustCompile(`^[a-zA-Z_][a-zA-Z0-9_:]*$`)
+       labelNameRE  = regexp.MustCompile("^[a-zA-Z_][a-zA-Z0-9_]*$")
+)
+
+// reservedLabelPrefix is a prefix which is not legal in user-supplied
+// label names.
+const reservedLabelPrefix = "__"
+
+// Labels represents a collection of label name -> value mappings. This type is
+// commonly used with the With(Labels) and GetMetricWith(Labels) methods of
+// metric vector Collectors, e.g.:
+//     myVec.With(Labels{"code": "404", "method": "GET"}).Add(42)
+//
+// The other use-case is the specification of constant label pairs in Opts or to
+// create a Desc.
+type Labels map[string]string
+
+// Desc is the descriptor used by every Prometheus Metric. It is essentially
+// the immutable meta-data of a Metric. The normal Metric implementations
+// included in this package manage their Desc under the hood. Users only have to
+// deal with Desc if they use advanced features like the ExpvarCollector or
+// custom Collectors and Metrics.
+//
+// Descriptors registered with the same registry have to fulfill certain
+// consistency and uniqueness criteria if they share the same fully-qualified
+// name: They must have the same help string and the same label names (aka label
+// dimensions) in each, constLabels and variableLabels, but they must differ in
+// the values of the constLabels.
+//
+// Descriptors that share the same fully-qualified names and the same label
+// values of their constLabels are considered equal.
+//
+// Use NewDesc to create new Desc instances.
+type Desc struct {
+       // fqName has been built from Namespace, Subsystem, and Name.
+       fqName string
+       // help provides some helpful information about this metric.
+       help string
+       // constLabelPairs contains precalculated DTO label pairs based on
+       // the constant labels.
+       constLabelPairs []*dto.LabelPair
+       // VariableLabels contains names of labels for which the metric
+       // maintains variable values.
+       variableLabels []string
+       // id is a hash of the values of the ConstLabels and fqName. This
+       // must be unique among all registered descriptors and can therefore be
+       // used as an identifier of the descriptor.
+       id uint64
+       // dimHash is a hash of the label names (preset and variable) and the
+       // Help string. Each Desc with the same fqName must have the same
+       // dimHash.
+       dimHash uint64
+       // err is an error that occured during construction. It is reported on
+       // registration time.
+       err error
+}
+
+// NewDesc allocates and initializes a new Desc. Errors are recorded in the Desc
+// and will be reported on registration time. variableLabels and constLabels can
+// be nil if no such labels should be set. fqName and help must not be empty.
+//
+// variableLabels only contain the label names. Their label values are variable
+// and therefore not part of the Desc. (They are managed within the Metric.)
+//
+// For constLabels, the label values are constant. Therefore, they are fully
+// specified in the Desc. See the Opts documentation for the implications of
+// constant labels.
+func NewDesc(fqName, help string, variableLabels []string, constLabels Labels) *Desc {
+       d := &Desc{
+               fqName:         fqName,
+               help:           help,
+               variableLabels: variableLabels,
+       }
+       if help == "" {
+               d.err = errors.New("empty help string")
+               return d
+       }
+       if !metricNameRE.MatchString(fqName) {
+               d.err = fmt.Errorf("%q is not a valid metric name", fqName)
+               return d
+       }
+       // labelValues contains the label values of const labels (in order of
+       // their sorted label names) plus the fqName (at position 0).
+       labelValues := make([]string, 1, len(constLabels)+1)
+       labelValues[0] = fqName
+       labelNames := make([]string, 0, len(constLabels)+len(variableLabels))
+       labelNameSet := map[string]struct{}{}
+       // First add only the const label names and sort them...
+       for labelName := range constLabels {
+               if !checkLabelName(labelName) {
+                       d.err = fmt.Errorf("%q is not a valid label name", labelName)
+                       return d
+               }
+               labelNames = append(labelNames, labelName)
+               labelNameSet[labelName] = struct{}{}
+       }
+       sort.Strings(labelNames)
+       // ... so that we can now add const label values in the order of their names.
+       for _, labelName := range labelNames {
+               labelValues = append(labelValues, constLabels[labelName])
+       }
+       // Now add the variable label names, but prefix them with something that
+       // cannot be in a regular label name. That prevents matching the label
+       // dimension with a different mix between preset and variable labels.
+       for _, labelName := range variableLabels {
+               if !checkLabelName(labelName) {
+                       d.err = fmt.Errorf("%q is not a valid label name", labelName)
+                       return d
+               }
+               labelNames = append(labelNames, "$"+labelName)
+               labelNameSet[labelName] = struct{}{}
+       }
+       if len(labelNames) != len(labelNameSet) {
+               d.err = errors.New("duplicate label names")
+               return d
+       }
+       vh := hashNew()
+       for _, val := range labelValues {
+               vh = hashAdd(vh, val)
+               vh = hashAddByte(vh, separatorByte)
+       }
+       d.id = vh
+       // Sort labelNames so that order doesn't matter for the hash.
+       sort.Strings(labelNames)
+       // Now hash together (in this order) the help string and the sorted
+       // label names.
+       lh := hashNew()
+       lh = hashAdd(lh, help)
+       lh = hashAddByte(lh, separatorByte)
+       for _, labelName := range labelNames {
+               lh = hashAdd(lh, labelName)
+               lh = hashAddByte(lh, separatorByte)
+       }
+       d.dimHash = lh
+
+       d.constLabelPairs = make([]*dto.LabelPair, 0, len(constLabels))
+       for n, v := range constLabels {
+               d.constLabelPairs = append(d.constLabelPairs, &dto.LabelPair{
+                       Name:  proto.String(n),
+                       Value: proto.String(v),
+               })
+       }
+       sort.Sort(LabelPairSorter(d.constLabelPairs))
+       return d
+}
+
+// NewInvalidDesc returns an invalid descriptor, i.e. a descriptor with the
+// provided error set. If a collector returning such a descriptor is registered,
+// registration will fail with the provided error. NewInvalidDesc can be used by
+// a Collector to signal inability to describe itself.
+func NewInvalidDesc(err error) *Desc {
+       return &Desc{
+               err: err,
+       }
+}
+
+func (d *Desc) String() string {
+       lpStrings := make([]string, 0, len(d.constLabelPairs))
+       for _, lp := range d.constLabelPairs {
+               lpStrings = append(
+                       lpStrings,
+                       fmt.Sprintf("%s=%q", lp.GetName(), lp.GetValue()),
+               )
+       }
+       return fmt.Sprintf(
+               "Desc{fqName: %q, help: %q, constLabels: {%s}, variableLabels: %v}",
+               d.fqName,
+               d.help,
+               strings.Join(lpStrings, ","),
+               d.variableLabels,
+       )
+}
+
+func checkLabelName(l string) bool {
+       return labelNameRE.MatchString(l) &&
+               !strings.HasPrefix(l, reservedLabelPrefix)
+}
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/doc.go b/vendor/github.com/prometheus/client_golang/prometheus/doc.go
new file mode 100644 (file)
index 0000000..425fe87
--- /dev/null
@@ -0,0 +1,109 @@
+// Copyright 2014 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Package prometheus provides embeddable metric primitives for servers and
+// standardized exposition of telemetry through a web services interface.
+//
+// All exported functions and methods are safe to be used concurrently unless
+// specified otherwise.
+//
+// To expose metrics registered with the Prometheus registry, an HTTP server
+// needs to know about the Prometheus handler. The usual endpoint is "/metrics".
+//
+//     http.Handle("/metrics", prometheus.Handler())
+//
+// As a starting point a very basic usage example:
+//
+//    package main
+//
+//    import (
+//     "net/http"
+//
+//     "github.com/prometheus/client_golang/prometheus"
+//    )
+//
+//    var (
+//     cpuTemp = prometheus.NewGauge(prometheus.GaugeOpts{
+//             Name: "cpu_temperature_celsius",
+//             Help: "Current temperature of the CPU.",
+//     })
+//     hdFailures = prometheus.NewCounter(prometheus.CounterOpts{
+//             Name: "hd_errors_total",
+//             Help: "Number of hard-disk errors.",
+//     })
+//    )
+//
+//    func init() {
+//     prometheus.MustRegister(cpuTemp)
+//     prometheus.MustRegister(hdFailures)
+//    }
+//
+//    func main() {
+//     cpuTemp.Set(65.3)
+//     hdFailures.Inc()
+//
+//     http.Handle("/metrics", prometheus.Handler())
+//     http.ListenAndServe(":8080", nil)
+//    }
+//
+//
+// This is a complete program that exports two metrics, a Gauge and a Counter.
+// It also exports some stats about the HTTP usage of the /metrics
+// endpoint. (See the Handler function for more detail.)
+//
+// Two more advanced metric types are the Summary and Histogram.
+//
+// In addition to the fundamental metric types Gauge, Counter, Summary, and
+// Histogram, a very important part of the Prometheus data model is the
+// partitioning of samples along dimensions called labels, which results in
+// metric vectors. The fundamental types are GaugeVec, CounterVec, SummaryVec,
+// and HistogramVec.
+//
+// Those are all the parts needed for basic usage. Detailed documentation and
+// examples are provided below.
+//
+// Everything else this package offers is essentially for "power users" only. A
+// few pointers to "power user features":
+//
+// All the various ...Opts structs have a ConstLabels field for labels that
+// never change their value (which is only useful under special circumstances,
+// see documentation of the Opts type).
+//
+// The Untyped metric behaves like a Gauge, but signals the Prometheus server
+// not to assume anything about its type.
+//
+// Functions to fine-tune how the metric registry works: EnableCollectChecks,
+// PanicOnCollectError, Register, Unregister, SetMetricFamilyInjectionHook.
+//
+// For custom metric collection, there are two entry points: Custom Metric
+// implementations and custom Collector implementations. A Metric is the
+// fundamental unit in the Prometheus data model: a sample at a point in time
+// together with its meta-data (like its fully-qualified name and any number of
+// pairs of label name and label value) that knows how to marshal itself into a
+// data transfer object (aka DTO, implemented as a protocol buffer). A Collector
+// gets registered with the Prometheus registry and manages the collection of
+// one or more Metrics. Many parts of this package are building blocks for
+// Metrics and Collectors. Desc is the metric descriptor, actually used by all
+// metrics under the hood, and by Collectors to describe the Metrics to be
+// collected, but only to be dealt with by users if they implement their own
+// Metrics or Collectors. To create a Desc, the BuildFQName function will come
+// in handy. Other useful components for Metric and Collector implementation
+// include: LabelPairSorter to sort the DTO version of label pairs,
+// NewConstMetric and MustNewConstMetric to create "throw away" Metrics at
+// collection time, MetricVec to bundle custom Metrics into a metric vector
+// Collector, SelfCollector to make a custom Metric collect itself.
+//
+// A good example for a custom Collector is the ExpVarCollector included in this
+// package, which exports variables exported via the "expvar" package as
+// Prometheus metrics.
+package prometheus
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/expvar.go b/vendor/github.com/prometheus/client_golang/prometheus/expvar.go
new file mode 100644 (file)
index 0000000..0f7630d
--- /dev/null
@@ -0,0 +1,119 @@
+// Copyright 2014 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package prometheus
+
+import (
+       "encoding/json"
+       "expvar"
+)
+
+// ExpvarCollector collects metrics from the expvar interface. It provides a
+// quick way to expose numeric values that are already exported via expvar as
+// Prometheus metrics. Note that the data models of expvar and Prometheus are
+// fundamentally different, and that the ExpvarCollector is inherently
+// slow. Thus, the ExpvarCollector is probably great for experiments and
+// prototying, but you should seriously consider a more direct implementation of
+// Prometheus metrics for monitoring production systems.
+//
+// Use NewExpvarCollector to create new instances.
+type ExpvarCollector struct {
+       exports map[string]*Desc
+}
+
+// NewExpvarCollector returns a newly allocated ExpvarCollector that still has
+// to be registered with the Prometheus registry.
+//
+// The exports map has the following meaning:
+//
+// The keys in the map correspond to expvar keys, i.e. for every expvar key you
+// want to export as Prometheus metric, you need an entry in the exports
+// map. The descriptor mapped to each key describes how to export the expvar
+// value. It defines the name and the help string of the Prometheus metric
+// proxying the expvar value. The type will always be Untyped.
+//
+// For descriptors without variable labels, the expvar value must be a number or
+// a bool. The number is then directly exported as the Prometheus sample
+// value. (For a bool, 'false' translates to 0 and 'true' to 1). Expvar values
+// that are not numbers or bools are silently ignored.
+//
+// If the descriptor has one variable label, the expvar value must be an expvar
+// map. The keys in the expvar map become the various values of the one
+// Prometheus label. The values in the expvar map must be numbers or bools again
+// as above.
+//
+// For descriptors with more than one variable label, the expvar must be a
+// nested expvar map, i.e. where the values of the topmost map are maps again
+// etc. until a depth is reached that corresponds to the number of labels. The
+// leaves of that structure must be numbers or bools as above to serve as the
+// sample values.
+//
+// Anything that does not fit into the scheme above is silently ignored.
+func NewExpvarCollector(exports map[string]*Desc) *ExpvarCollector {
+       return &ExpvarCollector{
+               exports: exports,
+       }
+}
+
+// Describe implements Collector.
+func (e *ExpvarCollector) Describe(ch chan<- *Desc) {
+       for _, desc := range e.exports {
+               ch <- desc
+       }
+}
+
+// Collect implements Collector.
+func (e *ExpvarCollector) Collect(ch chan<- Metric) {
+       for name, desc := range e.exports {
+               var m Metric
+               expVar := expvar.Get(name)
+               if expVar == nil {
+                       continue
+               }
+               var v interface{}
+               labels := make([]string, len(desc.variableLabels))
+               if err := json.Unmarshal([]byte(expVar.String()), &v); err != nil {
+                       ch <- NewInvalidMetric(desc, err)
+                       continue
+               }
+               var processValue func(v interface{}, i int)
+               processValue = func(v interface{}, i int) {
+                       if i >= len(labels) {
+                               copiedLabels := append(make([]string, 0, len(labels)), labels...)
+                               switch v := v.(type) {
+                               case float64:
+                                       m = MustNewConstMetric(desc, UntypedValue, v, copiedLabels...)
+                               case bool:
+                                       if v {
+                                               m = MustNewConstMetric(desc, UntypedValue, 1, copiedLabels...)
+                                       } else {
+                                               m = MustNewConstMetric(desc, UntypedValue, 0, copiedLabels...)
+                                       }
+                               default:
+                                       return
+                               }
+                               ch <- m
+                               return
+                       }
+                       vm, ok := v.(map[string]interface{})
+                       if !ok {
+                               return
+                       }
+                       for lv, val := range vm {
+                               labels[i] = lv
+                               processValue(val, i+1)
+                       }
+               }
+               processValue(v, 0)
+       }
+}
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/fnv.go b/vendor/github.com/prometheus/client_golang/prometheus/fnv.go
new file mode 100644 (file)
index 0000000..e3b67df
--- /dev/null
@@ -0,0 +1,29 @@
+package prometheus
+
+// Inline and byte-free variant of hash/fnv's fnv64a.
+
+const (
+       offset64 = 14695981039346656037
+       prime64  = 1099511628211
+)
+
+// hashNew initializies a new fnv64a hash value.
+func hashNew() uint64 {
+       return offset64
+}
+
+// hashAdd adds a string to a fnv64a hash value, returning the updated hash.
+func hashAdd(h uint64, s string) uint64 {
+       for i := 0; i < len(s); i++ {
+               h ^= uint64(s[i])
+               h *= prime64
+       }
+       return h
+}
+
+// hashAddByte adds a byte to a fnv64a hash value, returning the updated hash.
+func hashAddByte(h uint64, b byte) uint64 {
+       h ^= uint64(b)
+       h *= prime64
+       return h
+}
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/gauge.go b/vendor/github.com/prometheus/client_golang/prometheus/gauge.go
new file mode 100644 (file)
index 0000000..390c074
--- /dev/null
@@ -0,0 +1,144 @@
+// Copyright 2014 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package prometheus
+
+// Gauge is a Metric that represents a single numerical value that can
+// arbitrarily go up and down.
+//
+// A Gauge is typically used for measured values like temperatures or current
+// memory usage, but also "counts" that can go up and down, like the number of
+// running goroutines.
+//
+// To create Gauge instances, use NewGauge.
+type Gauge interface {
+       Metric
+       Collector
+
+       // Set sets the Gauge to an arbitrary value.
+       Set(float64)
+       // Inc increments the Gauge by 1.
+       Inc()
+       // Dec decrements the Gauge by 1.
+       Dec()
+       // Add adds the given value to the Gauge. (The value can be
+       // negative, resulting in a decrease of the Gauge.)
+       Add(float64)
+       // Sub subtracts the given value from the Gauge. (The value can be
+       // negative, resulting in an increase of the Gauge.)
+       Sub(float64)
+}
+
+// GaugeOpts is an alias for Opts. See there for doc comments.
+type GaugeOpts Opts
+
+// NewGauge creates a new Gauge based on the provided GaugeOpts.
+func NewGauge(opts GaugeOpts) Gauge {
+       return newValue(NewDesc(
+               BuildFQName(opts.Namespace, opts.Subsystem, opts.Name),
+               opts.Help,
+               nil,
+               opts.ConstLabels,
+       ), GaugeValue, 0)
+}
+
+// GaugeVec is a Collector that bundles a set of Gauges that all share the same
+// Desc, but have different values for their variable labels. This is used if
+// you want to count the same thing partitioned by various dimensions
+// (e.g. number of operations queued, partitioned by user and operation
+// type). Create instances with NewGaugeVec.
+type GaugeVec struct {
+       MetricVec
+}
+
+// NewGaugeVec creates a new GaugeVec based on the provided GaugeOpts and
+// partitioned by the given label names. At least one label name must be
+// provided.
+func NewGaugeVec(opts GaugeOpts, labelNames []string) *GaugeVec {
+       desc := NewDesc(
+               BuildFQName(opts.Namespace, opts.Subsystem, opts.Name),
+               opts.Help,
+               labelNames,
+               opts.ConstLabels,
+       )
+       return &GaugeVec{
+               MetricVec: MetricVec{
+                       children: map[uint64]Metric{},
+                       desc:     desc,
+                       newMetric: func(lvs ...string) Metric {
+                               return newValue(desc, GaugeValue, 0, lvs...)
+                       },
+               },
+       }
+}
+
+// GetMetricWithLabelValues replaces the method of the same name in
+// MetricVec. The difference is that this method returns a Gauge and not a
+// Metric so that no type conversion is required.
+func (m *GaugeVec) GetMetricWithLabelValues(lvs ...string) (Gauge, error) {
+       metric, err := m.MetricVec.GetMetricWithLabelValues(lvs...)
+       if metric != nil {
+               return metric.(Gauge), err
+       }
+       return nil, err
+}
+
+// GetMetricWith replaces the method of the same name in MetricVec. The
+// difference is that this method returns a Gauge and not a Metric so that no
+// type conversion is required.
+func (m *GaugeVec) GetMetricWith(labels Labels) (Gauge, error) {
+       metric, err := m.MetricVec.GetMetricWith(labels)
+       if metric != nil {
+               return metric.(Gauge), err
+       }
+       return nil, err
+}
+
+// WithLabelValues works as GetMetricWithLabelValues, but panics where
+// GetMetricWithLabelValues would have returned an error. By not returning an
+// error, WithLabelValues allows shortcuts like
+//     myVec.WithLabelValues("404", "GET").Add(42)
+func (m *GaugeVec) WithLabelValues(lvs ...string) Gauge {
+       return m.MetricVec.WithLabelValues(lvs...).(Gauge)
+}
+
+// With works as GetMetricWith, but panics where GetMetricWithLabels would have
+// returned an error. By not returning an error, With allows shortcuts like
+//     myVec.With(Labels{"code": "404", "method": "GET"}).Add(42)
+func (m *GaugeVec) With(labels Labels) Gauge {
+       return m.MetricVec.With(labels).(Gauge)
+}
+
+// GaugeFunc is a Gauge whose value is determined at collect time by calling a
+// provided function.
+//
+// To create GaugeFunc instances, use NewGaugeFunc.
+type GaugeFunc interface {
+       Metric
+       Collector
+}
+
+// NewGaugeFunc creates a new GaugeFunc based on the provided GaugeOpts. The
+// value reported is determined by calling the given function from within the
+// Write method. Take into account that metric collection may happen
+// concurrently. If that results in concurrent calls to Write, like in the case
+// where a GaugeFunc is directly registered with Prometheus, the provided
+// function must be concurrency-safe.
+func NewGaugeFunc(opts GaugeOpts, function func() float64) GaugeFunc {
+       return newValueFunc(NewDesc(
+               BuildFQName(opts.Namespace, opts.Subsystem, opts.Name),
+               opts.Help,
+               nil,
+               opts.ConstLabels,
+       ), GaugeValue, function)
+}
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/go_collector.go b/vendor/github.com/prometheus/client_golang/prometheus/go_collector.go
new file mode 100644 (file)
index 0000000..b0d4fb9
--- /dev/null
@@ -0,0 +1,263 @@
+package prometheus
+
+import (
+       "fmt"
+       "runtime"
+       "runtime/debug"
+       "time"
+)
+
+type goCollector struct {
+       goroutines Gauge
+       gcDesc     *Desc
+
+       // metrics to describe and collect
+       metrics memStatsMetrics
+}
+
+// NewGoCollector returns a collector which exports metrics about the current
+// go process.
+func NewGoCollector() *goCollector {
+       return &goCollector{
+               goroutines: NewGauge(GaugeOpts{
+                       Namespace: "go",
+                       Name:      "goroutines",
+                       Help:      "Number of goroutines that currently exist.",
+               }),
+               gcDesc: NewDesc(
+                       "go_gc_duration_seconds",
+                       "A summary of the GC invocation durations.",
+                       nil, nil),
+               metrics: memStatsMetrics{
+                       {
+                               desc: NewDesc(
+                                       memstatNamespace("alloc_bytes"),
+                                       "Number of bytes allocated and still in use.",
+                                       nil, nil,
+                               ),
+                               eval:    func(ms *runtime.MemStats) float64 { return float64(ms.Alloc) },
+                               valType: GaugeValue,
+                       }, {
+                               desc: NewDesc(
+                                       memstatNamespace("alloc_bytes_total"),
+                                       "Total number of bytes allocated, even if freed.",
+                                       nil, nil,
+                               ),
+                               eval:    func(ms *runtime.MemStats) float64 { return float64(ms.TotalAlloc) },
+                               valType: CounterValue,
+                       }, {
+                               desc: NewDesc(
+                                       memstatNamespace("sys_bytes"),
+                                       "Number of bytes obtained by system. Sum of all system allocations.",
+                                       nil, nil,
+                               ),
+                               eval:    func(ms *runtime.MemStats) float64 { return float64(ms.Sys) },
+                               valType: GaugeValue,
+                       }, {
+                               desc: NewDesc(
+                                       memstatNamespace("lookups_total"),
+                                       "Total number of pointer lookups.",
+                                       nil, nil,
+                               ),
+                               eval:    func(ms *runtime.MemStats) float64 { return float64(ms.Lookups) },
+                               valType: CounterValue,
+                       }, {
+                               desc: NewDesc(
+                                       memstatNamespace("mallocs_total"),
+                                       "Total number of mallocs.",
+                                       nil, nil,
+                               ),
+                               eval:    func(ms *runtime.MemStats) float64 { return float64(ms.Mallocs) },
+                               valType: CounterValue,
+                       }, {
+                               desc: NewDesc(
+                                       memstatNamespace("frees_total"),
+                                       "Total number of frees.",
+                                       nil, nil,
+                               ),
+                               eval:    func(ms *runtime.MemStats) float64 { return float64(ms.Frees) },
+                               valType: CounterValue,
+                       }, {
+                               desc: NewDesc(
+                                       memstatNamespace("heap_alloc_bytes"),
+                                       "Number of heap bytes allocated and still in use.",
+                                       nil, nil,
+                               ),
+                               eval:    func(ms *runtime.MemStats) float64 { return float64(ms.HeapAlloc) },
+                               valType: GaugeValue,
+                       }, {
+                               desc: NewDesc(
+                                       memstatNamespace("heap_sys_bytes"),
+                                       "Number of heap bytes obtained from system.",
+                                       nil, nil,
+                               ),
+                               eval:    func(ms *runtime.MemStats) float64 { return float64(ms.HeapSys) },
+                               valType: GaugeValue,
+                       }, {
+                               desc: NewDesc(
+                                       memstatNamespace("heap_idle_bytes"),
+                                       "Number of heap bytes waiting to be used.",
+                                       nil, nil,
+                               ),
+                               eval:    func(ms *runtime.MemStats) float64 { return float64(ms.HeapIdle) },
+                               valType: GaugeValue,
+                       }, {
+                               desc: NewDesc(
+                                       memstatNamespace("heap_inuse_bytes"),
+                                       "Number of heap bytes that are in use.",
+                                       nil, nil,
+                               ),
+                               eval:    func(ms *runtime.MemStats) float64 { return float64(ms.HeapInuse) },
+                               valType: GaugeValue,
+                       }, {
+                               desc: NewDesc(
+                                       memstatNamespace("heap_released_bytes_total"),
+                                       "Total number of heap bytes released to OS.",
+                                       nil, nil,
+                               ),
+                               eval:    func(ms *runtime.MemStats) float64 { return float64(ms.HeapReleased) },
+                               valType: CounterValue,
+                       }, {
+                               desc: NewDesc(
+                                       memstatNamespace("heap_objects"),
+                                       "Number of allocated objects.",
+                                       nil, nil,
+                               ),
+                               eval:    func(ms *runtime.MemStats) float64 { return float64(ms.HeapObjects) },
+                               valType: GaugeValue,
+                       }, {
+                               desc: NewDesc(
+                                       memstatNamespace("stack_inuse_bytes"),
+                                       "Number of bytes in use by the stack allocator.",
+                                       nil, nil,
+                               ),
+                               eval:    func(ms *runtime.MemStats) float64 { return float64(ms.StackInuse) },
+                               valType: GaugeValue,
+                       }, {
+                               desc: NewDesc(
+                                       memstatNamespace("stack_sys_bytes"),
+                                       "Number of bytes obtained from system for stack allocator.",
+                                       nil, nil,
+                               ),
+                               eval:    func(ms *runtime.MemStats) float64 { return float64(ms.StackSys) },
+                               valType: GaugeValue,
+                       }, {
+                               desc: NewDesc(
+                                       memstatNamespace("mspan_inuse_bytes"),
+                                       "Number of bytes in use by mspan structures.",
+                                       nil, nil,
+                               ),
+                               eval:    func(ms *runtime.MemStats) float64 { return float64(ms.MSpanInuse) },
+                               valType: GaugeValue,
+                       }, {
+                               desc: NewDesc(
+                                       memstatNamespace("mspan_sys_bytes"),
+                                       "Number of bytes used for mspan structures obtained from system.",
+                                       nil, nil,
+                               ),
+                               eval:    func(ms *runtime.MemStats) float64 { return float64(ms.MSpanSys) },
+                               valType: GaugeValue,
+                       }, {
+                               desc: NewDesc(
+                                       memstatNamespace("mcache_inuse_bytes"),
+                                       "Number of bytes in use by mcache structures.",
+                                       nil, nil,
+                               ),
+                               eval:    func(ms *runtime.MemStats) float64 { return float64(ms.MCacheInuse) },
+                               valType: GaugeValue,
+                       }, {
+                               desc: NewDesc(
+                                       memstatNamespace("mcache_sys_bytes"),
+                                       "Number of bytes used for mcache structures obtained from system.",
+                                       nil, nil,
+                               ),
+                               eval:    func(ms *runtime.MemStats) float64 { return float64(ms.MCacheSys) },
+                               valType: GaugeValue,
+                       }, {
+                               desc: NewDesc(
+                                       memstatNamespace("buck_hash_sys_bytes"),
+                                       "Number of bytes used by the profiling bucket hash table.",
+                                       nil, nil,
+                               ),
+                               eval:    func(ms *runtime.MemStats) float64 { return float64(ms.BuckHashSys) },
+                               valType: GaugeValue,
+                       }, {
+                               desc: NewDesc(
+                                       memstatNamespace("gc_sys_bytes"),
+                                       "Number of bytes used for garbage collection system metadata.",
+                                       nil, nil,
+                               ),
+                               eval:    func(ms *runtime.MemStats) float64 { return float64(ms.GCSys) },
+                               valType: GaugeValue,
+                       }, {
+                               desc: NewDesc(
+                                       memstatNamespace("other_sys_bytes"),
+                                       "Number of bytes used for other system allocations.",
+                                       nil, nil,
+                               ),
+                               eval:    func(ms *runtime.MemStats) float64 { return float64(ms.OtherSys) },
+                               valType: GaugeValue,
+                       }, {
+                               desc: NewDesc(
+                                       memstatNamespace("next_gc_bytes"),
+                                       "Number of heap bytes when next garbage collection will take place.",
+                                       nil, nil,
+                               ),
+                               eval:    func(ms *runtime.MemStats) float64 { return float64(ms.NextGC) },
+                               valType: GaugeValue,
+                       }, {
+                               desc: NewDesc(
+                                       memstatNamespace("last_gc_time_seconds"),
+                                       "Number of seconds since 1970 of last garbage collection.",
+                                       nil, nil,
+                               ),
+                               eval:    func(ms *runtime.MemStats) float64 { return float64(ms.LastGC) / 1e9 },
+                               valType: GaugeValue,
+                       },
+               },
+       }
+}
+
+func memstatNamespace(s string) string {
+       return fmt.Sprintf("go_memstats_%s", s)
+}
+
+// Describe returns all descriptions of the collector.
+func (c *goCollector) Describe(ch chan<- *Desc) {
+       ch <- c.goroutines.Desc()
+       ch <- c.gcDesc
+
+       for _, i := range c.metrics {
+               ch <- i.desc
+       }
+}
+
+// Collect returns the current state of all metrics of the collector.
+func (c *goCollector) Collect(ch chan<- Metric) {
+       c.goroutines.Set(float64(runtime.NumGoroutine()))
+       ch <- c.goroutines
+
+       var stats debug.GCStats
+       stats.PauseQuantiles = make([]time.Duration, 5)
+       debug.ReadGCStats(&stats)
+
+       quantiles := make(map[float64]float64)
+       for idx, pq := range stats.PauseQuantiles[1:] {
+               quantiles[float64(idx+1)/float64(len(stats.PauseQuantiles)-1)] = pq.Seconds()
+       }
+       quantiles[0.0] = stats.PauseQuantiles[0].Seconds()
+       ch <- MustNewConstSummary(c.gcDesc, uint64(stats.NumGC), float64(stats.PauseTotal.Seconds()), quantiles)
+
+       ms := &runtime.MemStats{}
+       runtime.ReadMemStats(ms)
+       for _, i := range c.metrics {
+               ch <- MustNewConstMetric(i.desc, i.valType, i.eval(ms))
+       }
+}
+
+// memStatsMetrics provide description, value, and value type for memstat metrics.
+type memStatsMetrics []struct {
+       desc    *Desc
+       eval    func(*runtime.MemStats) float64
+       valType ValueType
+}
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/histogram.go b/vendor/github.com/prometheus/client_golang/prometheus/histogram.go
new file mode 100644 (file)
index 0000000..7a68910
--- /dev/null
@@ -0,0 +1,448 @@
+// Copyright 2015 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package prometheus
+
+import (
+       "fmt"
+       "math"
+       "sort"
+       "sync/atomic"
+
+       "github.com/golang/protobuf/proto"
+
+       dto "github.com/prometheus/client_model/go"
+)
+
+// A Histogram counts individual observations from an event or sample stream in
+// configurable buckets. Similar to a summary, it also provides a sum of
+// observations and an observation count.
+//
+// On the Prometheus server, quantiles can be calculated from a Histogram using
+// the histogram_quantile function in the query language.
+//
+// Note that Histograms, in contrast to Summaries, can be aggregated with the
+// Prometheus query language (see the documentation for detailed
+// procedures). However, Histograms require the user to pre-define suitable
+// buckets, and they are in general less accurate. The Observe method of a
+// Histogram has a very low performance overhead in comparison with the Observe
+// method of a Summary.
+//
+// To create Histogram instances, use NewHistogram.
+type Histogram interface {
+       Metric
+       Collector
+
+       // Observe adds a single observation to the histogram.
+       Observe(float64)
+}
+
+// bucketLabel is used for the label that defines the upper bound of a
+// bucket of a histogram ("le" -> "less or equal").
+const bucketLabel = "le"
+
+var (
+       // DefBuckets are the default Histogram buckets. The default buckets are
+       // tailored to broadly measure the response time (in seconds) of a
+       // network service. Most likely, however, you will be required to define
+       // buckets customized to your use case.
+       DefBuckets = []float64{.005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5, 10}
+
+       errBucketLabelNotAllowed = fmt.Errorf(
+               "%q is not allowed as label name in histograms", bucketLabel,
+       )
+)
+
+// LinearBuckets creates 'count' buckets, each 'width' wide, where the lowest
+// bucket has an upper bound of 'start'. The final +Inf bucket is not counted
+// and not included in the returned slice. The returned slice is meant to be
+// used for the Buckets field of HistogramOpts.
+//
+// The function panics if 'count' is zero or negative.
+func LinearBuckets(start, width float64, count int) []float64 {
+       if count < 1 {
+               panic("LinearBuckets needs a positive count")
+       }
+       buckets := make([]float64, count)
+       for i := range buckets {
+               buckets[i] = start
+               start += width
+       }
+       return buckets
+}
+
+// ExponentialBuckets creates 'count' buckets, where the lowest bucket has an
+// upper bound of 'start' and each following bucket's upper bound is 'factor'
+// times the previous bucket's upper bound. The final +Inf bucket is not counted
+// and not included in the returned slice. The returned slice is meant to be
+// used for the Buckets field of HistogramOpts.
+//
+// The function panics if 'count' is 0 or negative, if 'start' is 0 or negative,
+// or if 'factor' is less than or equal 1.
+func ExponentialBuckets(start, factor float64, count int) []float64 {
+       if count < 1 {
+               panic("ExponentialBuckets needs a positive count")
+       }
+       if start <= 0 {
+               panic("ExponentialBuckets needs a positive start value")
+       }
+       if factor <= 1 {
+               panic("ExponentialBuckets needs a factor greater than 1")
+       }
+       buckets := make([]float64, count)
+       for i := range buckets {
+               buckets[i] = start
+               start *= factor
+       }
+       return buckets
+}
+
+// HistogramOpts bundles the options for creating a Histogram metric. It is
+// mandatory to set Name and Help to a non-empty string. All other fields are
+// optional and can safely be left at their zero value.
+type HistogramOpts struct {
+       // Namespace, Subsystem, and Name are components of the fully-qualified
+       // name of the Histogram (created by joining these components with
+       // "_"). Only Name is mandatory, the others merely help structuring the
+       // name. Note that the fully-qualified name of the Histogram must be a
+       // valid Prometheus metric name.
+       Namespace string
+       Subsystem string
+       Name      string
+
+       // Help provides information about this Histogram. Mandatory!
+       //
+       // Metrics with the same fully-qualified name must have the same Help
+       // string.
+       Help string
+
+       // ConstLabels are used to attach fixed labels to this
+       // Histogram. Histograms with the same fully-qualified name must have the
+       // same label names in their ConstLabels.
+       //
+       // Note that in most cases, labels have a value that varies during the
+       // lifetime of a process. Those labels are usually managed with a
+       // HistogramVec. ConstLabels serve only special purposes. One is for the
+       // special case where the value of a label does not change during the
+       // lifetime of a process, e.g. if the revision of the running binary is
+       // put into a label. Another, more advanced purpose is if more than one
+       // Collector needs to collect Histograms with the same fully-qualified
+       // name. In that case, those Summaries must differ in the values of
+       // their ConstLabels. See the Collector examples.
+       //
+       // If the value of a label never changes (not even between binaries),
+       // that label most likely should not be a label at all (but part of the
+       // metric name).
+       ConstLabels Labels
+
+       // Buckets defines the buckets into which observations are counted. Each
+       // element in the slice is the upper inclusive bound of a bucket. The
+       // values must be sorted in strictly increasing order. There is no need
+       // to add a highest bucket with +Inf bound, it will be added
+       // implicitly. The default value is DefBuckets.
+       Buckets []float64
+}
+
+// NewHistogram creates a new Histogram based on the provided HistogramOpts. It
+// panics if the buckets in HistogramOpts are not in strictly increasing order.
+func NewHistogram(opts HistogramOpts) Histogram {
+       return newHistogram(
+               NewDesc(
+                       BuildFQName(opts.Namespace, opts.Subsystem, opts.Name),
+                       opts.Help,
+                       nil,
+                       opts.ConstLabels,
+               ),
+               opts,
+       )
+}
+
+func newHistogram(desc *Desc, opts HistogramOpts, labelValues ...string) Histogram {
+       if len(desc.variableLabels) != len(labelValues) {
+               panic(errInconsistentCardinality)
+       }
+
+       for _, n := range desc.variableLabels {
+               if n == bucketLabel {
+                       panic(errBucketLabelNotAllowed)
+               }
+       }
+       for _, lp := range desc.constLabelPairs {
+               if lp.GetName() == bucketLabel {
+                       panic(errBucketLabelNotAllowed)
+               }
+       }
+
+       if len(opts.Buckets) == 0 {
+               opts.Buckets = DefBuckets
+       }
+
+       h := &histogram{
+               desc:        desc,
+               upperBounds: opts.Buckets,
+               labelPairs:  makeLabelPairs(desc, labelValues),
+       }
+       for i, upperBound := range h.upperBounds {
+               if i < len(h.upperBounds)-1 {
+                       if upperBound >= h.upperBounds[i+1] {
+                               panic(fmt.Errorf(
+                                       "histogram buckets must be in increasing order: %f >= %f",
+                                       upperBound, h.upperBounds[i+1],
+                               ))
+                       }
+               } else {
+                       if math.IsInf(upperBound, +1) {
+                               // The +Inf bucket is implicit. Remove it here.
+                               h.upperBounds = h.upperBounds[:i]
+                       }
+               }
+       }
+       // Finally we know the final length of h.upperBounds and can make counts.
+       h.counts = make([]uint64, len(h.upperBounds))
+
+       h.Init(h) // Init self-collection.
+       return h
+}
+
+type histogram struct {
+       // sumBits contains the bits of the float64 representing the sum of all
+       // observations. sumBits and count have to go first in the struct to
+       // guarantee alignment for atomic operations.
+       // http://golang.org/pkg/sync/atomic/#pkg-note-BUG
+       sumBits uint64
+       count   uint64
+
+       SelfCollector
+       // Note that there is no mutex required.
+
+       desc *Desc
+
+       upperBounds []float64
+       counts      []uint64
+
+       labelPairs []*dto.LabelPair
+}
+
+func (h *histogram) Desc() *Desc {
+       return h.desc
+}
+
+func (h *histogram) Observe(v float64) {
+       // TODO(beorn7): For small numbers of buckets (<30), a linear search is
+       // slightly faster than the binary search. If we really care, we could
+       // switch from one search strategy to the other depending on the number
+       // of buckets.
+       //
+       // Microbenchmarks (BenchmarkHistogramNoLabels):
+       // 11 buckets: 38.3 ns/op linear - binary 48.7 ns/op
+       // 100 buckets: 78.1 ns/op linear - binary 54.9 ns/op
+       // 300 buckets: 154 ns/op linear - binary 61.6 ns/op
+       i := sort.SearchFloat64s(h.upperBounds, v)
+       if i < len(h.counts) {
+               atomic.AddUint64(&h.counts[i], 1)
+       }
+       atomic.AddUint64(&h.count, 1)
+       for {
+               oldBits := atomic.LoadUint64(&h.sumBits)
+               newBits := math.Float64bits(math.Float64frombits(oldBits) + v)
+               if atomic.CompareAndSwapUint64(&h.sumBits, oldBits, newBits) {
+                       break
+               }
+       }
+}
+
+func (h *histogram) Write(out *dto.Metric) error {
+       his := &dto.Histogram{}
+       buckets := make([]*dto.Bucket, len(h.upperBounds))
+
+       his.SampleSum = proto.Float64(math.Float64frombits(atomic.LoadUint64(&h.sumBits)))
+       his.SampleCount = proto.Uint64(atomic.LoadUint64(&h.count))
+       var count uint64
+       for i, upperBound := range h.upperBounds {
+               count += atomic.LoadUint64(&h.counts[i])
+               buckets[i] = &dto.Bucket{
+                       CumulativeCount: proto.Uint64(count),
+                       UpperBound:      proto.Float64(upperBound),
+               }
+       }
+       his.Bucket = buckets
+       out.Histogram = his
+       out.Label = h.labelPairs
+       return nil
+}
+
+// HistogramVec is a Collector that bundles a set of Histograms that all share the
+// same Desc, but have different values for their variable labels. This is used
+// if you want to count the same thing partitioned by various dimensions
+// (e.g. HTTP request latencies, partitioned by status code and method). Create
+// instances with NewHistogramVec.
+type HistogramVec struct {
+       MetricVec
+}
+
+// NewHistogramVec creates a new HistogramVec based on the provided HistogramOpts and
+// partitioned by the given label names. At least one label name must be
+// provided.
+func NewHistogramVec(opts HistogramOpts, labelNames []string) *HistogramVec {
+       desc := NewDesc(
+               BuildFQName(opts.Namespace, opts.Subsystem, opts.Name),
+               opts.Help,
+               labelNames,
+               opts.ConstLabels,
+       )
+       return &HistogramVec{
+               MetricVec: MetricVec{
+                       children: map[uint64]Metric{},
+                       desc:     desc,
+                       newMetric: func(lvs ...string) Metric {
+                               return newHistogram(desc, opts, lvs...)
+                       },
+               },
+       }
+}
+
+// GetMetricWithLabelValues replaces the method of the same name in
+// MetricVec. The difference is that this method returns a Histogram and not a
+// Metric so that no type conversion is required.
+func (m *HistogramVec) GetMetricWithLabelValues(lvs ...string) (Histogram, error) {
+       metric, err := m.MetricVec.GetMetricWithLabelValues(lvs...)
+       if metric != nil {
+               return metric.(Histogram), err
+       }
+       return nil, err
+}
+
+// GetMetricWith replaces the method of the same name in MetricVec. The
+// difference is that this method returns a Histogram and not a Metric so that no
+// type conversion is required.
+func (m *HistogramVec) GetMetricWith(labels Labels) (Histogram, error) {
+       metric, err := m.MetricVec.GetMetricWith(labels)
+       if metric != nil {
+               return metric.(Histogram), err
+       }
+       return nil, err
+}
+
+// WithLabelValues works as GetMetricWithLabelValues, but panics where
+// GetMetricWithLabelValues would have returned an error. By not returning an
+// error, WithLabelValues allows shortcuts like
+//     myVec.WithLabelValues("404", "GET").Observe(42.21)
+func (m *HistogramVec) WithLabelValues(lvs ...string) Histogram {
+       return m.MetricVec.WithLabelValues(lvs...).(Histogram)
+}
+
+// With works as GetMetricWith, but panics where GetMetricWithLabels would have
+// returned an error. By not returning an error, With allows shortcuts like
+//     myVec.With(Labels{"code": "404", "method": "GET"}).Observe(42.21)
+func (m *HistogramVec) With(labels Labels) Histogram {
+       return m.MetricVec.With(labels).(Histogram)
+}
+
+type constHistogram struct {
+       desc       *Desc
+       count      uint64
+       sum        float64
+       buckets    map[float64]uint64
+       labelPairs []*dto.LabelPair
+}
+
+func (h *constHistogram) Desc() *Desc {
+       return h.desc
+}
+
+func (h *constHistogram) Write(out *dto.Metric) error {
+       his := &dto.Histogram{}
+       buckets := make([]*dto.Bucket, 0, len(h.buckets))
+
+       his.SampleCount = proto.Uint64(h.count)
+       his.SampleSum = proto.Float64(h.sum)
+
+       for upperBound, count := range h.buckets {
+               buckets = append(buckets, &dto.Bucket{
+                       CumulativeCount: proto.Uint64(count),
+                       UpperBound:      proto.Float64(upperBound),
+               })
+       }
+
+       if len(buckets) > 0 {
+               sort.Sort(buckSort(buckets))
+       }
+       his.Bucket = buckets
+
+       out.Histogram = his
+       out.Label = h.labelPairs
+
+       return nil
+}
+
+// NewConstHistogram returns a metric representing a Prometheus histogram with
+// fixed values for the count, sum, and bucket counts. As those parameters
+// cannot be changed, the returned value does not implement the Histogram
+// interface (but only the Metric interface). Users of this package will not
+// have much use for it in regular operations. However, when implementing custom
+// Collectors, it is useful as a throw-away metric that is generated on the fly
+// to send it to Prometheus in the Collect method.
+//
+// buckets is a map of upper bounds to cumulative counts, excluding the +Inf
+// bucket.
+//
+// NewConstHistogram returns an error if the length of labelValues is not
+// consistent with the variable labels in Desc.
+func NewConstHistogram(
+       desc *Desc,
+       count uint64,
+       sum float64,
+       buckets map[float64]uint64,
+       labelValues ...string,
+) (Metric, error) {
+       if len(desc.variableLabels) != len(labelValues) {
+               return nil, errInconsistentCardinality
+       }
+       return &constHistogram{
+               desc:       desc,
+               count:      count,
+               sum:        sum,
+               buckets:    buckets,
+               labelPairs: makeLabelPairs(desc, labelValues),
+       }, nil
+}
+
+// MustNewConstHistogram is a version of NewConstHistogram that panics where
+// NewConstMetric would have returned an error.
+func MustNewConstHistogram(
+       desc *Desc,
+       count uint64,
+       sum float64,
+       buckets map[float64]uint64,
+       labelValues ...string,
+) Metric {
+       m, err := NewConstHistogram(desc, count, sum, buckets, labelValues...)
+       if err != nil {
+               panic(err)
+       }
+       return m
+}
+
+type buckSort []*dto.Bucket
+
+func (s buckSort) Len() int {
+       return len(s)
+}
+
+func (s buckSort) Swap(i, j int) {
+       s[i], s[j] = s[j], s[i]
+}
+
+func (s buckSort) Less(i, j int) bool {
+       return s[i].GetUpperBound() < s[j].GetUpperBound()
+}
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/http.go b/vendor/github.com/prometheus/client_golang/prometheus/http.go
new file mode 100644 (file)
index 0000000..eabe602
--- /dev/null
@@ -0,0 +1,361 @@
+// Copyright 2014 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package prometheus
+
+import (
+       "bufio"
+       "io"
+       "net"
+       "net/http"
+       "strconv"
+       "strings"
+       "time"
+)
+
+var instLabels = []string{"method", "code"}
+
+type nower interface {
+       Now() time.Time
+}
+
+type nowFunc func() time.Time
+
+func (n nowFunc) Now() time.Time {
+       return n()
+}
+
+var now nower = nowFunc(func() time.Time {
+       return time.Now()
+})
+
+func nowSeries(t ...time.Time) nower {
+       return nowFunc(func() time.Time {
+               defer func() {
+                       t = t[1:]
+               }()
+
+               return t[0]
+       })
+}
+
+// InstrumentHandler wraps the given HTTP handler for instrumentation. It
+// registers four metric collectors (if not already done) and reports HTTP
+// metrics to the (newly or already) registered collectors: http_requests_total
+// (CounterVec), http_request_duration_microseconds (Summary),
+// http_request_size_bytes (Summary), http_response_size_bytes (Summary). Each
+// has a constant label named "handler" with the provided handlerName as
+// value. http_requests_total is a metric vector partitioned by HTTP method
+// (label name "method") and HTTP status code (label name "code").
+func InstrumentHandler(handlerName string, handler http.Handler) http.HandlerFunc {
+       return InstrumentHandlerFunc(handlerName, handler.ServeHTTP)
+}
+
+// InstrumentHandlerFunc wraps the given function for instrumentation. It
+// otherwise works in the same way as InstrumentHandler.
+func InstrumentHandlerFunc(handlerName string, handlerFunc func(http.ResponseWriter, *http.Request)) http.HandlerFunc {
+       return InstrumentHandlerFuncWithOpts(
+               SummaryOpts{
+                       Subsystem:   "http",
+                       ConstLabels: Labels{"handler": handlerName},
+               },
+               handlerFunc,
+       )
+}
+
+// InstrumentHandlerWithOpts works like InstrumentHandler but provides more
+// flexibility (at the cost of a more complex call syntax). As
+// InstrumentHandler, this function registers four metric collectors, but it
+// uses the provided SummaryOpts to create them. However, the fields "Name" and
+// "Help" in the SummaryOpts are ignored. "Name" is replaced by
+// "requests_total", "request_duration_microseconds", "request_size_bytes", and
+// "response_size_bytes", respectively. "Help" is replaced by an appropriate
+// help string. The names of the variable labels of the http_requests_total
+// CounterVec are "method" (get, post, etc.), and "code" (HTTP status code).
+//
+// If InstrumentHandlerWithOpts is called as follows, it mimics exactly the
+// behavior of InstrumentHandler:
+//
+//     prometheus.InstrumentHandlerWithOpts(
+//         prometheus.SummaryOpts{
+//              Subsystem:   "http",
+//              ConstLabels: prometheus.Labels{"handler": handlerName},
+//         },
+//         handler,
+//     )
+//
+// Technical detail: "requests_total" is a CounterVec, not a SummaryVec, so it
+// cannot use SummaryOpts. Instead, a CounterOpts struct is created internally,
+// and all its fields are set to the equally named fields in the provided
+// SummaryOpts.
+func InstrumentHandlerWithOpts(opts SummaryOpts, handler http.Handler) http.HandlerFunc {
+       return InstrumentHandlerFuncWithOpts(opts, handler.ServeHTTP)
+}
+
+// InstrumentHandlerFuncWithOpts works like InstrumentHandlerFunc but provides
+// more flexibility (at the cost of a more complex call syntax). See
+// InstrumentHandlerWithOpts for details how the provided SummaryOpts are used.
+func InstrumentHandlerFuncWithOpts(opts SummaryOpts, handlerFunc func(http.ResponseWriter, *http.Request)) http.HandlerFunc {
+       reqCnt := NewCounterVec(
+               CounterOpts{
+                       Namespace:   opts.Namespace,
+                       Subsystem:   opts.Subsystem,
+                       Name:        "requests_total",
+                       Help:        "Total number of HTTP requests made.",
+                       ConstLabels: opts.ConstLabels,
+               },
+               instLabels,
+       )
+
+       opts.Name = "request_duration_microseconds"
+       opts.Help = "The HTTP request latencies in microseconds."
+       reqDur := NewSummary(opts)
+
+       opts.Name = "request_size_bytes"
+       opts.Help = "The HTTP request sizes in bytes."
+       reqSz := NewSummary(opts)
+
+       opts.Name = "response_size_bytes"
+       opts.Help = "The HTTP response sizes in bytes."
+       resSz := NewSummary(opts)
+
+       regReqCnt := MustRegisterOrGet(reqCnt).(*CounterVec)
+       regReqDur := MustRegisterOrGet(reqDur).(Summary)
+       regReqSz := MustRegisterOrGet(reqSz).(Summary)
+       regResSz := MustRegisterOrGet(resSz).(Summary)
+
+       return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+               now := time.Now()
+
+               delegate := &responseWriterDelegator{ResponseWriter: w}
+               out := make(chan int)
+               urlLen := 0
+               if r.URL != nil {
+                       urlLen = len(r.URL.String())
+               }
+               go computeApproximateRequestSize(r, out, urlLen)
+
+               _, cn := w.(http.CloseNotifier)
+               _, fl := w.(http.Flusher)
+               _, hj := w.(http.Hijacker)
+               _, rf := w.(io.ReaderFrom)
+               var rw http.ResponseWriter
+               if cn && fl && hj && rf {
+                       rw = &fancyResponseWriterDelegator{delegate}
+               } else {
+                       rw = delegate
+               }
+               handlerFunc(rw, r)
+
+               elapsed := float64(time.Since(now)) / float64(time.Microsecond)
+
+               method := sanitizeMethod(r.Method)
+               code := sanitizeCode(delegate.status)
+               regReqCnt.WithLabelValues(method, code).Inc()
+               regReqDur.Observe(elapsed)
+               regResSz.Observe(float64(delegate.written))
+               regReqSz.Observe(float64(<-out))
+       })
+}
+
+func computeApproximateRequestSize(r *http.Request, out chan int, s int) {
+       s += len(r.Method)
+       s += len(r.Proto)
+       for name, values := range r.Header {
+               s += len(name)
+               for _, value := range values {
+                       s += len(value)
+               }
+       }
+       s += len(r.Host)
+
+       // N.B. r.Form and r.MultipartForm are assumed to be included in r.URL.
+
+       if r.ContentLength != -1 {
+               s += int(r.ContentLength)
+       }
+       out <- s
+}
+
+type responseWriterDelegator struct {
+       http.ResponseWriter
+
+       handler, method string
+       status          int
+       written         int64
+       wroteHeader     bool
+}
+
+func (r *responseWriterDelegator) WriteHeader(code int) {
+       r.status = code
+       r.wroteHeader = true
+       r.ResponseWriter.WriteHeader(code)
+}
+
+func (r *responseWriterDelegator) Write(b []byte) (int, error) {
+       if !r.wroteHeader {
+               r.WriteHeader(http.StatusOK)
+       }
+       n, err := r.ResponseWriter.Write(b)
+       r.written += int64(n)
+       return n, err
+}
+
+type fancyResponseWriterDelegator struct {
+       *responseWriterDelegator
+}
+
+func (f *fancyResponseWriterDelegator) CloseNotify() <-chan bool {
+       return f.ResponseWriter.(http.CloseNotifier).CloseNotify()
+}
+
+func (f *fancyResponseWriterDelegator) Flush() {
+       f.ResponseWriter.(http.Flusher).Flush()
+}
+
+func (f *fancyResponseWriterDelegator) Hijack() (net.Conn, *bufio.ReadWriter, error) {
+       return f.ResponseWriter.(http.Hijacker).Hijack()
+}
+
+func (f *fancyResponseWriterDelegator) ReadFrom(r io.Reader) (int64, error) {
+       if !f.wroteHeader {
+               f.WriteHeader(http.StatusOK)
+       }
+       n, err := f.ResponseWriter.(io.ReaderFrom).ReadFrom(r)
+       f.written += n
+       return n, err
+}
+
+func sanitizeMethod(m string) string {
+       switch m {
+       case "GET", "get":
+               return "get"
+       case "PUT", "put":
+               return "put"
+       case "HEAD", "head":
+               return "head"
+       case "POST", "post":
+               return "post"
+       case "DELETE", "delete":
+               return "delete"
+       case "CONNECT", "connect":
+               return "connect"
+       case "OPTIONS", "options":
+               return "options"
+       case "NOTIFY", "notify":
+               return "notify"
+       default:
+               return strings.ToLower(m)
+       }
+}
+
+func sanitizeCode(s int) string {
+       switch s {
+       case 100:
+               return "100"
+       case 101:
+               return "101"
+
+       case 200:
+               return "200"
+       case 201:
+               return "201"
+       case 202:
+               return "202"
+       case 203:
+               return "203"
+       case 204:
+               return "204"
+       case 205:
+               return "205"
+       case 206:
+               return "206"
+
+       case 300:
+               return "300"
+       case 301:
+               return "301"
+       case 302:
+               return "302"
+       case 304:
+               return "304"
+       case 305:
+               return "305"
+       case 307:
+               return "307"
+
+       case 400:
+               return "400"
+       case 401:
+               return "401"
+       case 402:
+               return "402"
+       case 403:
+               return "403"
+       case 404:
+               return "404"
+       case 405:
+               return "405"
+       case 406:
+               return "406"
+       case 407:
+               return "407"
+       case 408:
+               return "408"
+       case 409:
+               return "409"
+       case 410:
+               return "410"
+       case 411:
+               return "411"
+       case 412:
+               return "412"
+       case 413:
+               return "413"
+       case 414:
+               return "414"
+       case 415:
+               return "415"
+       case 416:
+               return "416"
+       case 417:
+               return "417"
+       case 418:
+               return "418"
+
+       case 500:
+               return "500"
+       case 501:
+               return "501"
+       case 502:
+               return "502"
+       case 503:
+               return "503"
+       case 504:
+               return "504"
+       case 505:
+               return "505"
+
+       case 428:
+               return "428"
+       case 429:
+               return "429"
+       case 431:
+               return "431"
+       case 511:
+               return "511"
+
+       default:
+               return strconv.Itoa(s)
+       }
+}
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/metric.go b/vendor/github.com/prometheus/client_golang/prometheus/metric.go
new file mode 100644 (file)
index 0000000..86fd81c
--- /dev/null
@@ -0,0 +1,166 @@
+// Copyright 2014 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package prometheus
+
+import (
+       "strings"
+
+       dto "github.com/prometheus/client_model/go"
+)
+
+const separatorByte byte = 255
+
+// A Metric models a single sample value with its meta data being exported to
+// Prometheus. Implementers of Metric in this package inclued Gauge, Counter,
+// Untyped, and Summary. Users can implement their own Metric types, but that
+// should be rarely needed. See the example for SelfCollector, which is also an
+// example for a user-implemented Metric.
+type Metric interface {
+       // Desc returns the descriptor for the Metric. This method idempotently
+       // returns the same descriptor throughout the lifetime of the
+       // Metric. The returned descriptor is immutable by contract. A Metric
+       // unable to describe itself must return an invalid descriptor (created
+       // with NewInvalidDesc).
+       Desc() *Desc
+       // Write encodes the Metric into a "Metric" Protocol Buffer data
+       // transmission object.
+       //
+       // Implementers of custom Metric types must observe concurrency safety
+       // as reads of this metric may occur at any time, and any blocking
+       // occurs at the expense of total performance of rendering all
+       // registered metrics. Ideally Metric implementations should support
+       // concurrent readers.
+       //
+       // The Prometheus client library attempts to minimize memory allocations
+       // and will provide a pre-existing reset dto.Metric pointer. Prometheus
+       // may recycle the dto.Metric proto message, so Metric implementations
+       // should just populate the provided dto.Metric and then should not keep
+       // any reference to it.
+       //
+       // While populating dto.Metric, labels must be sorted lexicographically.
+       // (Implementers may find LabelPairSorter useful for that.)
+       Write(*dto.Metric) error
+}
+
+// Opts bundles the options for creating most Metric types. Each metric
+// implementation XXX has its own XXXOpts type, but in most cases, it is just be
+// an alias of this type (which might change when the requirement arises.)
+//
+// It is mandatory to set Name and Help to a non-empty string. All other fields
+// are optional and can safely be left at their zero value.
+type Opts struct {
+       // Namespace, Subsystem, and Name are components of the fully-qualified
+       // name of the Metric (created by joining these components with
+       // "_"). Only Name is mandatory, the others merely help structuring the
+       // name. Note that the fully-qualified name of the metric must be a
+       // valid Prometheus metric name.
+       Namespace string
+       Subsystem string
+       Name      string
+
+       // Help provides information about this metric. Mandatory!
+       //
+       // Metrics with the same fully-qualified name must have the same Help
+       // string.
+       Help string
+
+       // ConstLabels are used to attach fixed labels to this metric. Metrics
+       // with the same fully-qualified name must have the same label names in
+       // their ConstLabels.
+       //
+       // Note that in most cases, labels have a value that varies during the
+       // lifetime of a process. Those labels are usually managed with a metric
+       // vector collector (like CounterVec, GaugeVec, UntypedVec). ConstLabels
+       // serve only special purposes. One is for the special case where the
+       // value of a label does not change during the lifetime of a process,
+       // e.g. if the revision of the running binary is put into a
+       // label. Another, more advanced purpose is if more than one Collector
+       // needs to collect Metrics with the same fully-qualified name. In that
+       // case, those Metrics must differ in the values of their
+       // ConstLabels. See the Collector examples.
+       //
+       // If the value of a label never changes (not even between binaries),
+       // that label most likely should not be a label at all (but part of the
+       // metric name).
+       ConstLabels Labels
+}
+
+// BuildFQName joins the given three name components by "_". Empty name
+// components are ignored. If the name parameter itself is empty, an empty
+// string is returned, no matter what. Metric implementations included in this
+// library use this function internally to generate the fully-qualified metric
+// name from the name component in their Opts. Users of the library will only
+// need this function if they implement their own Metric or instantiate a Desc
+// (with NewDesc) directly.
+func BuildFQName(namespace, subsystem, name string) string {
+       if name == "" {
+               return ""
+       }
+       switch {
+       case namespace != "" && subsystem != "":
+               return strings.Join([]string{namespace, subsystem, name}, "_")
+       case namespace != "":
+               return strings.Join([]string{namespace, name}, "_")
+       case subsystem != "":
+               return strings.Join([]string{subsystem, name}, "_")
+       }
+       return name
+}
+
+// LabelPairSorter implements sort.Interface. It is used to sort a slice of
+// dto.LabelPair pointers. This is useful for implementing the Write method of
+// custom metrics.
+type LabelPairSorter []*dto.LabelPair
+
+func (s LabelPairSorter) Len() int {
+       return len(s)
+}
+
+func (s LabelPairSorter) Swap(i, j int) {
+       s[i], s[j] = s[j], s[i]
+}
+
+func (s LabelPairSorter) Less(i, j int) bool {
+       return s[i].GetName() < s[j].GetName()
+}
+
+type hashSorter []uint64
+
+func (s hashSorter) Len() int {
+       return len(s)
+}
+
+func (s hashSorter) Swap(i, j int) {
+       s[i], s[j] = s[j], s[i]
+}
+
+func (s hashSorter) Less(i, j int) bool {
+       return s[i] < s[j]
+}
+
+type invalidMetric struct {
+       desc *Desc
+       err  error
+}
+
+// NewInvalidMetric returns a metric whose Write method always returns the
+// provided error. It is useful if a Collector finds itself unable to collect
+// a metric and wishes to report an error to the registry.
+func NewInvalidMetric(desc *Desc, err error) Metric {
+       return &invalidMetric{desc, err}
+}
+
+func (m *invalidMetric) Desc() *Desc { return m.desc }
+
+func (m *invalidMetric) Write(*dto.Metric) error { return m.err }
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/process_collector.go b/vendor/github.com/prometheus/client_golang/prometheus/process_collector.go
new file mode 100644 (file)
index 0000000..d8cf0ed
--- /dev/null
@@ -0,0 +1,142 @@
+// Copyright 2015 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package prometheus
+
+import "github.com/prometheus/procfs"
+
+type processCollector struct {
+       pid             int
+       collectFn       func(chan<- Metric)
+       pidFn           func() (int, error)
+       cpuTotal        Counter
+       openFDs, maxFDs Gauge
+       vsize, rss      Gauge
+       startTime       Gauge
+}
+
+// NewProcessCollector returns a collector which exports the current state of
+// process metrics including cpu, memory and file descriptor usage as well as
+// the process start time for the given process id under the given namespace.
+func NewProcessCollector(pid int, namespace string) *processCollector {
+       return NewProcessCollectorPIDFn(
+               func() (int, error) { return pid, nil },
+               namespace,
+       )
+}
+
+// NewProcessCollectorPIDFn returns a collector which exports the current state
+// of process metrics including cpu, memory and file descriptor usage as well
+// as the process start time under the given namespace. The given pidFn is
+// called on each collect and is used to determine the process to export
+// metrics for.
+func NewProcessCollectorPIDFn(
+       pidFn func() (int, error),
+       namespace string,
+) *processCollector {
+       c := processCollector{
+               pidFn:     pidFn,
+               collectFn: func(chan<- Metric) {},
+
+               cpuTotal: NewCounter(CounterOpts{
+                       Namespace: namespace,
+                       Name:      "process_cpu_seconds_total",
+                       Help:      "Total user and system CPU time spent in seconds.",
+               }),
+               openFDs: NewGauge(GaugeOpts{
+                       Namespace: namespace,
+                       Name:      "process_open_fds",
+                       Help:      "Number of open file descriptors.",
+               }),
+               maxFDs: NewGauge(GaugeOpts{
+                       Namespace: namespace,
+                       Name:      "process_max_fds",
+                       Help:      "Maximum number of open file descriptors.",
+               }),
+               vsize: NewGauge(GaugeOpts{
+                       Namespace: namespace,
+                       Name:      "process_virtual_memory_bytes",
+                       Help:      "Virtual memory size in bytes.",
+               }),
+               rss: NewGauge(GaugeOpts{
+                       Namespace: namespace,
+                       Name:      "process_resident_memory_bytes",
+                       Help:      "Resident memory size in bytes.",
+               }),
+               startTime: NewGauge(GaugeOpts{
+                       Namespace: namespace,
+                       Name:      "process_start_time_seconds",
+                       Help:      "Start time of the process since unix epoch in seconds.",
+               }),
+       }
+
+       // Set up process metric collection if supported by the runtime.
+       if _, err := procfs.NewStat(); err == nil {
+               c.collectFn = c.processCollect
+       }
+
+       return &c
+}
+
+// Describe returns all descriptions of the collector.
+func (c *processCollector) Describe(ch chan<- *Desc) {
+       ch <- c.cpuTotal.Desc()
+       ch <- c.openFDs.Desc()
+       ch <- c.maxFDs.Desc()
+       ch <- c.vsize.Desc()
+       ch <- c.rss.Desc()
+       ch <- c.startTime.Desc()
+}
+
+// Collect returns the current state of all metrics of the collector.
+func (c *processCollector) Collect(ch chan<- Metric) {
+       c.collectFn(ch)
+}
+
+// TODO(ts): Bring back error reporting by reverting 7faf9e7 as soon as the
+// client allows users to configure the error behavior.
+func (c *processCollector) processCollect(ch chan<- Metric) {
+       pid, err := c.pidFn()
+       if err != nil {
+               return
+       }
+
+       p, err := procfs.NewProc(pid)
+       if err != nil {
+               return
+       }
+
+       if stat, err := p.NewStat(); err == nil {
+               c.cpuTotal.Set(stat.CPUTime())
+               ch <- c.cpuTotal
+               c.vsize.Set(float64(stat.VirtualMemory()))
+               ch <- c.vsize
+               c.rss.Set(float64(stat.ResidentMemory()))
+               ch <- c.rss
+
+               if startTime, err := stat.StartTime(); err == nil {
+                       c.startTime.Set(startTime)
+                       ch <- c.startTime
+               }
+       }
+
+       if fds, err := p.FileDescriptorsLen(); err == nil {
+               c.openFDs.Set(float64(fds))
+               ch <- c.openFDs
+       }
+
+       if limits, err := p.NewLimits(); err == nil {
+               c.maxFDs.Set(float64(limits.OpenFiles))
+               ch <- c.maxFDs
+       }
+}
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/push.go b/vendor/github.com/prometheus/client_golang/prometheus/push.go
new file mode 100644 (file)
index 0000000..5ec0a3a
--- /dev/null
@@ -0,0 +1,65 @@
+// Copyright 2015 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Copyright (c) 2013, The Prometheus 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 prometheus
+
+// Push triggers a metric collection by the default registry and pushes all
+// collected metrics to the Pushgateway specified by url. See the Pushgateway
+// documentation for detailed implications of the job and instance
+// parameter. instance can be left empty. You can use just host:port or ip:port
+// as url, in which case 'http://' is added automatically. You can also include
+// the schema in the URL. However, do not include the '/metrics/jobs/...' part.
+//
+// Note that all previously pushed metrics with the same job and instance will
+// be replaced with the metrics pushed by this call. (It uses HTTP method 'PUT'
+// to push to the Pushgateway.)
+func Push(job, instance, url string) error {
+       return defRegistry.Push(job, instance, url, "PUT")
+}
+
+// PushAdd works like Push, but only previously pushed metrics with the same
+// name (and the same job and instance) will be replaced. (It uses HTTP method
+// 'POST' to push to the Pushgateway.)
+func PushAdd(job, instance, url string) error {
+       return defRegistry.Push(job, instance, url, "POST")
+}
+
+// PushCollectors works like Push, but it does not collect from the default
+// registry. Instead, it collects from the provided collectors. It is a
+// convenient way to push only a few metrics.
+func PushCollectors(job, instance, url string, collectors ...Collector) error {
+       return pushCollectors(job, instance, url, "PUT", collectors...)
+}
+
+// PushAddCollectors works like PushAdd, but it does not collect from the
+// default registry. Instead, it collects from the provided collectors. It is a
+// convenient way to push only a few metrics.
+func PushAddCollectors(job, instance, url string, collectors ...Collector) error {
+       return pushCollectors(job, instance, url, "POST", collectors...)
+}
+
+func pushCollectors(job, instance, url, method string, collectors ...Collector) error {
+       r := newRegistry()
+       for _, collector := range collectors {
+               if _, err := r.Register(collector); err != nil {
+                       return err
+               }
+       }
+       return r.Push(job, instance, url, method)
+}
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/registry.go b/vendor/github.com/prometheus/client_golang/prometheus/registry.go
new file mode 100644 (file)
index 0000000..1dc2536
--- /dev/null
@@ -0,0 +1,736 @@
+// Copyright 2014 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Copyright (c) 2013, The Prometheus 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 prometheus
+
+import (
+       "bytes"
+       "compress/gzip"
+       "errors"
+       "fmt"
+       "io"
+       "net/http"
+       "net/url"
+       "os"
+       "sort"
+       "strings"
+       "sync"
+
+       "github.com/golang/protobuf/proto"
+       "github.com/prometheus/common/expfmt"
+
+       dto "github.com/prometheus/client_model/go"
+)
+
+var (
+       defRegistry   = newDefaultRegistry()
+       errAlreadyReg = errors.New("duplicate metrics collector registration attempted")
+)
+
+// Constants relevant to the HTTP interface.
+const (
+       // APIVersion is the version of the format of the exported data.  This
+       // will match this library's version, which subscribes to the Semantic
+       // Versioning scheme.
+       APIVersion = "0.0.4"
+
+       // DelimitedTelemetryContentType is the content type set on telemetry
+       // data responses in delimited protobuf format.
+       DelimitedTelemetryContentType = `application/vnd.google.protobuf; proto=io.prometheus.client.MetricFamily; encoding=delimited`
+       // TextTelemetryContentType is the content type set on telemetry data
+       // responses in text format.
+       TextTelemetryContentType = `text/plain; version=` + APIVersion
+       // ProtoTextTelemetryContentType is the content type set on telemetry
+       // data responses in protobuf text format.  (Only used for debugging.)
+       ProtoTextTelemetryContentType = `application/vnd.google.protobuf; proto=io.prometheus.client.MetricFamily; encoding=text`
+       // ProtoCompactTextTelemetryContentType is the content type set on
+       // telemetry data responses in protobuf compact text format.  (Only used
+       // for debugging.)
+       ProtoCompactTextTelemetryContentType = `application/vnd.google.protobuf; proto=io.prometheus.client.MetricFamily; encoding=compact-text`
+
+       // Constants for object pools.
+       numBufs           = 4
+       numMetricFamilies = 1000
+       numMetrics        = 10000
+
+       // Capacity for the channel to collect metrics and descriptors.
+       capMetricChan = 1000
+       capDescChan   = 10
+
+       contentTypeHeader     = "Content-Type"
+       contentLengthHeader   = "Content-Length"
+       contentEncodingHeader = "Content-Encoding"
+
+       acceptEncodingHeader = "Accept-Encoding"
+       acceptHeader         = "Accept"
+)
+
+// Handler returns the HTTP handler for the global Prometheus registry. It is
+// already instrumented with InstrumentHandler (using "prometheus" as handler
+// name). Usually the handler is used to handle the "/metrics" endpoint.
+func Handler() http.Handler {
+       return InstrumentHandler("prometheus", defRegistry)
+}
+
+// UninstrumentedHandler works in the same way as Handler, but the returned HTTP
+// handler is not instrumented. This is useful if no instrumentation is desired
+// (for whatever reason) or if the instrumentation has to happen with a
+// different handler name (or with a different instrumentation approach
+// altogether). See the InstrumentHandler example.
+func UninstrumentedHandler() http.Handler {
+       return defRegistry
+}
+
+// Register registers a new Collector to be included in metrics collection. It
+// returns an error if the descriptors provided by the Collector are invalid or
+// if they - in combination with descriptors of already registered Collectors -
+// do not fulfill the consistency and uniqueness criteria described in the Desc
+// documentation.
+//
+// Do not register the same Collector multiple times concurrently. (Registering
+// the same Collector twice would result in an error anyway, but on top of that,
+// it is not safe to do so concurrently.)
+func Register(m Collector) error {
+       _, err := defRegistry.Register(m)
+       return err
+}
+
+// MustRegister works like Register but panics where Register would have
+// returned an error.
+func MustRegister(m Collector) {
+       err := Register(m)
+       if err != nil {
+               panic(err)
+       }
+}
+
+// RegisterOrGet works like Register but does not return an error if a Collector
+// is registered that equals a previously registered Collector. (Two Collectors
+// are considered equal if their Describe method yields the same set of
+// descriptors.) Instead, the previously registered Collector is returned (which
+// is helpful if the new and previously registered Collectors are equal but not
+// identical, i.e. not pointers to the same object).
+//
+// As for Register, it is still not safe to call RegisterOrGet with the same
+// Collector multiple times concurrently.
+func RegisterOrGet(m Collector) (Collector, error) {
+       return defRegistry.RegisterOrGet(m)
+}
+
+// MustRegisterOrGet works like Register but panics where RegisterOrGet would
+// have returned an error.
+func MustRegisterOrGet(m Collector) Collector {
+       existing, err := RegisterOrGet(m)
+       if err != nil {
+               panic(err)
+       }
+       return existing
+}
+
+// Unregister unregisters the Collector that equals the Collector passed in as
+// an argument. (Two Collectors are considered equal if their Describe method
+// yields the same set of descriptors.) The function returns whether a Collector
+// was unregistered.
+func Unregister(c Collector) bool {
+       return defRegistry.Unregister(c)
+}
+
+// SetMetricFamilyInjectionHook sets a function that is called whenever metrics
+// are collected. The hook function must be set before metrics collection begins
+// (i.e. call SetMetricFamilyInjectionHook before setting the HTTP handler.) The
+// MetricFamily protobufs returned by the hook function are merged with the
+// metrics collected in the usual way.
+//
+// This is a way to directly inject MetricFamily protobufs managed and owned by
+// the caller. The caller has full responsibility. As no registration of the
+// injected metrics has happened, there is no descriptor to check against, and
+// there are no registration-time checks. If collect-time checks are disabled
+// (see function EnableCollectChecks), no sanity checks are performed on the
+// returned protobufs at all. If collect-checks are enabled, type and uniqueness
+// checks are performed, but no further consistency checks (which would require
+// knowledge of a metric descriptor).
+//
+// Sorting concerns: The caller is responsible for sorting the label pairs in
+// each metric. However, the order of metrics will be sorted by the registry as
+// it is required anyway after merging with the metric families collected
+// conventionally.
+//
+// The function must be callable at any time and concurrently.
+func SetMetricFamilyInjectionHook(hook func() []*dto.MetricFamily) {
+       defRegistry.metricFamilyInjectionHook = hook
+}
+
+// PanicOnCollectError sets the behavior whether a panic is caused upon an error
+// while metrics are collected and served to the HTTP endpoint. By default, an
+// internal server error (status code 500) is served with an error message.
+func PanicOnCollectError(b bool) {
+       defRegistry.panicOnCollectError = b
+}
+
+// EnableCollectChecks enables (or disables) additional consistency checks
+// during metrics collection. These additional checks are not enabled by default
+// because they inflict a performance penalty and the errors they check for can
+// only happen if the used Metric and Collector types have internal programming
+// errors. It can be helpful to enable these checks while working with custom
+// Collectors or Metrics whose correctness is not well established yet.
+func EnableCollectChecks(b bool) {
+       defRegistry.collectChecksEnabled = b
+}
+
+// encoder is a function that writes a dto.MetricFamily to an io.Writer in a
+// certain encoding. It returns the number of bytes written and any error
+// encountered.  Note that pbutil.WriteDelimited and pbutil.MetricFamilyToText
+// are encoders.
+type encoder func(io.Writer, *dto.MetricFamily) (int, error)
+
+type registry struct {
+       mtx                       sync.RWMutex
+       collectorsByID            map[uint64]Collector // ID is a hash of the descIDs.
+       descIDs                   map[uint64]struct{}
+       dimHashesByName           map[string]uint64
+       bufPool                   chan *bytes.Buffer
+       metricFamilyPool          chan *dto.MetricFamily
+       metricPool                chan *dto.Metric
+       metricFamilyInjectionHook func() []*dto.MetricFamily
+
+       panicOnCollectError, collectChecksEnabled bool
+}
+
+func (r *registry) Register(c Collector) (Collector, error) {
+       descChan := make(chan *Desc, capDescChan)
+       go func() {
+               c.Describe(descChan)
+               close(descChan)
+       }()
+
+       newDescIDs := map[uint64]struct{}{}
+       newDimHashesByName := map[string]uint64{}
+       var collectorID uint64 // Just a sum of all desc IDs.
+       var duplicateDescErr error
+
+       r.mtx.Lock()
+       defer r.mtx.Unlock()
+       // Coduct various tests...
+       for desc := range descChan {
+
+               // Is the descriptor valid at all?
+               if desc.err != nil {
+                       return c, fmt.Errorf("descriptor %s is invalid: %s", desc, desc.err)
+               }
+
+               // Is the descID unique?
+               // (In other words: Is the fqName + constLabel combination unique?)
+               if _, exists := r.descIDs[desc.id]; exists {
+                       duplicateDescErr = fmt.Errorf("descriptor %s already exists with the same fully-qualified name and const label values", desc)
+               }
+               // If it is not a duplicate desc in this collector, add it to
+               // the collectorID.  (We allow duplicate descs within the same
+               // collector, but their existence must be a no-op.)
+               if _, exists := newDescIDs[desc.id]; !exists {
+                       newDescIDs[desc.id] = struct{}{}
+                       collectorID += desc.id
+               }
+
+               // Are all the label names and the help string consistent with
+               // previous descriptors of the same name?
+               // First check existing descriptors...
+               if dimHash, exists := r.dimHashesByName[desc.fqName]; exists {
+                       if dimHash != desc.dimHash {
+                               return nil, fmt.Errorf("a previously registered descriptor with the same fully-qualified name as %s has different label names or a different help string", desc)
+                       }
+               } else {
+                       // ...then check the new descriptors already seen.
+                       if dimHash, exists := newDimHashesByName[desc.fqName]; exists {
+                               if dimHash != desc.dimHash {
+                                       return nil, fmt.Errorf("descriptors reported by collector have inconsistent label names or help strings for the same fully-qualified name, offender is %s", desc)
+                               }
+                       } else {
+                               newDimHashesByName[desc.fqName] = desc.dimHash
+                       }
+               }
+       }
+       // Did anything happen at all?
+       if len(newDescIDs) == 0 {
+               return nil, errors.New("collector has no descriptors")
+       }
+       if existing, exists := r.collectorsByID[collectorID]; exists {
+               return existing, errAlreadyReg
+       }
+       // If the collectorID is new, but at least one of the descs existed
+       // before, we are in trouble.
+       if duplicateDescErr != nil {
+               return nil, duplicateDescErr
+       }
+
+       // Only after all tests have passed, actually register.
+       r.collectorsByID[collectorID] = c
+       for hash := range newDescIDs {
+               r.descIDs[hash] = struct{}{}
+       }
+       for name, dimHash := range newDimHashesByName {
+               r.dimHashesByName[name] = dimHash
+       }
+       return c, nil
+}
+
+func (r *registry) RegisterOrGet(m Collector) (Collector, error) {
+       existing, err := r.Register(m)
+       if err != nil && err != errAlreadyReg {
+               return nil, err
+       }
+       return existing, nil
+}
+
+func (r *registry) Unregister(c Collector) bool {
+       descChan := make(chan *Desc, capDescChan)
+       go func() {
+               c.Describe(descChan)
+               close(descChan)
+       }()
+
+       descIDs := map[uint64]struct{}{}
+       var collectorID uint64 // Just a sum of the desc IDs.
+       for desc := range descChan {
+               if _, exists := descIDs[desc.id]; !exists {
+                       collectorID += desc.id
+                       descIDs[desc.id] = struct{}{}
+               }
+       }
+
+       r.mtx.RLock()
+       if _, exists := r.collectorsByID[collectorID]; !exists {
+               r.mtx.RUnlock()
+               return false
+       }
+       r.mtx.RUnlock()
+
+       r.mtx.Lock()
+       defer r.mtx.Unlock()
+
+       delete(r.collectorsByID, collectorID)
+       for id := range descIDs {
+               delete(r.descIDs, id)
+       }
+       // dimHashesByName is left untouched as those must be consistent
+       // throughout the lifetime of a program.
+       return true
+}
+
+func (r *registry) Push(job, instance, pushURL, method string) error {
+       if !strings.Contains(pushURL, "://") {
+               pushURL = "http://" + pushURL
+       }
+       if strings.HasSuffix(pushURL, "/") {
+               pushURL = pushURL[:len(pushURL)-1]
+       }
+       pushURL = fmt.Sprintf("%s/metrics/jobs/%s", pushURL, url.QueryEscape(job))
+       if instance != "" {
+               pushURL += "/instances/" + url.QueryEscape(instance)
+       }
+       buf := r.getBuf()
+       defer r.giveBuf(buf)
+       if err := r.writePB(expfmt.NewEncoder(buf, expfmt.FmtProtoDelim)); err != nil {
+               if r.panicOnCollectError {
+                       panic(err)
+               }
+               return err
+       }
+       req, err := http.NewRequest(method, pushURL, buf)
+       if err != nil {
+               return err
+       }
+       req.Header.Set(contentTypeHeader, DelimitedTelemetryContentType)
+       resp, err := http.DefaultClient.Do(req)
+       if err != nil {
+               return err
+       }
+       defer resp.Body.Close()
+       if resp.StatusCode != 202 {
+               return fmt.Errorf("unexpected status code %d while pushing to %s", resp.StatusCode, pushURL)
+       }
+       return nil
+}
+
+func (r *registry) ServeHTTP(w http.ResponseWriter, req *http.Request) {
+       contentType := expfmt.Negotiate(req.Header)
+       buf := r.getBuf()
+       defer r.giveBuf(buf)
+       writer, encoding := decorateWriter(req, buf)
+       if err := r.writePB(expfmt.NewEncoder(writer, contentType)); err != nil {
+               if r.panicOnCollectError {
+                       panic(err)
+               }
+               http.Error(w, "An error has occurred:\n\n"+err.Error(), http.StatusInternalServerError)
+               return
+       }
+       if closer, ok := writer.(io.Closer); ok {
+               closer.Close()
+       }
+       header := w.Header()
+       header.Set(contentTypeHeader, string(contentType))
+       header.Set(contentLengthHeader, fmt.Sprint(buf.Len()))
+       if encoding != "" {
+               header.Set(contentEncodingHeader, encoding)
+       }
+       w.Write(buf.Bytes())
+}
+
+func (r *registry) writePB(encoder expfmt.Encoder) error {
+       var metricHashes map[uint64]struct{}
+       if r.collectChecksEnabled {
+               metricHashes = make(map[uint64]struct{})
+       }
+       metricChan := make(chan Metric, capMetricChan)
+       wg := sync.WaitGroup{}
+
+       r.mtx.RLock()
+       metricFamiliesByName := make(map[string]*dto.MetricFamily, len(r.dimHashesByName))
+
+       // Scatter.
+       // (Collectors could be complex and slow, so we call them all at once.)
+       wg.Add(len(r.collectorsByID))
+       go func() {
+               wg.Wait()
+               close(metricChan)
+       }()
+       for _, collector := range r.collectorsByID {
+               go func(collector Collector) {
+                       defer wg.Done()
+                       collector.Collect(metricChan)
+               }(collector)
+       }
+       r.mtx.RUnlock()
+
+       // Drain metricChan in case of premature return.
+       defer func() {
+               for _ = range metricChan {
+               }
+       }()
+
+       // Gather.
+       for metric := range metricChan {
+               // This could be done concurrently, too, but it required locking
+               // of metricFamiliesByName (and of metricHashes if checks are
+               // enabled). Most likely not worth it.
+               desc := metric.Desc()
+               metricFamily, ok := metricFamiliesByName[desc.fqName]
+               if !ok {
+                       metricFamily = r.getMetricFamily()
+                       defer r.giveMetricFamily(metricFamily)
+                       metricFamily.Name = proto.String(desc.fqName)
+                       metricFamily.Help = proto.String(desc.help)
+                       metricFamiliesByName[desc.fqName] = metricFamily
+               }
+               dtoMetric := r.getMetric()
+               defer r.giveMetric(dtoMetric)
+               if err := metric.Write(dtoMetric); err != nil {
+                       // TODO: Consider different means of error reporting so
+                       // that a single erroneous metric could be skipped
+                       // instead of blowing up the whole collection.
+                       return fmt.Errorf("error collecting metric %v: %s", desc, err)
+               }
+               switch {
+               case metricFamily.Type != nil:
+                       // Type already set. We are good.
+               case dtoMetric.Gauge != nil:
+                       metricFamily.Type = dto.MetricType_GAUGE.Enum()
+               case dtoMetric.Counter != nil:
+                       metricFamily.Type = dto.MetricType_COUNTER.Enum()
+               case dtoMetric.Summary != nil:
+                       metricFamily.Type = dto.MetricType_SUMMARY.Enum()
+               case dtoMetric.Untyped != nil:
+                       metricFamily.Type = dto.MetricType_UNTYPED.Enum()
+               case dtoMetric.Histogram != nil:
+                       metricFamily.Type = dto.MetricType_HISTOGRAM.Enum()
+               default:
+                       return fmt.Errorf("empty metric collected: %s", dtoMetric)
+               }
+               if r.collectChecksEnabled {
+                       if err := r.checkConsistency(metricFamily, dtoMetric, desc, metricHashes); err != nil {
+                               return err
+                       }
+               }
+               metricFamily.Metric = append(metricFamily.Metric, dtoMetric)
+       }
+
+       if r.metricFamilyInjectionHook != nil {
+               for _, mf := range r.metricFamilyInjectionHook() {
+                       existingMF, exists := metricFamiliesByName[mf.GetName()]
+                       if !exists {
+                               metricFamiliesByName[mf.GetName()] = mf
+                               if r.collectChecksEnabled {
+                                       for _, m := range mf.Metric {
+                                               if err := r.checkConsistency(mf, m, nil, metricHashes); err != nil {
+                                                       return err
+                                               }
+                                       }
+                               }
+                               continue
+                       }
+                       for _, m := range mf.Metric {
+                               if r.collectChecksEnabled {
+                                       if err := r.checkConsistency(existingMF, m, nil, metricHashes); err != nil {
+                                               return err
+                                       }
+                               }
+                               existingMF.Metric = append(existingMF.Metric, m)
+                       }
+               }
+       }
+
+       // Now that MetricFamilies are all set, sort their Metrics
+       // lexicographically by their label values.
+       for _, mf := range metricFamiliesByName {
+               sort.Sort(metricSorter(mf.Metric))
+       }
+
+       // Write out MetricFamilies sorted by their name.
+       names := make([]string, 0, len(metricFamiliesByName))
+       for name := range metricFamiliesByName {
+               names = append(names, name)
+       }
+       sort.Strings(names)
+
+       for _, name := range names {
+               if err := encoder.Encode(metricFamiliesByName[name]); err != nil {
+                       return err
+               }
+       }
+       return nil
+}
+
+func (r *registry) checkConsistency(metricFamily *dto.MetricFamily, dtoMetric *dto.Metric, desc *Desc, metricHashes map[uint64]struct{}) error {
+
+       // Type consistency with metric family.
+       if metricFamily.GetType() == dto.MetricType_GAUGE && dtoMetric.Gauge == nil ||
+               metricFamily.GetType() == dto.MetricType_COUNTER && dtoMetric.Counter == nil ||
+               metricFamily.GetType() == dto.MetricType_SUMMARY && dtoMetric.Summary == nil ||
+               metricFamily.GetType() == dto.MetricType_HISTOGRAM && dtoMetric.Histogram == nil ||
+               metricFamily.GetType() == dto.MetricType_UNTYPED && dtoMetric.Untyped == nil {
+               return fmt.Errorf(
+                       "collected metric %s %s is not a %s",
+                       metricFamily.GetName(), dtoMetric, metricFamily.GetType(),
+               )
+       }
+
+       // Is the metric unique (i.e. no other metric with the same name and the same label values)?
+       h := hashNew()
+       h = hashAdd(h, metricFamily.GetName())
+       h = hashAddByte(h, separatorByte)
+       // Make sure label pairs are sorted. We depend on it for the consistency
+       // check. Label pairs must be sorted by contract. But the point of this
+       // method is to check for contract violations. So we better do the sort
+       // now.
+       sort.Sort(LabelPairSorter(dtoMetric.Label))
+       for _, lp := range dtoMetric.Label {
+               h = hashAdd(h, lp.GetValue())
+               h = hashAddByte(h, separatorByte)
+       }
+       if _, exists := metricHashes[h]; exists {
+               return fmt.Errorf(
+                       "collected metric %s %s was collected before with the same name and label values",
+                       metricFamily.GetName(), dtoMetric,
+               )
+       }
+       metricHashes[h] = struct{}{}
+
+       if desc == nil {
+               return nil // Nothing left to check if we have no desc.
+       }
+
+       // Desc consistency with metric family.
+       if metricFamily.GetName() != desc.fqName {
+               return fmt.Errorf(
+                       "collected metric %s %s has name %q but should have %q",
+                       metricFamily.GetName(), dtoMetric, metricFamily.GetName(), desc.fqName,
+               )
+       }
+       if metricFamily.GetHelp() != desc.help {
+               return fmt.Errorf(
+                       "collected metric %s %s has help %q but should have %q",
+                       metricFamily.GetName(), dtoMetric, metricFamily.GetHelp(), desc.help,
+               )
+       }
+
+       // Is the desc consistent with the content of the metric?
+       lpsFromDesc := make([]*dto.LabelPair, 0, len(dtoMetric.Label))
+       lpsFromDesc = append(lpsFromDesc, desc.constLabelPairs...)
+       for _, l := range desc.variableLabels {
+               lpsFromDesc = append(lpsFromDesc, &dto.LabelPair{
+                       Name: proto.String(l),
+               })
+       }
+       if len(lpsFromDesc) != len(dtoMetric.Label) {
+               return fmt.Errorf(
+                       "labels in collected metric %s %s are inconsistent with descriptor %s",
+                       metricFamily.GetName(), dtoMetric, desc,
+               )
+       }
+       sort.Sort(LabelPairSorter(lpsFromDesc))
+       for i, lpFromDesc := range lpsFromDesc {
+               lpFromMetric := dtoMetric.Label[i]
+               if lpFromDesc.GetName() != lpFromMetric.GetName() ||
+                       lpFromDesc.Value != nil && lpFromDesc.GetValue() != lpFromMetric.GetValue() {
+                       return fmt.Errorf(
+                               "labels in collected metric %s %s are inconsistent with descriptor %s",
+                               metricFamily.GetName(), dtoMetric, desc,
+                       )
+               }
+       }
+
+       r.mtx.RLock() // Remaining checks need the read lock.
+       defer r.mtx.RUnlock()
+
+       // Is the desc registered?
+       if _, exist := r.descIDs[desc.id]; !exist {
+               return fmt.Errorf(
+                       "collected metric %s %s with unregistered descriptor %s",
+                       metricFamily.GetName(), dtoMetric, desc,
+               )
+       }
+
+       return nil
+}
+
+func (r *registry) getBuf() *bytes.Buffer {
+       select {
+       case buf := <-r.bufPool:
+               return buf
+       default:
+               return &bytes.Buffer{}
+       }
+}
+
+func (r *registry) giveBuf(buf *bytes.Buffer) {
+       buf.Reset()
+       select {
+       case r.bufPool <- buf:
+       default:
+       }
+}
+
+func (r *registry) getMetricFamily() *dto.MetricFamily {
+       select {
+       case mf := <-r.metricFamilyPool:
+               return mf
+       default:
+               return &dto.MetricFamily{}
+       }
+}
+
+func (r *registry) giveMetricFamily(mf *dto.MetricFamily) {
+       mf.Reset()
+       select {
+       case r.metricFamilyPool <- mf:
+       default:
+       }
+}
+
+func (r *registry) getMetric() *dto.Metric {
+       select {
+       case m := <-r.metricPool:
+               return m
+       default:
+               return &dto.Metric{}
+       }
+}
+
+func (r *registry) giveMetric(m *dto.Metric) {
+       m.Reset()
+       select {
+       case r.metricPool <- m:
+       default:
+       }
+}
+
+func newRegistry() *registry {
+       return &registry{
+               collectorsByID:   map[uint64]Collector{},
+               descIDs:          map[uint64]struct{}{},
+               dimHashesByName:  map[string]uint64{},
+               bufPool:          make(chan *bytes.Buffer, numBufs),
+               metricFamilyPool: make(chan *dto.MetricFamily, numMetricFamilies),
+               metricPool:       make(chan *dto.Metric, numMetrics),
+       }
+}
+
+func newDefaultRegistry() *registry {
+       r := newRegistry()
+       r.Register(NewProcessCollector(os.Getpid(), ""))
+       r.Register(NewGoCollector())
+       return r
+}
+
+// decorateWriter wraps a writer to handle gzip compression if requested.  It
+// returns the decorated writer and the appropriate "Content-Encoding" header
+// (which is empty if no compression is enabled).
+func decorateWriter(request *http.Request, writer io.Writer) (io.Writer, string) {
+       header := request.Header.Get(acceptEncodingHeader)
+       parts := strings.Split(header, ",")
+       for _, part := range parts {
+               part := strings.TrimSpace(part)
+               if part == "gzip" || strings.HasPrefix(part, "gzip;") {
+                       return gzip.NewWriter(writer), "gzip"
+               }
+       }
+       return writer, ""
+}
+
+type metricSorter []*dto.Metric
+
+func (s metricSorter) Len() int {
+       return len(s)
+}
+
+func (s metricSorter) Swap(i, j int) {
+       s[i], s[j] = s[j], s[i]
+}
+
+func (s metricSorter) Less(i, j int) bool {
+       if len(s[i].Label) != len(s[j].Label) {
+               // This should not happen. The metrics are
+               // inconsistent. However, we have to deal with the fact, as
+               // people might use custom collectors or metric family injection
+               // to create inconsistent metrics. So let's simply compare the
+               // number of labels in this case. That will still yield
+               // reproducible sorting.
+               return len(s[i].Label) < len(s[j].Label)
+       }
+       for n, lp := range s[i].Label {
+               vi := lp.GetValue()
+               vj := s[j].Label[n].GetValue()
+               if vi != vj {
+                       return vi < vj
+               }
+       }
+
+       // We should never arrive here. Multiple metrics with the same
+       // label set in the same scrape will lead to undefined ingestion
+       // behavior. However, as above, we have to provide stable sorting
+       // here, even for inconsistent metrics. So sort equal metrics
+       // by their timestamp, with missing timestamps (implying "now")
+       // coming last.
+       if s[i].TimestampMs == nil {
+               return false
+       }
+       if s[j].TimestampMs == nil {
+               return true
+       }
+       return s[i].GetTimestampMs() < s[j].GetTimestampMs()
+}
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/summary.go b/vendor/github.com/prometheus/client_golang/prometheus/summary.go
new file mode 100644 (file)
index 0000000..eb84961
--- /dev/null
@@ -0,0 +1,538 @@
+// Copyright 2014 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package prometheus
+
+import (
+       "fmt"
+       "math"
+       "sort"
+       "sync"
+       "time"
+
+       "github.com/beorn7/perks/quantile"
+       "github.com/golang/protobuf/proto"
+
+       dto "github.com/prometheus/client_model/go"
+)
+
+// quantileLabel is used for the label that defines the quantile in a
+// summary.
+const quantileLabel = "quantile"
+
+// A Summary captures individual observations from an event or sample stream and
+// summarizes them in a manner similar to traditional summary statistics: 1. sum
+// of observations, 2. observation count, 3. rank estimations.
+//
+// A typical use-case is the observation of request latencies. By default, a
+// Summary provides the median, the 90th and the 99th percentile of the latency
+// as rank estimations.
+//
+// Note that the rank estimations cannot be aggregated in a meaningful way with
+// the Prometheus query language (i.e. you cannot average or add them). If you
+// need aggregatable quantiles (e.g. you want the 99th percentile latency of all
+// queries served across all instances of a service), consider the Histogram
+// metric type. See the Prometheus documentation for more details.
+//
+// To create Summary instances, use NewSummary.
+type Summary interface {
+       Metric
+       Collector
+
+       // Observe adds a single observation to the summary.
+       Observe(float64)
+}
+
+var (
+       // DefObjectives are the default Summary quantile values.
+       DefObjectives = map[float64]float64{0.5: 0.05, 0.9: 0.01, 0.99: 0.001}
+
+       errQuantileLabelNotAllowed = fmt.Errorf(
+               "%q is not allowed as label name in summaries", quantileLabel,
+       )
+)
+
+// Default values for SummaryOpts.
+const (
+       // DefMaxAge is the default duration for which observations stay
+       // relevant.
+       DefMaxAge time.Duration = 10 * time.Minute
+       // DefAgeBuckets is the default number of buckets used to calculate the
+       // age of observations.
+       DefAgeBuckets = 5
+       // DefBufCap is the standard buffer size for collecting Summary observations.
+       DefBufCap = 500
+)
+
+// SummaryOpts bundles the options for creating a Summary metric. It is
+// mandatory to set Name and Help to a non-empty string. All other fields are
+// optional and can safely be left at their zero value.
+type SummaryOpts struct {
+       // Namespace, Subsystem, and Name are components of the fully-qualified
+       // name of the Summary (created by joining these components with
+       // "_"). Only Name is mandatory, the others merely help structuring the
+       // name. Note that the fully-qualified name of the Summary must be a
+       // valid Prometheus metric name.
+       Namespace string
+       Subsystem string
+       Name      string
+
+       // Help provides information about this Summary. Mandatory!
+       //
+       // Metrics with the same fully-qualified name must have the same Help
+       // string.
+       Help string
+
+       // ConstLabels are used to attach fixed labels to this
+       // Summary. Summaries with the same fully-qualified name must have the
+       // same label names in their ConstLabels.
+       //
+       // Note that in most cases, labels have a value that varies during the
+       // lifetime of a process. Those labels are usually managed with a
+       // SummaryVec. ConstLabels serve only special purposes. One is for the
+       // special case where the value of a label does not change during the
+       // lifetime of a process, e.g. if the revision of the running binary is
+       // put into a label. Another, more advanced purpose is if more than one
+       // Collector needs to collect Summaries with the same fully-qualified
+       // name. In that case, those Summaries must differ in the values of
+       // their ConstLabels. See the Collector examples.
+       //
+       // If the value of a label never changes (not even between binaries),
+       // that label most likely should not be a label at all (but part of the
+       // metric name).
+       ConstLabels Labels
+
+       // Objectives defines the quantile rank estimates with their respective
+       // absolute error. If Objectives[q] = e, then the value reported
+       // for q will be the φ-quantile value for some φ between q-e and q+e.
+       // The default value is DefObjectives.
+       Objectives map[float64]float64
+
+       // MaxAge defines the duration for which an observation stays relevant
+       // for the summary. Must be positive. The default value is DefMaxAge.
+       MaxAge time.Duration
+
+       // AgeBuckets is the number of buckets used to exclude observations that
+       // are older than MaxAge from the summary. A higher number has a
+       // resource penalty, so only increase it if the higher resolution is
+       // really required. For very high observation rates, you might want to
+       // reduce the number of age buckets. With only one age bucket, you will
+       // effectively see a complete reset of the summary each time MaxAge has
+       // passed. The default value is DefAgeBuckets.
+       AgeBuckets uint32
+
+       // BufCap defines the default sample stream buffer size.  The default
+       // value of DefBufCap should suffice for most uses. If there is a need
+       // to increase the value, a multiple of 500 is recommended (because that
+       // is the internal buffer size of the underlying package
+       // "github.com/bmizerany/perks/quantile").
+       BufCap uint32
+}
+
+// TODO: Great fuck-up with the sliding-window decay algorithm... The Merge
+// method of perk/quantile is actually not working as advertised - and it might
+// be unfixable, as the underlying algorithm is apparently not capable of
+// merging summaries in the first place. To avoid using Merge, we are currently
+// adding observations to _each_ age bucket, i.e. the effort to add a sample is
+// essentially multiplied by the number of age buckets. When rotating age
+// buckets, we empty the previous head stream. On scrape time, we simply take
+// the quantiles from the head stream (no merging required). Result: More effort
+// on observation time, less effort on scrape time, which is exactly the
+// opposite of what we try to accomplish, but at least the results are correct.
+//
+// The quite elegant previous contraption to merge the age buckets efficiently
+// on scrape time (see code up commit 6b9530d72ea715f0ba612c0120e6e09fbf1d49d0)
+// can't be used anymore.
+
+// NewSummary creates a new Summary based on the provided SummaryOpts.
+func NewSummary(opts SummaryOpts) Summary {
+       return newSummary(
+               NewDesc(
+                       BuildFQName(opts.Namespace, opts.Subsystem, opts.Name),
+                       opts.Help,
+                       nil,
+                       opts.ConstLabels,
+               ),
+               opts,
+       )
+}
+
+func newSummary(desc *Desc, opts SummaryOpts, labelValues ...string) Summary {
+       if len(desc.variableLabels) != len(labelValues) {
+               panic(errInconsistentCardinality)
+       }
+
+       for _, n := range desc.variableLabels {
+               if n == quantileLabel {
+                       panic(errQuantileLabelNotAllowed)
+               }
+       }
+       for _, lp := range desc.constLabelPairs {
+               if lp.GetName() == quantileLabel {
+                       panic(errQuantileLabelNotAllowed)
+               }
+       }
+
+       if len(opts.Objectives) == 0 {
+               opts.Objectives = DefObjectives
+       }
+
+       if opts.MaxAge < 0 {
+               panic(fmt.Errorf("illegal max age MaxAge=%v", opts.MaxAge))
+       }
+       if opts.MaxAge == 0 {
+               opts.MaxAge = DefMaxAge
+       }
+
+       if opts.AgeBuckets == 0 {
+               opts.AgeBuckets = DefAgeBuckets
+       }
+
+       if opts.BufCap == 0 {
+               opts.BufCap = DefBufCap
+       }
+
+       s := &summary{
+               desc: desc,
+
+               objectives:       opts.Objectives,
+               sortedObjectives: make([]float64, 0, len(opts.Objectives)),
+
+               labelPairs: makeLabelPairs(desc, labelValues),
+
+               hotBuf:         make([]float64, 0, opts.BufCap),
+               coldBuf:        make([]float64, 0, opts.BufCap),
+               streamDuration: opts.MaxAge / time.Duration(opts.AgeBuckets),
+       }
+       s.headStreamExpTime = time.Now().Add(s.streamDuration)
+       s.hotBufExpTime = s.headStreamExpTime
+
+       for i := uint32(0); i < opts.AgeBuckets; i++ {
+               s.streams = append(s.streams, s.newStream())
+       }
+       s.headStream = s.streams[0]
+
+       for qu := range s.objectives {
+               s.sortedObjectives = append(s.sortedObjectives, qu)
+       }
+       sort.Float64s(s.sortedObjectives)
+
+       s.Init(s) // Init self-collection.
+       return s
+}
+
+type summary struct {
+       SelfCollector
+
+       bufMtx sync.Mutex // Protects hotBuf and hotBufExpTime.
+       mtx    sync.Mutex // Protects every other moving part.
+       // Lock bufMtx before mtx if both are needed.
+
+       desc *Desc
+
+       objectives       map[float64]float64
+       sortedObjectives []float64
+
+       labelPairs []*dto.LabelPair
+
+       sum float64
+       cnt uint64
+
+       hotBuf, coldBuf []float64
+
+       streams                          []*quantile.Stream
+       streamDuration                   time.Duration
+       headStream                       *quantile.Stream
+       headStreamIdx                    int
+       headStreamExpTime, hotBufExpTime time.Time
+}
+
+func (s *summary) Desc() *Desc {
+       return s.desc
+}
+
+func (s *summary) Observe(v float64) {
+       s.bufMtx.Lock()
+       defer s.bufMtx.Unlock()
+
+       now := time.Now()
+       if now.After(s.hotBufExpTime) {
+               s.asyncFlush(now)
+       }
+       s.hotBuf = append(s.hotBuf, v)
+       if len(s.hotBuf) == cap(s.hotBuf) {
+               s.asyncFlush(now)
+       }
+}
+
+func (s *summary) Write(out *dto.Metric) error {
+       sum := &dto.Summary{}
+       qs := make([]*dto.Quantile, 0, len(s.objectives))
+
+       s.bufMtx.Lock()
+       s.mtx.Lock()
+       // Swap bufs even if hotBuf is empty to set new hotBufExpTime.
+       s.swapBufs(time.Now())
+       s.bufMtx.Unlock()
+
+       s.flushColdBuf()
+       sum.SampleCount = proto.Uint64(s.cnt)
+       sum.SampleSum = proto.Float64(s.sum)
+
+       for _, rank := range s.sortedObjectives {
+               var q float64
+               if s.headStream.Count() == 0 {
+                       q = math.NaN()
+               } else {
+                       q = s.headStream.Query(rank)
+               }
+               qs = append(qs, &dto.Quantile{
+                       Quantile: proto.Float64(rank),
+                       Value:    proto.Float64(q),
+               })
+       }
+
+       s.mtx.Unlock()
+
+       if len(qs) > 0 {
+               sort.Sort(quantSort(qs))
+       }
+       sum.Quantile = qs
+
+       out.Summary = sum
+       out.Label = s.labelPairs
+       return nil
+}
+
+func (s *summary) newStream() *quantile.Stream {
+       return quantile.NewTargeted(s.objectives)
+}
+
+// asyncFlush needs bufMtx locked.
+func (s *summary) asyncFlush(now time.Time) {
+       s.mtx.Lock()
+       s.swapBufs(now)
+
+       // Unblock the original goroutine that was responsible for the mutation
+       // that triggered the compaction.  But hold onto the global non-buffer
+       // state mutex until the operation finishes.
+       go func() {
+               s.flushColdBuf()
+               s.mtx.Unlock()
+       }()
+}
+
+// rotateStreams needs mtx AND bufMtx locked.
+func (s *summary) maybeRotateStreams() {
+       for !s.hotBufExpTime.Equal(s.headStreamExpTime) {
+               s.headStream.Reset()
+               s.headStreamIdx++
+               if s.headStreamIdx >= len(s.streams) {
+                       s.headStreamIdx = 0
+               }
+               s.headStream = s.streams[s.headStreamIdx]
+               s.headStreamExpTime = s.headStreamExpTime.Add(s.streamDuration)
+       }
+}
+
+// flushColdBuf needs mtx locked.
+func (s *summary) flushColdBuf() {
+       for _, v := range s.coldBuf {
+               for _, stream := range s.streams {
+                       stream.Insert(v)
+               }
+               s.cnt++
+               s.sum += v
+       }
+       s.coldBuf = s.coldBuf[0:0]
+       s.maybeRotateStreams()
+}
+
+// swapBufs needs mtx AND bufMtx locked, coldBuf must be empty.
+func (s *summary) swapBufs(now time.Time) {
+       if len(s.coldBuf) != 0 {
+               panic("coldBuf is not empty")
+       }
+       s.hotBuf, s.coldBuf = s.coldBuf, s.hotBuf
+       // hotBuf is now empty and gets new expiration set.
+       for now.After(s.hotBufExpTime) {
+               s.hotBufExpTime = s.hotBufExpTime.Add(s.streamDuration)
+       }
+}
+
+type quantSort []*dto.Quantile
+
+func (s quantSort) Len() int {
+       return len(s)
+}
+
+func (s quantSort) Swap(i, j int) {
+       s[i], s[j] = s[j], s[i]
+}
+
+func (s quantSort) Less(i, j int) bool {
+       return s[i].GetQuantile() < s[j].GetQuantile()
+}
+
+// SummaryVec is a Collector that bundles a set of Summaries that all share the
+// same Desc, but have different values for their variable labels. This is used
+// if you want to count the same thing partitioned by various dimensions
+// (e.g. HTTP request latencies, partitioned by status code and method). Create
+// instances with NewSummaryVec.
+type SummaryVec struct {
+       MetricVec
+}
+
+// NewSummaryVec creates a new SummaryVec based on the provided SummaryOpts and
+// partitioned by the given label names. At least one label name must be
+// provided.
+func NewSummaryVec(opts SummaryOpts, labelNames []string) *SummaryVec {
+       desc := NewDesc(
+               BuildFQName(opts.Namespace, opts.Subsystem, opts.Name),
+               opts.Help,
+               labelNames,
+               opts.ConstLabels,
+       )
+       return &SummaryVec{
+               MetricVec: MetricVec{
+                       children: map[uint64]Metric{},
+                       desc:     desc,
+                       newMetric: func(lvs ...string) Metric {
+                               return newSummary(desc, opts, lvs...)
+                       },
+               },
+       }
+}
+
+// GetMetricWithLabelValues replaces the method of the same name in
+// MetricVec. The difference is that this method returns a Summary and not a
+// Metric so that no type conversion is required.
+func (m *SummaryVec) GetMetricWithLabelValues(lvs ...string) (Summary, error) {
+       metric, err := m.MetricVec.GetMetricWithLabelValues(lvs...)
+       if metric != nil {
+               return metric.(Summary), err
+       }
+       return nil, err
+}
+
+// GetMetricWith replaces the method of the same name in MetricVec. The
+// difference is that this method returns a Summary and not a Metric so that no
+// type conversion is required.
+func (m *SummaryVec) GetMetricWith(labels Labels) (Summary, error) {
+       metric, err := m.MetricVec.GetMetricWith(labels)
+       if metric != nil {
+               return metric.(Summary), err
+       }
+       return nil, err
+}
+
+// WithLabelValues works as GetMetricWithLabelValues, but panics where
+// GetMetricWithLabelValues would have returned an error. By not returning an
+// error, WithLabelValues allows shortcuts like
+//     myVec.WithLabelValues("404", "GET").Observe(42.21)
+func (m *SummaryVec) WithLabelValues(lvs ...string) Summary {
+       return m.MetricVec.WithLabelValues(lvs...).(Summary)
+}
+
+// With works as GetMetricWith, but panics where GetMetricWithLabels would have
+// returned an error. By not returning an error, With allows shortcuts like
+//     myVec.With(Labels{"code": "404", "method": "GET"}).Observe(42.21)
+func (m *SummaryVec) With(labels Labels) Summary {
+       return m.MetricVec.With(labels).(Summary)
+}
+
+type constSummary struct {
+       desc       *Desc
+       count      uint64
+       sum        float64
+       quantiles  map[float64]float64
+       labelPairs []*dto.LabelPair
+}
+
+func (s *constSummary) Desc() *Desc {
+       return s.desc
+}
+
+func (s *constSummary) Write(out *dto.Metric) error {
+       sum := &dto.Summary{}
+       qs := make([]*dto.Quantile, 0, len(s.quantiles))
+
+       sum.SampleCount = proto.Uint64(s.count)
+       sum.SampleSum = proto.Float64(s.sum)
+
+       for rank, q := range s.quantiles {
+               qs = append(qs, &dto.Quantile{
+                       Quantile: proto.Float64(rank),
+                       Value:    proto.Float64(q),
+               })
+       }
+
+       if len(qs) > 0 {
+               sort.Sort(quantSort(qs))
+       }
+       sum.Quantile = qs
+
+       out.Summary = sum
+       out.Label = s.labelPairs
+
+       return nil
+}
+
+// NewConstSummary returns a metric representing a Prometheus summary with fixed
+// values for the count, sum, and quantiles. As those parameters cannot be
+// changed, the returned value does not implement the Summary interface (but
+// only the Metric interface). Users of this package will not have much use for
+// it in regular operations. However, when implementing custom Collectors, it is
+// useful as a throw-away metric that is generated on the fly to send it to
+// Prometheus in the Collect method.
+//
+// quantiles maps ranks to quantile values. For example, a median latency of
+// 0.23s and a 99th percentile latency of 0.56s would be expressed as:
+//     map[float64]float64{0.5: 0.23, 0.99: 0.56}
+//
+// NewConstSummary returns an error if the length of labelValues is not
+// consistent with the variable labels in Desc.
+func NewConstSummary(
+       desc *Desc,
+       count uint64,
+       sum float64,
+       quantiles map[float64]float64,
+       labelValues ...string,
+) (Metric, error) {
+       if len(desc.variableLabels) != len(labelValues) {
+               return nil, errInconsistentCardinality
+       }
+       return &constSummary{
+               desc:       desc,
+               count:      count,
+               sum:        sum,
+               quantiles:  quantiles,
+               labelPairs: makeLabelPairs(desc, labelValues),
+       }, nil
+}
+
+// MustNewConstSummary is a version of NewConstSummary that panics where
+// NewConstMetric would have returned an error.
+func MustNewConstSummary(
+       desc *Desc,
+       count uint64,
+       sum float64,
+       quantiles map[float64]float64,
+       labelValues ...string,
+) Metric {
+       m, err := NewConstSummary(desc, count, sum, quantiles, labelValues...)
+       if err != nil {
+               panic(err)
+       }
+       return m
+}
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/untyped.go b/vendor/github.com/prometheus/client_golang/prometheus/untyped.go
new file mode 100644 (file)
index 0000000..89b86ea
--- /dev/null
@@ -0,0 +1,142 @@
+// Copyright 2014 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package prometheus
+
+// Untyped is a Metric that represents a single numerical value that can
+// arbitrarily go up and down.
+//
+// An Untyped metric works the same as a Gauge. The only difference is that to
+// no type information is implied.
+//
+// To create Untyped instances, use NewUntyped.
+type Untyped interface {
+       Metric
+       Collector
+
+       // Set sets the Untyped metric to an arbitrary value.
+       Set(float64)
+       // Inc increments the Untyped metric by 1.
+       Inc()
+       // Dec decrements the Untyped metric by 1.
+       Dec()
+       // Add adds the given value to the Untyped metric. (The value can be
+       // negative, resulting in a decrease.)
+       Add(float64)
+       // Sub subtracts the given value from the Untyped metric. (The value can
+       // be negative, resulting in an increase.)
+       Sub(float64)
+}
+
+// UntypedOpts is an alias for Opts. See there for doc comments.
+type UntypedOpts Opts
+
+// NewUntyped creates a new Untyped metric from the provided UntypedOpts.
+func NewUntyped(opts UntypedOpts) Untyped {
+       return newValue(NewDesc(
+               BuildFQName(opts.Namespace, opts.Subsystem, opts.Name),
+               opts.Help,
+               nil,
+               opts.ConstLabels,
+       ), UntypedValue, 0)
+}
+
+// UntypedVec is a Collector that bundles a set of Untyped metrics that all
+// share the same Desc, but have different values for their variable
+// labels. This is used if you want to count the same thing partitioned by
+// various dimensions. Create instances with NewUntypedVec.
+type UntypedVec struct {
+       MetricVec
+}
+
+// NewUntypedVec creates a new UntypedVec based on the provided UntypedOpts and
+// partitioned by the given label names. At least one label name must be
+// provided.
+func NewUntypedVec(opts UntypedOpts, labelNames []string) *UntypedVec {
+       desc := NewDesc(
+               BuildFQName(opts.Namespace, opts.Subsystem, opts.Name),
+               opts.Help,
+               labelNames,
+               opts.ConstLabels,
+       )
+       return &UntypedVec{
+               MetricVec: MetricVec{
+                       children: map[uint64]Metric{},
+                       desc:     desc,
+                       newMetric: func(lvs ...string) Metric {
+                               return newValue(desc, UntypedValue, 0, lvs...)
+                       },
+               },
+       }
+}
+
+// GetMetricWithLabelValues replaces the method of the same name in
+// MetricVec. The difference is that this method returns an Untyped and not a
+// Metric so that no type conversion is required.
+func (m *UntypedVec) GetMetricWithLabelValues(lvs ...string) (Untyped, error) {
+       metric, err := m.MetricVec.GetMetricWithLabelValues(lvs...)
+       if metric != nil {
+               return metric.(Untyped), err
+       }
+       return nil, err
+}
+
+// GetMetricWith replaces the method of the same name in MetricVec. The
+// difference is that this method returns an Untyped and not a Metric so that no
+// type conversion is required.
+func (m *UntypedVec) GetMetricWith(labels Labels) (Untyped, error) {
+       metric, err := m.MetricVec.GetMetricWith(labels)
+       if metric != nil {
+               return metric.(Untyped), err
+       }
+       return nil, err
+}
+
+// WithLabelValues works as GetMetricWithLabelValues, but panics where
+// GetMetricWithLabelValues would have returned an error. By not returning an
+// error, WithLabelValues allows shortcuts like
+//     myVec.WithLabelValues("404", "GET").Add(42)
+func (m *UntypedVec) WithLabelValues(lvs ...string) Untyped {
+       return m.MetricVec.WithLabelValues(lvs...).(Untyped)
+}
+
+// With works as GetMetricWith, but panics where GetMetricWithLabels would have
+// returned an error. By not returning an error, With allows shortcuts like
+//     myVec.With(Labels{"code": "404", "method": "GET"}).Add(42)
+func (m *UntypedVec) With(labels Labels) Untyped {
+       return m.MetricVec.With(labels).(Untyped)
+}
+
+// UntypedFunc is an Untyped whose value is determined at collect time by
+// calling a provided function.
+//
+// To create UntypedFunc instances, use NewUntypedFunc.
+type UntypedFunc interface {
+       Metric
+       Collector
+}
+
+// NewUntypedFunc creates a new UntypedFunc based on the provided
+// UntypedOpts. The value reported is determined by calling the given function
+// from within the Write method. Take into account that metric collection may
+// happen concurrently. If that results in concurrent calls to Write, like in
+// the case where an UntypedFunc is directly registered with Prometheus, the
+// provided function must be concurrency-safe.
+func NewUntypedFunc(opts UntypedOpts, function func() float64) UntypedFunc {
+       return newValueFunc(NewDesc(
+               BuildFQName(opts.Namespace, opts.Subsystem, opts.Name),
+               opts.Help,
+               nil,
+               opts.ConstLabels,
+       ), UntypedValue, function)
+}
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/value.go b/vendor/github.com/prometheus/client_golang/prometheus/value.go
new file mode 100644 (file)
index 0000000..b54ac11
--- /dev/null
@@ -0,0 +1,234 @@
+// Copyright 2014 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package prometheus
+
+import (
+       "errors"
+       "fmt"
+       "math"
+       "sort"
+       "sync/atomic"
+
+       dto "github.com/prometheus/client_model/go"
+
+       "github.com/golang/protobuf/proto"
+)
+
+// ValueType is an enumeration of metric types that represent a simple value.
+type ValueType int
+
+// Possible values for the ValueType enum.
+const (
+       _ ValueType = iota
+       CounterValue
+       GaugeValue
+       UntypedValue
+)
+
+var errInconsistentCardinality = errors.New("inconsistent label cardinality")
+
+// value is a generic metric for simple values. It implements Metric, Collector,
+// Counter, Gauge, and Untyped. Its effective type is determined by
+// ValueType. This is a low-level building block used by the library to back the
+// implementations of Counter, Gauge, and Untyped.
+type value struct {
+       // valBits containst the bits of the represented float64 value. It has
+       // to go first in the struct to guarantee alignment for atomic
+       // operations.  http://golang.org/pkg/sync/atomic/#pkg-note-BUG
+       valBits uint64
+
+       SelfCollector
+
+       desc       *Desc
+       valType    ValueType
+       labelPairs []*dto.LabelPair
+}
+
+// newValue returns a newly allocated value with the given Desc, ValueType,
+// sample value and label values. It panics if the number of label
+// values is different from the number of variable labels in Desc.
+func newValue(desc *Desc, valueType ValueType, val float64, labelValues ...string) *value {
+       if len(labelValues) != len(desc.variableLabels) {
+               panic(errInconsistentCardinality)
+       }
+       result := &value{
+               desc:       desc,
+               valType:    valueType,
+               valBits:    math.Float64bits(val),
+               labelPairs: makeLabelPairs(desc, labelValues),
+       }
+       result.Init(result)
+       return result
+}
+
+func (v *value) Desc() *Desc {
+       return v.desc
+}
+
+func (v *value) Set(val float64) {
+       atomic.StoreUint64(&v.valBits, math.Float64bits(val))
+}
+
+func (v *value) Inc() {
+       v.Add(1)
+}
+
+func (v *value) Dec() {
+       v.Add(-1)
+}
+
+func (v *value) Add(val float64) {
+       for {
+               oldBits := atomic.LoadUint64(&v.valBits)
+               newBits := math.Float64bits(math.Float64frombits(oldBits) + val)
+               if atomic.CompareAndSwapUint64(&v.valBits, oldBits, newBits) {
+                       return
+               }
+       }
+}
+
+func (v *value) Sub(val float64) {
+       v.Add(val * -1)
+}
+
+func (v *value) Write(out *dto.Metric) error {
+       val := math.Float64frombits(atomic.LoadUint64(&v.valBits))
+       return populateMetric(v.valType, val, v.labelPairs, out)
+}
+
+// valueFunc is a generic metric for simple values retrieved on collect time
+// from a function. It implements Metric and Collector. Its effective type is
+// determined by ValueType. This is a low-level building block used by the
+// library to back the implementations of CounterFunc, GaugeFunc, and
+// UntypedFunc.
+type valueFunc struct {
+       SelfCollector
+
+       desc       *Desc
+       valType    ValueType
+       function   func() float64
+       labelPairs []*dto.LabelPair
+}
+
+// newValueFunc returns a newly allocated valueFunc with the given Desc and
+// ValueType. The value reported is determined by calling the given function
+// from within the Write method. Take into account that metric collection may
+// happen concurrently. If that results in concurrent calls to Write, like in
+// the case where a valueFunc is directly registered with Prometheus, the
+// provided function must be concurrency-safe.
+func newValueFunc(desc *Desc, valueType ValueType, function func() float64) *valueFunc {
+       result := &valueFunc{
+               desc:       desc,
+               valType:    valueType,
+               function:   function,
+               labelPairs: makeLabelPairs(desc, nil),
+       }
+       result.Init(result)
+       return result
+}
+
+func (v *valueFunc) Desc() *Desc {
+       return v.desc
+}
+
+func (v *valueFunc) Write(out *dto.Metric) error {
+       return populateMetric(v.valType, v.function(), v.labelPairs, out)
+}
+
+// NewConstMetric returns a metric with one fixed value that cannot be
+// changed. Users of this package will not have much use for it in regular
+// operations. However, when implementing custom Collectors, it is useful as a
+// throw-away metric that is generated on the fly to send it to Prometheus in
+// the Collect method. NewConstMetric returns an error if the length of
+// labelValues is not consistent with the variable labels in Desc.
+func NewConstMetric(desc *Desc, valueType ValueType, value float64, labelValues ...string) (Metric, error) {
+       if len(desc.variableLabels) != len(labelValues) {
+               return nil, errInconsistentCardinality
+       }
+       return &constMetric{
+               desc:       desc,
+               valType:    valueType,
+               val:        value,
+               labelPairs: makeLabelPairs(desc, labelValues),
+       }, nil
+}
+
+// MustNewConstMetric is a version of NewConstMetric that panics where
+// NewConstMetric would have returned an error.
+func MustNewConstMetric(desc *Desc, valueType ValueType, value float64, labelValues ...string) Metric {
+       m, err := NewConstMetric(desc, valueType, value, labelValues...)
+       if err != nil {
+               panic(err)
+       }
+       return m
+}
+
+type constMetric struct {
+       desc       *Desc
+       valType    ValueType
+       val        float64
+       labelPairs []*dto.LabelPair
+}
+
+func (m *constMetric) Desc() *Desc {
+       return m.desc
+}
+
+func (m *constMetric) Write(out *dto.Metric) error {
+       return populateMetric(m.valType, m.val, m.labelPairs, out)
+}
+
+func populateMetric(
+       t ValueType,
+       v float64,
+       labelPairs []*dto.LabelPair,
+       m *dto.Metric,
+) error {
+       m.Label = labelPairs
+       switch t {
+       case CounterValue:
+               m.Counter = &dto.Counter{Value: proto.Float64(v)}
+       case GaugeValue:
+               m.Gauge = &dto.Gauge{Value: proto.Float64(v)}
+       case UntypedValue:
+               m.Untyped = &dto.Untyped{Value: proto.Float64(v)}
+       default:
+               return fmt.Errorf("encountered unknown type %v", t)
+       }
+       return nil
+}
+
+func makeLabelPairs(desc *Desc, labelValues []string) []*dto.LabelPair {
+       totalLen := len(desc.variableLabels) + len(desc.constLabelPairs)
+       if totalLen == 0 {
+               // Super fast path.
+               return nil
+       }
+       if len(desc.variableLabels) == 0 {
+               // Moderately fast path.
+               return desc.constLabelPairs
+       }
+       labelPairs := make([]*dto.LabelPair, 0, totalLen)
+       for i, n := range desc.variableLabels {
+               labelPairs = append(labelPairs, &dto.LabelPair{
+                       Name:  proto.String(n),
+                       Value: proto.String(labelValues[i]),
+               })
+       }
+       for _, lp := range desc.constLabelPairs {
+               labelPairs = append(labelPairs, lp)
+       }
+       sort.Sort(LabelPairSorter(labelPairs))
+       return labelPairs
+}
diff --git a/vendor/github.com/prometheus/client_golang/prometheus/vec.go b/vendor/github.com/prometheus/client_golang/prometheus/vec.go
new file mode 100644 (file)
index 0000000..68f9461
--- /dev/null
@@ -0,0 +1,249 @@
+// Copyright 2014 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package prometheus
+
+import (
+       "fmt"
+       "sync"
+)
+
+// MetricVec is a Collector to bundle metrics of the same name that
+// differ in their label values. MetricVec is usually not used directly but as a
+// building block for implementations of vectors of a given metric
+// type. GaugeVec, CounterVec, SummaryVec, and UntypedVec are examples already
+// provided in this package.
+type MetricVec struct {
+       mtx      sync.RWMutex // Protects the children.
+       children map[uint64]Metric
+       desc     *Desc
+
+       newMetric func(labelValues ...string) Metric
+}
+
+// Describe implements Collector. The length of the returned slice
+// is always one.
+func (m *MetricVec) Describe(ch chan<- *Desc) {
+       ch <- m.desc
+}
+
+// Collect implements Collector.
+func (m *MetricVec) Collect(ch chan<- Metric) {
+       m.mtx.RLock()
+       defer m.mtx.RUnlock()
+
+       for _, metric := range m.children {
+               ch <- metric
+       }
+}
+
+// GetMetricWithLabelValues returns the Metric for the given slice of label
+// values (same order as the VariableLabels in Desc). If that combination of
+// label values is accessed for the first time, a new Metric is created.
+//
+// It is possible to call this method without using the returned Metric to only
+// create the new Metric but leave it at its start value (e.g. a Summary or
+// Histogram without any observations). See also the SummaryVec example.
+//
+// Keeping the Metric for later use is possible (and should be considered if
+// performance is critical), but keep in mind that Reset, DeleteLabelValues and
+// Delete can be used to delete the Metric from the MetricVec. In that case, the
+// Metric will still exist, but it will not be exported anymore, even if a
+// Metric with the same label values is created later. See also the CounterVec
+// example.
+//
+// An error is returned if the number of label values is not the same as the
+// number of VariableLabels in Desc.
+//
+// Note that for more than one label value, this method is prone to mistakes
+// caused by an incorrect order of arguments. Consider GetMetricWith(Labels) as
+// an alternative to avoid that type of mistake. For higher label numbers, the
+// latter has a much more readable (albeit more verbose) syntax, but it comes
+// with a performance overhead (for creating and processing the Labels map).
+// See also the GaugeVec example.
+func (m *MetricVec) GetMetricWithLabelValues(lvs ...string) (Metric, error) {
+       h, err := m.hashLabelValues(lvs)
+       if err != nil {
+               return nil, err
+       }
+
+       m.mtx.RLock()
+       metric, ok := m.children[h]
+       m.mtx.RUnlock()
+       if ok {
+               return metric, nil
+       }
+
+       m.mtx.Lock()
+       defer m.mtx.Unlock()
+       return m.getOrCreateMetric(h, lvs...), nil
+}
+
+// GetMetricWith returns the Metric for the given Labels map (the label names
+// must match those of the VariableLabels in Desc). If that label map is
+// accessed for the first time, a new Metric is created. Implications of
+// creating a Metric without using it and keeping the Metric for later use are
+// the same as for GetMetricWithLabelValues.
+//
+// An error is returned if the number and names of the Labels are inconsistent
+// with those of the VariableLabels in Desc.
+//
+// This method is used for the same purpose as
+// GetMetricWithLabelValues(...string). See there for pros and cons of the two
+// methods.
+func (m *MetricVec) GetMetricWith(labels Labels) (Metric, error) {
+       h, err := m.hashLabels(labels)
+       if err != nil {
+               return nil, err
+       }
+
+       m.mtx.RLock()
+       metric, ok := m.children[h]
+       m.mtx.RUnlock()
+       if ok {
+               return metric, nil
+       }
+
+       lvs := make([]string, len(labels))
+       for i, label := range m.desc.variableLabels {
+               lvs[i] = labels[label]
+       }
+       m.mtx.Lock()
+       defer m.mtx.Unlock()
+       return m.getOrCreateMetric(h, lvs...), nil
+}
+
+// WithLabelValues works as GetMetricWithLabelValues, but panics if an error
+// occurs. The method allows neat syntax like:
+//     httpReqs.WithLabelValues("404", "POST").Inc()
+func (m *MetricVec) WithLabelValues(lvs ...string) Metric {
+       metric, err := m.GetMetricWithLabelValues(lvs...)
+       if err != nil {
+               panic(err)
+       }
+       return metric
+}
+
+// With works as GetMetricWith, but panics if an error occurs. The method allows
+// neat syntax like:
+//     httpReqs.With(Labels{"status":"404", "method":"POST"}).Inc()
+func (m *MetricVec) With(labels Labels) Metric {
+       metric, err := m.GetMetricWith(labels)
+       if err != nil {
+               panic(err)
+       }
+       return metric
+}
+
+// DeleteLabelValues removes the metric where the variable labels are the same
+// as those passed in as labels (same order as the VariableLabels in Desc). It
+// returns true if a metric was deleted.
+//
+// It is not an error if the number of label values is not the same as the
+// number of VariableLabels in Desc.  However, such inconsistent label count can
+// never match an actual Metric, so the method will always return false in that
+// case.
+//
+// Note that for more than one label value, this method is prone to mistakes
+// caused by an incorrect order of arguments. Consider Delete(Labels) as an
+// alternative to avoid that type of mistake. For higher label numbers, the
+// latter has a much more readable (albeit more verbose) syntax, but it comes
+// with a performance overhead (for creating and processing the Labels map).
+// See also the CounterVec example.
+func (m *MetricVec) DeleteLabelValues(lvs ...string) bool {
+       m.mtx.Lock()
+       defer m.mtx.Unlock()
+
+       h, err := m.hashLabelValues(lvs)
+       if err != nil {
+               return false
+       }
+       if _, ok := m.children[h]; !ok {
+               return false
+       }
+       delete(m.children, h)
+       return true
+}
+
+// Delete deletes the metric where the variable labels are the same as those
+// passed in as labels. It returns true if a metric was deleted.
+//
+// It is not an error if the number and names of the Labels are inconsistent
+// with those of the VariableLabels in the Desc of the MetricVec. However, such
+// inconsistent Labels can never match an actual Metric, so the method will
+// always return false in that case.
+//
+// This method is used for the same purpose as DeleteLabelValues(...string). See
+// there for pros and cons of the two methods.
+func (m *MetricVec) Delete(labels Labels) bool {
+       m.mtx.Lock()
+       defer m.mtx.Unlock()
+
+       h, err := m.hashLabels(labels)
+       if err != nil {
+               return false
+       }
+       if _, ok := m.children[h]; !ok {
+               return false
+       }
+       delete(m.children, h)
+       return true
+}
+
+// Reset deletes all metrics in this vector.
+func (m *MetricVec) Reset() {
+       m.mtx.Lock()
+       defer m.mtx.Unlock()
+
+       for h := range m.children {
+               delete(m.children, h)
+       }
+}
+
+func (m *MetricVec) hashLabelValues(vals []string) (uint64, error) {
+       if len(vals) != len(m.desc.variableLabels) {
+               return 0, errInconsistentCardinality
+       }
+       h := hashNew()
+       for _, val := range vals {
+               h = hashAdd(h, val)
+       }
+       return h, nil
+}
+
+func (m *MetricVec) hashLabels(labels Labels) (uint64, error) {
+       if len(labels) != len(m.desc.variableLabels) {
+               return 0, errInconsistentCardinality
+       }
+       h := hashNew()
+       for _, label := range m.desc.variableLabels {
+               val, ok := labels[label]
+               if !ok {
+                       return 0, fmt.Errorf("label name %q missing in label map", label)
+               }
+               h = hashAdd(h, val)
+       }
+       return h, nil
+}
+
+func (m *MetricVec) getOrCreateMetric(hash uint64, labelValues ...string) Metric {
+       metric, ok := m.children[hash]
+       if !ok {
+               // Copy labelValues. Otherwise, they would be allocated even if we don't go
+               // down this code path.
+               copiedLabelValues := append(make([]string, 0, len(labelValues)), labelValues...)
+               metric = m.newMetric(copiedLabelValues...)
+               m.children[hash] = metric
+       }
+       return metric
+}
diff --git a/vendor/github.com/prometheus/client_model/LICENSE b/vendor/github.com/prometheus/client_model/LICENSE
new file mode 100644 (file)
index 0000000..261eeb9
--- /dev/null
@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/vendor/github.com/prometheus/client_model/NOTICE b/vendor/github.com/prometheus/client_model/NOTICE
new file mode 100644 (file)
index 0000000..20110e4
--- /dev/null
@@ -0,0 +1,5 @@
+Data model artifacts for Prometheus.
+Copyright 2012-2015 The Prometheus Authors
+
+This product includes software developed at
+SoundCloud Ltd. (http://soundcloud.com/).
diff --git a/vendor/github.com/prometheus/client_model/go/metrics.pb.go b/vendor/github.com/prometheus/client_model/go/metrics.pb.go
new file mode 100644 (file)
index 0000000..b065f86
--- /dev/null
@@ -0,0 +1,364 @@
+// Code generated by protoc-gen-go.
+// source: metrics.proto
+// DO NOT EDIT!
+
+/*
+Package io_prometheus_client is a generated protocol buffer package.
+
+It is generated from these files:
+       metrics.proto
+
+It has these top-level messages:
+       LabelPair
+       Gauge
+       Counter
+       Quantile
+       Summary
+       Untyped
+       Histogram
+       Bucket
+       Metric
+       MetricFamily
+*/
+package io_prometheus_client
+
+import proto "github.com/golang/protobuf/proto"
+import math "math"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = math.Inf
+
+type MetricType int32
+
+const (
+       MetricType_COUNTER   MetricType = 0
+       MetricType_GAUGE     MetricType = 1
+       MetricType_SUMMARY   MetricType = 2
+       MetricType_UNTYPED   MetricType = 3
+       MetricType_HISTOGRAM MetricType = 4
+)
+
+var MetricType_name = map[int32]string{
+       0: "COUNTER",
+       1: "GAUGE",
+       2: "SUMMARY",
+       3: "UNTYPED",
+       4: "HISTOGRAM",
+}
+var MetricType_value = map[string]int32{
+       "COUNTER":   0,
+       "GAUGE":     1,
+       "SUMMARY":   2,
+       "UNTYPED":   3,
+       "HISTOGRAM": 4,
+}
+
+func (x MetricType) Enum() *MetricType {
+       p := new(MetricType)
+       *p = x
+       return p
+}
+func (x MetricType) String() string {
+       return proto.EnumName(MetricType_name, int32(x))
+}
+func (x *MetricType) UnmarshalJSON(data []byte) error {
+       value, err := proto.UnmarshalJSONEnum(MetricType_value, data, "MetricType")
+       if err != nil {
+               return err
+       }
+       *x = MetricType(value)
+       return nil
+}
+
+type LabelPair struct {
+       Name             *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+       Value            *string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
+       XXX_unrecognized []byte  `json:"-"`
+}
+
+func (m *LabelPair) Reset()         { *m = LabelPair{} }
+func (m *LabelPair) String() string { return proto.CompactTextString(m) }
+func (*LabelPair) ProtoMessage()    {}
+
+func (m *LabelPair) GetName() string {
+       if m != nil && m.Name != nil {
+               return *m.Name
+       }
+       return ""
+}
+
+func (m *LabelPair) GetValue() string {
+       if m != nil && m.Value != nil {
+               return *m.Value
+       }
+       return ""
+}
+
+type Gauge struct {
+       Value            *float64 `protobuf:"fixed64,1,opt,name=value" json:"value,omitempty"`
+       XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Gauge) Reset()         { *m = Gauge{} }
+func (m *Gauge) String() string { return proto.CompactTextString(m) }
+func (*Gauge) ProtoMessage()    {}
+
+func (m *Gauge) GetValue() float64 {
+       if m != nil && m.Value != nil {
+               return *m.Value
+       }
+       return 0
+}
+
+type Counter struct {
+       Value            *float64 `protobuf:"fixed64,1,opt,name=value" json:"value,omitempty"`
+       XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Counter) Reset()         { *m = Counter{} }
+func (m *Counter) String() string { return proto.CompactTextString(m) }
+func (*Counter) ProtoMessage()    {}
+
+func (m *Counter) GetValue() float64 {
+       if m != nil && m.Value != nil {
+               return *m.Value
+       }
+       return 0
+}
+
+type Quantile struct {
+       Quantile         *float64 `protobuf:"fixed64,1,opt,name=quantile" json:"quantile,omitempty"`
+       Value            *float64 `protobuf:"fixed64,2,opt,name=value" json:"value,omitempty"`
+       XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Quantile) Reset()         { *m = Quantile{} }
+func (m *Quantile) String() string { return proto.CompactTextString(m) }
+func (*Quantile) ProtoMessage()    {}
+
+func (m *Quantile) GetQuantile() float64 {
+       if m != nil && m.Quantile != nil {
+               return *m.Quantile
+       }
+       return 0
+}
+
+func (m *Quantile) GetValue() float64 {
+       if m != nil && m.Value != nil {
+               return *m.Value
+       }
+       return 0
+}
+
+type Summary struct {
+       SampleCount      *uint64     `protobuf:"varint,1,opt,name=sample_count" json:"sample_count,omitempty"`
+       SampleSum        *float64    `protobuf:"fixed64,2,opt,name=sample_sum" json:"sample_sum,omitempty"`
+       Quantile         []*Quantile `protobuf:"bytes,3,rep,name=quantile" json:"quantile,omitempty"`
+       XXX_unrecognized []byte      `json:"-"`
+}
+
+func (m *Summary) Reset()         { *m = Summary{} }
+func (m *Summary) String() string { return proto.CompactTextString(m) }
+func (*Summary) ProtoMessage()    {}
+
+func (m *Summary) GetSampleCount() uint64 {
+       if m != nil && m.SampleCount != nil {
+               return *m.SampleCount
+       }
+       return 0
+}
+
+func (m *Summary) GetSampleSum() float64 {
+       if m != nil && m.SampleSum != nil {
+               return *m.SampleSum
+       }
+       return 0
+}
+
+func (m *Summary) GetQuantile() []*Quantile {
+       if m != nil {
+               return m.Quantile
+       }
+       return nil
+}
+
+type Untyped struct {
+       Value            *float64 `protobuf:"fixed64,1,opt,name=value" json:"value,omitempty"`
+       XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Untyped) Reset()         { *m = Untyped{} }
+func (m *Untyped) String() string { return proto.CompactTextString(m) }
+func (*Untyped) ProtoMessage()    {}
+
+func (m *Untyped) GetValue() float64 {
+       if m != nil && m.Value != nil {
+               return *m.Value
+       }
+       return 0
+}
+
+type Histogram struct {
+       SampleCount      *uint64   `protobuf:"varint,1,opt,name=sample_count" json:"sample_count,omitempty"`
+       SampleSum        *float64  `protobuf:"fixed64,2,opt,name=sample_sum" json:"sample_sum,omitempty"`
+       Bucket           []*Bucket `protobuf:"bytes,3,rep,name=bucket" json:"bucket,omitempty"`
+       XXX_unrecognized []byte    `json:"-"`
+}
+
+func (m *Histogram) Reset()         { *m = Histogram{} }
+func (m *Histogram) String() string { return proto.CompactTextString(m) }
+func (*Histogram) ProtoMessage()    {}
+
+func (m *Histogram) GetSampleCount() uint64 {
+       if m != nil && m.SampleCount != nil {
+               return *m.SampleCount
+       }
+       return 0
+}
+
+func (m *Histogram) GetSampleSum() float64 {
+       if m != nil && m.SampleSum != nil {
+               return *m.SampleSum
+       }
+       return 0
+}
+
+func (m *Histogram) GetBucket() []*Bucket {
+       if m != nil {
+               return m.Bucket
+       }
+       return nil
+}
+
+type Bucket struct {
+       CumulativeCount  *uint64  `protobuf:"varint,1,opt,name=cumulative_count" json:"cumulative_count,omitempty"`
+       UpperBound       *float64 `protobuf:"fixed64,2,opt,name=upper_bound" json:"upper_bound,omitempty"`
+       XXX_unrecognized []byte   `json:"-"`
+}
+
+func (m *Bucket) Reset()         { *m = Bucket{} }
+func (m *Bucket) String() string { return proto.CompactTextString(m) }
+func (*Bucket) ProtoMessage()    {}
+
+func (m *Bucket) GetCumulativeCount() uint64 {
+       if m != nil && m.CumulativeCount != nil {
+               return *m.CumulativeCount
+       }
+       return 0
+}
+
+func (m *Bucket) GetUpperBound() float64 {
+       if m != nil && m.UpperBound != nil {
+               return *m.UpperBound
+       }
+       return 0
+}
+
+type Metric struct {
+       Label            []*LabelPair `protobuf:"bytes,1,rep,name=label" json:"label,omitempty"`
+       Gauge            *Gauge       `protobuf:"bytes,2,opt,name=gauge" json:"gauge,omitempty"`
+       Counter          *Counter     `protobuf:"bytes,3,opt,name=counter" json:"counter,omitempty"`
+       Summary          *Summary     `protobuf:"bytes,4,opt,name=summary" json:"summary,omitempty"`
+       Untyped          *Untyped     `protobuf:"bytes,5,opt,name=untyped" json:"untyped,omitempty"`
+       Histogram        *Histogram   `protobuf:"bytes,7,opt,name=histogram" json:"histogram,omitempty"`
+       TimestampMs      *int64       `protobuf:"varint,6,opt,name=timestamp_ms" json:"timestamp_ms,omitempty"`
+       XXX_unrecognized []byte       `json:"-"`
+}
+
+func (m *Metric) Reset()         { *m = Metric{} }
+func (m *Metric) String() string { return proto.CompactTextString(m) }
+func (*Metric) ProtoMessage()    {}
+
+func (m *Metric) GetLabel() []*LabelPair {
+       if m != nil {
+               return m.Label
+       }
+       return nil
+}
+
+func (m *Metric) GetGauge() *Gauge {
+       if m != nil {
+               return m.Gauge
+       }
+       return nil
+}
+
+func (m *Metric) GetCounter() *Counter {
+       if m != nil {
+               return m.Counter
+       }
+       return nil
+}
+
+func (m *Metric) GetSummary() *Summary {
+       if m != nil {
+               return m.Summary
+       }
+       return nil
+}
+
+func (m *Metric) GetUntyped() *Untyped {
+       if m != nil {
+               return m.Untyped
+       }
+       return nil
+}
+
+func (m *Metric) GetHistogram() *Histogram {
+       if m != nil {
+               return m.Histogram
+       }
+       return nil
+}
+
+func (m *Metric) GetTimestampMs() int64 {
+       if m != nil && m.TimestampMs != nil {
+               return *m.TimestampMs
+       }
+       return 0
+}
+
+type MetricFamily struct {
+       Name             *string     `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+       Help             *string     `protobuf:"bytes,2,opt,name=help" json:"help,omitempty"`
+       Type             *MetricType `protobuf:"varint,3,opt,name=type,enum=io.prometheus.client.MetricType" json:"type,omitempty"`
+       Metric           []*Metric   `protobuf:"bytes,4,rep,name=metric" json:"metric,omitempty"`
+       XXX_unrecognized []byte      `json:"-"`
+}
+
+func (m *MetricFamily) Reset()         { *m = MetricFamily{} }
+func (m *MetricFamily) String() string { return proto.CompactTextString(m) }
+func (*MetricFamily) ProtoMessage()    {}
+
+func (m *MetricFamily) GetName() string {
+       if m != nil && m.Name != nil {
+               return *m.Name
+       }
+       return ""
+}
+
+func (m *MetricFamily) GetHelp() string {
+       if m != nil && m.Help != nil {
+               return *m.Help
+       }
+       return ""
+}
+
+func (m *MetricFamily) GetType() MetricType {
+       if m != nil && m.Type != nil {
+               return *m.Type
+       }
+       return MetricType_COUNTER
+}
+
+func (m *MetricFamily) GetMetric() []*Metric {
+       if m != nil {
+               return m.Metric
+       }
+       return nil
+}
+
+func init() {
+       proto.RegisterEnum("io.prometheus.client.MetricType", MetricType_name, MetricType_value)
+}
diff --git a/vendor/github.com/prometheus/common/LICENSE b/vendor/github.com/prometheus/common/LICENSE
new file mode 100644 (file)
index 0000000..261eeb9
--- /dev/null
@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/vendor/github.com/prometheus/common/NOTICE b/vendor/github.com/prometheus/common/NOTICE
new file mode 100644 (file)
index 0000000..636a2c1
--- /dev/null
@@ -0,0 +1,5 @@
+Common libraries shared by Prometheus Go components.
+Copyright 2015 The Prometheus Authors
+
+This product includes software developed at
+SoundCloud Ltd. (http://soundcloud.com/).
diff --git a/vendor/github.com/prometheus/common/config/config.go b/vendor/github.com/prometheus/common/config/config.go
new file mode 100644 (file)
index 0000000..33eb922
--- /dev/null
@@ -0,0 +1,30 @@
+// Copyright 2016 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package config
+
+import (
+       "fmt"
+       "strings"
+)
+
+func checkOverflow(m map[string]interface{}, ctx string) error {
+       if len(m) > 0 {
+               var keys []string
+               for k := range m {
+                       keys = append(keys, k)
+               }
+               return fmt.Errorf("unknown fields in %s: %s", ctx, strings.Join(keys, ", "))
+       }
+       return nil
+}
diff --git a/vendor/github.com/prometheus/common/config/tls_config.go b/vendor/github.com/prometheus/common/config/tls_config.go
new file mode 100644 (file)
index 0000000..7c7e7cb
--- /dev/null
@@ -0,0 +1,79 @@
+// Copyright 2016 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package config
+
+import (
+       "crypto/tls"
+       "crypto/x509"
+       "fmt"
+       "io/ioutil"
+)
+
+// TLSConfig configures the options for TLS connections.
+type TLSConfig struct {
+       // The CA cert to use for the targets.
+       CAFile string `yaml:"ca_file,omitempty"`
+       // The client cert file for the targets.
+       CertFile string `yaml:"cert_file,omitempty"`
+       // The client key file for the targets.
+       KeyFile string `yaml:"key_file,omitempty"`
+       // Disable target certificate validation.
+       InsecureSkipVerify bool `yaml:"insecure_skip_verify"`
+
+       // Catches all undefined fields and must be empty after parsing.
+       XXX map[string]interface{} `yaml:",inline"`
+}
+
+// UnmarshalYAML implements the yaml.Unmarshaler interface.
+func (c *TLSConfig) UnmarshalYAML(unmarshal func(interface{}) error) error {
+       type plain TLSConfig
+       if err := unmarshal((*plain)(c)); err != nil {
+               return err
+       }
+       return checkOverflow(c.XXX, "TLS config")
+}
+
+// GenerateConfig produces a tls.Config based on TLS connection options.
+// It loads certificate files from disk if they are defined.
+func (c *TLSConfig) GenerateConfig() (*tls.Config, error) {
+       tlsConfig := &tls.Config{InsecureSkipVerify: c.InsecureSkipVerify}
+
+       // If a CA cert is provided then let's read it in so we can validate the
+       // scrape target's certificate properly.
+       if len(c.CAFile) > 0 {
+               caCertPool := x509.NewCertPool()
+               // Load CA cert.
+               caCert, err := ioutil.ReadFile(c.CAFile)
+               if err != nil {
+                       return nil, fmt.Errorf("unable to use specified CA cert %s: %s", c.CAFile, err)
+               }
+               caCertPool.AppendCertsFromPEM(caCert)
+               tlsConfig.RootCAs = caCertPool
+       }
+
+       if len(c.CertFile) > 0 && len(c.KeyFile) == 0 {
+               return nil, fmt.Errorf("client cert file %q specified without client key file", c.CertFile)
+       } else if len(c.KeyFile) > 0 && len(c.CertFile) == 0 {
+               return nil, fmt.Errorf("client key file %q specified without client cert file", c.KeyFile)
+       } else if len(c.CertFile) > 0 && len(c.KeyFile) > 0 {
+               cert, err := tls.LoadX509KeyPair(c.CertFile, c.KeyFile)
+               if err != nil {
+                       return nil, fmt.Errorf("unable to use specified client cert (%s) & key (%s): %s", c.CertFile, c.KeyFile, err)
+               }
+               tlsConfig.Certificates = []tls.Certificate{cert}
+       }
+       tlsConfig.BuildNameToCertificate()
+
+       return tlsConfig, nil
+}
diff --git a/vendor/github.com/prometheus/common/expfmt/decode.go b/vendor/github.com/prometheus/common/expfmt/decode.go
new file mode 100644 (file)
index 0000000..a98696d
--- /dev/null
@@ -0,0 +1,433 @@
+// Copyright 2015 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package expfmt
+
+import (
+       "fmt"
+       "io"
+       "math"
+       "mime"
+       "net/http"
+
+       dto "github.com/prometheus/client_model/go"
+
+       "github.com/matttproud/golang_protobuf_extensions/pbutil"
+       "github.com/prometheus/common/model"
+)
+
+// Decoder types decode an input stream into metric families.
+type Decoder interface {
+       Decode(*dto.MetricFamily) error
+}
+
+type DecodeOptions struct {
+       // Timestamp is added to each value from the stream that has no explicit timestamp set.
+       Timestamp model.Time
+}
+
+// ResponseFormat extracts the correct format from a HTTP response header.
+// If no matching format can be found FormatUnknown is returned.
+func ResponseFormat(h http.Header) Format {
+       ct := h.Get(hdrContentType)
+
+       mediatype, params, err := mime.ParseMediaType(ct)
+       if err != nil {
+               return FmtUnknown
+       }
+
+       const (
+               textType = "text/plain"
+               jsonType = "application/json"
+       )
+
+       switch mediatype {
+       case ProtoType:
+               if p, ok := params["proto"]; ok && p != ProtoProtocol {
+                       return FmtUnknown
+               }
+               if e, ok := params["encoding"]; ok && e != "delimited" {
+                       return FmtUnknown
+               }
+               return FmtProtoDelim
+
+       case textType:
+               if v, ok := params["version"]; ok && v != TextVersion {
+                       return FmtUnknown
+               }
+               return FmtText
+
+       case jsonType:
+               var prometheusAPIVersion string
+
+               if params["schema"] == "prometheus/telemetry" && params["version"] != "" {
+                       prometheusAPIVersion = params["version"]
+               } else {
+                       prometheusAPIVersion = h.Get("X-Prometheus-API-Version")
+               }
+
+               switch prometheusAPIVersion {
+               case "0.0.2", "":
+                       return fmtJSON2
+               default:
+                       return FmtUnknown
+               }
+       }
+
+       return FmtUnknown
+}
+
+// NewDecoder returns a new decoder based on the given input format.
+// If the input format does not imply otherwise, a text format decoder is returned.
+func NewDecoder(r io.Reader, format Format) Decoder {
+       switch format {
+       case FmtProtoDelim:
+               return &protoDecoder{r: r}
+       case fmtJSON2:
+               return newJSON2Decoder(r)
+       }
+       return &textDecoder{r: r}
+}
+
+// protoDecoder implements the Decoder interface for protocol buffers.
+type protoDecoder struct {
+       r io.Reader
+}
+
+// Decode implements the Decoder interface.
+func (d *protoDecoder) Decode(v *dto.MetricFamily) error {
+       _, err := pbutil.ReadDelimited(d.r, v)
+       if err != nil {
+               return err
+       }
+       if !model.IsValidMetricName(model.LabelValue(v.GetName())) {
+               return fmt.Errorf("invalid metric name %q", v.GetName())
+       }
+       for _, m := range v.GetMetric() {
+               if m == nil {
+                       continue
+               }
+               for _, l := range m.GetLabel() {
+                       if l == nil {
+                               continue
+                       }
+                       if !model.LabelValue(l.GetValue()).IsValid() {
+                               return fmt.Errorf("invalid label value %q", l.GetValue())
+                       }
+                       if !model.LabelName(l.GetName()).IsValid() {
+                               return fmt.Errorf("invalid label name %q", l.GetName())
+                       }
+               }
+       }
+       return nil
+}
+
+// textDecoder implements the Decoder interface for the text protcol.
+type textDecoder struct {
+       r    io.Reader
+       p    TextParser
+       fams []*dto.MetricFamily
+}
+
+// Decode implements the Decoder interface.
+func (d *textDecoder) Decode(v *dto.MetricFamily) error {
+       // TODO(fabxc): Wrap this as a line reader to make streaming safer.
+       if len(d.fams) == 0 {
+               // No cached metric families, read everything and parse metrics.
+               fams, err := d.p.TextToMetricFamilies(d.r)
+               if err != nil {
+                       return err
+               }
+               if len(fams) == 0 {
+                       return io.EOF
+               }
+               d.fams = make([]*dto.MetricFamily, 0, len(fams))
+               for _, f := range fams {
+                       d.fams = append(d.fams, f)
+               }
+       }
+
+       *v = *d.fams[0]
+       d.fams = d.fams[1:]
+
+       return nil
+}
+
+type SampleDecoder struct {
+       Dec  Decoder
+       Opts *DecodeOptions
+
+       f dto.MetricFamily
+}
+
+func (sd *SampleDecoder) Decode(s *model.Vector) error {
+       if err := sd.Dec.Decode(&sd.f); err != nil {
+               return err
+       }
+       *s = extractSamples(&sd.f, sd.Opts)
+       return nil
+}
+
+// Extract samples builds a slice of samples from the provided metric families.
+func ExtractSamples(o *DecodeOptions, fams ...*dto.MetricFamily) model.Vector {
+       var all model.Vector
+       for _, f := range fams {
+               all = append(all, extractSamples(f, o)...)
+       }
+       return all
+}
+
+func extractSamples(f *dto.MetricFamily, o *DecodeOptions) model.Vector {
+       switch f.GetType() {
+       case dto.MetricType_COUNTER:
+               return extractCounter(o, f)
+       case dto.MetricType_GAUGE:
+               return extractGauge(o, f)
+       case dto.MetricType_SUMMARY:
+               return extractSummary(o, f)
+       case dto.MetricType_UNTYPED:
+               return extractUntyped(o, f)
+       case dto.MetricType_HISTOGRAM:
+               return extractHistogram(o, f)
+       }
+       panic("expfmt.extractSamples: unknown metric family type")
+}
+
+func extractCounter(o *DecodeOptions, f *dto.MetricFamily) model.Vector {
+       samples := make(model.Vector, 0, len(f.Metric))
+
+       for _, m := range f.Metric {
+               if m.Counter == nil {
+                       continue
+               }
+
+               lset := make(model.LabelSet, len(m.Label)+1)
+               for _, p := range m.Label {
+                       lset[model.LabelName(p.GetName())] = model.LabelValue(p.GetValue())
+               }
+               lset[model.MetricNameLabel] = model.LabelValue(f.GetName())
+
+               smpl := &model.Sample{
+                       Metric: model.Metric(lset),
+                       Value:  model.SampleValue(m.Counter.GetValue()),
+               }
+
+               if m.TimestampMs != nil {
+                       smpl.Timestamp = model.TimeFromUnixNano(*m.TimestampMs * 1000000)
+               } else {
+                       smpl.Timestamp = o.Timestamp
+               }
+
+               samples = append(samples, smpl)
+       }
+
+       return samples
+}
+
+func extractGauge(o *DecodeOptions, f *dto.MetricFamily) model.Vector {
+       samples := make(model.Vector, 0, len(f.Metric))
+
+       for _, m := range f.Metric {
+               if m.Gauge == nil {
+                       continue
+               }
+
+               lset := make(model.LabelSet, len(m.Label)+1)
+               for _, p := range m.Label {
+                       lset[model.LabelName(p.GetName())] = model.LabelValue(p.GetValue())
+               }
+               lset[model.MetricNameLabel] = model.LabelValue(f.GetName())
+
+               smpl := &model.Sample{
+                       Metric: model.Metric(lset),
+                       Value:  model.SampleValue(m.Gauge.GetValue()),
+               }
+
+               if m.TimestampMs != nil {
+                       smpl.Timestamp = model.TimeFromUnixNano(*m.TimestampMs * 1000000)
+               } else {
+                       smpl.Timestamp = o.Timestamp
+               }
+
+               samples = append(samples, smpl)
+       }
+
+       return samples
+}
+
+func extractUntyped(o *DecodeOptions, f *dto.MetricFamily) model.Vector {
+       samples := make(model.Vector, 0, len(f.Metric))
+
+       for _, m := range f.Metric {
+               if m.Untyped == nil {
+                       continue
+               }
+
+               lset := make(model.LabelSet, len(m.Label)+1)
+               for _, p := range m.Label {
+                       lset[model.LabelName(p.GetName())] = model.LabelValue(p.GetValue())
+               }
+               lset[model.MetricNameLabel] = model.LabelValue(f.GetName())
+
+               smpl := &model.Sample{
+                       Metric: model.Metric(lset),
+                       Value:  model.SampleValue(m.Untyped.GetValue()),
+               }
+
+               if m.TimestampMs != nil {
+                       smpl.Timestamp = model.TimeFromUnixNano(*m.TimestampMs * 1000000)
+               } else {
+                       smpl.Timestamp = o.Timestamp
+               }
+
+               samples = append(samples, smpl)
+       }
+
+       return samples
+}
+
+func extractSummary(o *DecodeOptions, f *dto.MetricFamily) model.Vector {
+       samples := make(model.Vector, 0, len(f.Metric))
+
+       for _, m := range f.Metric {
+               if m.Summary == nil {
+                       continue
+               }
+
+               timestamp := o.Timestamp
+               if m.TimestampMs != nil {
+                       timestamp = model.TimeFromUnixNano(*m.TimestampMs * 1000000)
+               }
+
+               for _, q := range m.Summary.Quantile {
+                       lset := make(model.LabelSet, len(m.Label)+2)
+                       for _, p := range m.Label {
+                               lset[model.LabelName(p.GetName())] = model.LabelValue(p.GetValue())
+                       }
+                       // BUG(matt): Update other names to "quantile".
+                       lset[model.LabelName(model.QuantileLabel)] = model.LabelValue(fmt.Sprint(q.GetQuantile()))
+                       lset[model.MetricNameLabel] = model.LabelValue(f.GetName())
+
+                       samples = append(samples, &model.Sample{
+                               Metric:    model.Metric(lset),
+                               Value:     model.SampleValue(q.GetValue()),
+                               Timestamp: timestamp,
+                       })
+               }
+
+               lset := make(model.LabelSet, len(m.Label)+1)
+               for _, p := range m.Label {
+                       lset[model.LabelName(p.GetName())] = model.LabelValue(p.GetValue())
+               }
+               lset[model.MetricNameLabel] = model.LabelValue(f.GetName() + "_sum")
+
+               samples = append(samples, &model.Sample{
+                       Metric:    model.Metric(lset),
+                       Value:     model.SampleValue(m.Summary.GetSampleSum()),
+                       Timestamp: timestamp,
+               })
+
+               lset = make(model.LabelSet, len(m.Label)+1)
+               for _, p := range m.Label {
+                       lset[model.LabelName(p.GetName())] = model.LabelValue(p.GetValue())
+               }
+               lset[model.MetricNameLabel] = model.LabelValue(f.GetName() + "_count")
+
+               samples = append(samples, &model.Sample{
+                       Metric:    model.Metric(lset),
+                       Value:     model.SampleValue(m.Summary.GetSampleCount()),
+                       Timestamp: timestamp,
+               })
+       }
+
+       return samples
+}
+
+func extractHistogram(o *DecodeOptions, f *dto.MetricFamily) model.Vector {
+       samples := make(model.Vector, 0, len(f.Metric))
+
+       for _, m := range f.Metric {
+               if m.Histogram == nil {
+                       continue
+               }
+
+               timestamp := o.Timestamp
+               if m.TimestampMs != nil {
+                       timestamp = model.TimeFromUnixNano(*m.TimestampMs * 1000000)
+               }
+
+               infSeen := false
+
+               for _, q := range m.Histogram.Bucket {
+                       lset := make(model.LabelSet, len(m.Label)+2)
+                       for _, p := range m.Label {
+                               lset[model.LabelName(p.GetName())] = model.LabelValue(p.GetValue())
+                       }
+                       lset[model.LabelName(model.BucketLabel)] = model.LabelValue(fmt.Sprint(q.GetUpperBound()))
+                       lset[model.MetricNameLabel] = model.LabelValue(f.GetName() + "_bucket")
+
+                       if math.IsInf(q.GetUpperBound(), +1) {
+                               infSeen = true
+                       }
+
+                       samples = append(samples, &model.Sample{
+                               Metric:    model.Metric(lset),
+                               Value:     model.SampleValue(q.GetCumulativeCount()),
+                               Timestamp: timestamp,
+                       })
+               }
+
+               lset := make(model.LabelSet, len(m.Label)+1)
+               for _, p := range m.Label {
+                       lset[model.LabelName(p.GetName())] = model.LabelValue(p.GetValue())
+               }
+               lset[model.MetricNameLabel] = model.LabelValue(f.GetName() + "_sum")
+
+               samples = append(samples, &model.Sample{
+                       Metric:    model.Metric(lset),
+                       Value:     model.SampleValue(m.Histogram.GetSampleSum()),
+                       Timestamp: timestamp,
+               })
+
+               lset = make(model.LabelSet, len(m.Label)+1)
+               for _, p := range m.Label {
+                       lset[model.LabelName(p.GetName())] = model.LabelValue(p.GetValue())
+               }
+               lset[model.MetricNameLabel] = model.LabelValue(f.GetName() + "_count")
+
+               count := &model.Sample{
+                       Metric:    model.Metric(lset),
+                       Value:     model.SampleValue(m.Histogram.GetSampleCount()),
+                       Timestamp: timestamp,
+               }
+               samples = append(samples, count)
+
+               if !infSeen {
+                       // Append an infinity bucket sample.
+                       lset := make(model.LabelSet, len(m.Label)+2)
+                       for _, p := range m.Label {
+                               lset[model.LabelName(p.GetName())] = model.LabelValue(p.GetValue())
+                       }
+                       lset[model.LabelName(model.BucketLabel)] = model.LabelValue("+Inf")
+                       lset[model.MetricNameLabel] = model.LabelValue(f.GetName() + "_bucket")
+
+                       samples = append(samples, &model.Sample{
+                               Metric:    model.Metric(lset),
+                               Value:     count.Value,
+                               Timestamp: timestamp,
+                       })
+               }
+       }
+
+       return samples
+}
diff --git a/vendor/github.com/prometheus/common/expfmt/encode.go b/vendor/github.com/prometheus/common/expfmt/encode.go
new file mode 100644 (file)
index 0000000..11839ed
--- /dev/null
@@ -0,0 +1,88 @@
+// Copyright 2015 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package expfmt
+
+import (
+       "fmt"
+       "io"
+       "net/http"
+
+       "github.com/golang/protobuf/proto"
+       "github.com/matttproud/golang_protobuf_extensions/pbutil"
+       "github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg"
+
+       dto "github.com/prometheus/client_model/go"
+)
+
+// Encoder types encode metric families into an underlying wire protocol.
+type Encoder interface {
+       Encode(*dto.MetricFamily) error
+}
+
+type encoder func(*dto.MetricFamily) error
+
+func (e encoder) Encode(v *dto.MetricFamily) error {
+       return e(v)
+}
+
+// Negotiate returns the Content-Type based on the given Accept header.
+// If no appropriate accepted type is found, FmtText is returned.
+func Negotiate(h http.Header) Format {
+       for _, ac := range goautoneg.ParseAccept(h.Get(hdrAccept)) {
+               // Check for protocol buffer
+               if ac.Type+"/"+ac.SubType == ProtoType && ac.Params["proto"] == ProtoProtocol {
+                       switch ac.Params["encoding"] {
+                       case "delimited":
+                               return FmtProtoDelim
+                       case "text":
+                               return FmtProtoText
+                       case "compact-text":
+                               return FmtProtoCompact
+                       }
+               }
+               // Check for text format.
+               ver := ac.Params["version"]
+               if ac.Type == "text" && ac.SubType == "plain" && (ver == TextVersion || ver == "") {
+                       return FmtText
+               }
+       }
+       return FmtText
+}
+
+// NewEncoder returns a new encoder based on content type negotiation.
+func NewEncoder(w io.Writer, format Format) Encoder {
+       switch format {
+       case FmtProtoDelim:
+               return encoder(func(v *dto.MetricFamily) error {
+                       _, err := pbutil.WriteDelimited(w, v)
+                       return err
+               })
+       case FmtProtoCompact:
+               return encoder(func(v *dto.MetricFamily) error {
+                       _, err := fmt.Fprintln(w, v.String())
+                       return err
+               })
+       case FmtProtoText:
+               return encoder(func(v *dto.MetricFamily) error {
+                       _, err := fmt.Fprintln(w, proto.MarshalTextString(v))
+                       return err
+               })
+       case FmtText:
+               return encoder(func(v *dto.MetricFamily) error {
+                       _, err := MetricFamilyToText(w, v)
+                       return err
+               })
+       }
+       panic("expfmt.NewEncoder: unknown format")
+}
diff --git a/vendor/github.com/prometheus/common/expfmt/expfmt.go b/vendor/github.com/prometheus/common/expfmt/expfmt.go
new file mode 100644 (file)
index 0000000..366fbde
--- /dev/null
@@ -0,0 +1,40 @@
+// Copyright 2015 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// A package for reading and writing Prometheus metrics.
+package expfmt
+
+type Format string
+
+const (
+       TextVersion = "0.0.4"
+
+       ProtoType     = `application/vnd.google.protobuf`
+       ProtoProtocol = `io.prometheus.client.MetricFamily`
+       ProtoFmt      = ProtoType + "; proto=" + ProtoProtocol + ";"
+
+       // The Content-Type values for the different wire protocols.
+       FmtUnknown      Format = `<unknown>`
+       FmtText         Format = `text/plain; version=` + TextVersion
+       FmtProtoDelim   Format = ProtoFmt + ` encoding=delimited`
+       FmtProtoText    Format = ProtoFmt + ` encoding=text`
+       FmtProtoCompact Format = ProtoFmt + ` encoding=compact-text`
+
+       // fmtJSON2 is hidden as it is deprecated.
+       fmtJSON2 Format = `application/json; version=0.0.2`
+)
+
+const (
+       hdrContentType = "Content-Type"
+       hdrAccept      = "Accept"
+)
diff --git a/vendor/github.com/prometheus/common/expfmt/fuzz.go b/vendor/github.com/prometheus/common/expfmt/fuzz.go
new file mode 100644 (file)
index 0000000..14f9201
--- /dev/null
@@ -0,0 +1,36 @@
+// Copyright 2014 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Build only when actually fuzzing
+// +build gofuzz
+
+package expfmt
+
+import "bytes"
+
+// Fuzz text metric parser with with github.com/dvyukov/go-fuzz:
+//
+//     go-fuzz-build github.com/prometheus/client_golang/text
+//     go-fuzz -bin text-fuzz.zip -workdir fuzz
+//
+// Further input samples should go in the folder fuzz/corpus.
+func Fuzz(in []byte) int {
+       parser := TextParser{}
+       _, err := parser.TextToMetricFamilies(bytes.NewReader(in))
+
+       if err != nil {
+               return 0
+       }
+
+       return 1
+}
diff --git a/vendor/github.com/prometheus/common/expfmt/json_decode.go b/vendor/github.com/prometheus/common/expfmt/json_decode.go
new file mode 100644 (file)
index 0000000..cf86545
--- /dev/null
@@ -0,0 +1,174 @@
+// Copyright 2015 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package expfmt
+
+import (
+       "encoding/json"
+       "fmt"
+       "io"
+       "sort"
+
+       "github.com/golang/protobuf/proto"
+       dto "github.com/prometheus/client_model/go"
+
+       "github.com/prometheus/common/model"
+)
+
+type json2Decoder struct {
+       dec  *json.Decoder
+       fams []*dto.MetricFamily
+}
+
+func newJSON2Decoder(r io.Reader) Decoder {
+       return &json2Decoder{
+               dec: json.NewDecoder(r),
+       }
+}
+
+type histogram002 struct {
+       Labels model.LabelSet     `json:"labels"`
+       Values map[string]float64 `json:"value"`
+}
+
+type counter002 struct {
+       Labels model.LabelSet `json:"labels"`
+       Value  float64        `json:"value"`
+}
+
+func protoLabelSet(base, ext model.LabelSet) ([]*dto.LabelPair, error) {
+       labels := base.Clone().Merge(ext)
+       delete(labels, model.MetricNameLabel)
+
+       names := make([]string, 0, len(labels))
+       for ln := range labels {
+               names = append(names, string(ln))
+       }
+       sort.Strings(names)
+
+       pairs := make([]*dto.LabelPair, 0, len(labels))
+
+       for _, ln := range names {
+               if !model.LabelNameRE.MatchString(ln) {
+                       return nil, fmt.Errorf("invalid label name %q", ln)
+               }
+               lv := labels[model.LabelName(ln)]
+
+               pairs = append(pairs, &dto.LabelPair{
+                       Name:  proto.String(ln),
+                       Value: proto.String(string(lv)),
+               })
+       }
+
+       return pairs, nil
+}
+
+func (d *json2Decoder) more() error {
+       var entities []struct {
+               BaseLabels model.LabelSet `json:"baseLabels"`
+               Docstring  string         `json:"docstring"`
+               Metric     struct {
+                       Type   string          `json:"type"`
+                       Values json.RawMessage `json:"value"`
+               } `json:"metric"`
+       }
+
+       if err := d.dec.Decode(&entities); err != nil {
+               return err
+       }
+       for _, e := range entities {
+               f := &dto.MetricFamily{
+                       Name:   proto.String(string(e.BaseLabels[model.MetricNameLabel])),
+                       Help:   proto.String(e.Docstring),
+                       Type:   dto.MetricType_UNTYPED.Enum(),
+                       Metric: []*dto.Metric{},
+               }
+
+               d.fams = append(d.fams, f)
+
+               switch e.Metric.Type {
+               case "counter", "gauge":
+                       var values []counter002
+
+                       if err := json.Unmarshal(e.Metric.Values, &values); err != nil {
+                               return fmt.Errorf("could not extract %s value: %s", e.Metric.Type, err)
+                       }
+
+                       for _, ctr := range values {
+                               labels, err := protoLabelSet(e.BaseLabels, ctr.Labels)
+                               if err != nil {
+                                       return err
+                               }
+                               f.Metric = append(f.Metric, &dto.Metric{
+                                       Label: labels,
+                                       Untyped: &dto.Untyped{
+                                               Value: proto.Float64(ctr.Value),
+                                       },
+                               })
+                       }
+
+               case "histogram":
+                       var values []histogram002
+
+                       if err := json.Unmarshal(e.Metric.Values, &values); err != nil {
+                               return fmt.Errorf("could not extract %s value: %s", e.Metric.Type, err)
+                       }
+
+                       for _, hist := range values {
+                               quants := make([]string, 0, len(values))
+                               for q := range hist.Values {
+                                       quants = append(quants, q)
+                               }
+
+                               sort.Strings(quants)
+
+                               for _, q := range quants {
+                                       value := hist.Values[q]
+                                       // The correct label is "quantile" but to not break old expressions
+                                       // this remains "percentile"
+                                       hist.Labels["percentile"] = model.LabelValue(q)
+
+                                       labels, err := protoLabelSet(e.BaseLabels, hist.Labels)
+                                       if err != nil {
+                                               return err
+                                       }
+
+                                       f.Metric = append(f.Metric, &dto.Metric{
+                                               Label: labels,
+                                               Untyped: &dto.Untyped{
+                                                       Value: proto.Float64(value),
+                                               },
+                                       })
+                               }
+                       }
+
+               default:
+                       return fmt.Errorf("unknown metric type %q", e.Metric.Type)
+               }
+       }
+       return nil
+}
+
+// Decode implements the Decoder interface.
+func (d *json2Decoder) Decode(v *dto.MetricFamily) error {
+       if len(d.fams) == 0 {
+               if err := d.more(); err != nil {
+                       return err
+               }
+       }
+
+       *v = *d.fams[0]
+       d.fams = d.fams[1:]
+
+       return nil
+}
diff --git a/vendor/github.com/prometheus/common/expfmt/text_create.go b/vendor/github.com/prometheus/common/expfmt/text_create.go
new file mode 100644 (file)
index 0000000..0bb9c14
--- /dev/null
@@ -0,0 +1,305 @@
+// Copyright 2014 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package expfmt
+
+import (
+       "bytes"
+       "fmt"
+       "io"
+       "math"
+       "strings"
+
+       dto "github.com/prometheus/client_model/go"
+       "github.com/prometheus/common/model"
+)
+
+// MetricFamilyToText converts a MetricFamily proto message into text format and
+// writes the resulting lines to 'out'. It returns the number of bytes written
+// and any error encountered.  This function does not perform checks on the
+// content of the metric and label names, i.e. invalid metric or label names
+// will result in invalid text format output.
+// This method fulfills the type 'prometheus.encoder'.
+func MetricFamilyToText(out io.Writer, in *dto.MetricFamily) (int, error) {
+       var written int
+
+       // Fail-fast checks.
+       if len(in.Metric) == 0 {
+               return written, fmt.Errorf("MetricFamily has no metrics: %s", in)
+       }
+       name := in.GetName()
+       if name == "" {
+               return written, fmt.Errorf("MetricFamily has no name: %s", in)
+       }
+
+       // Comments, first HELP, then TYPE.
+       if in.Help != nil {
+               n, err := fmt.Fprintf(
+                       out, "# HELP %s %s\n",
+                       name, escapeString(*in.Help, false),
+               )
+               written += n
+               if err != nil {
+                       return written, err
+               }
+       }
+       metricType := in.GetType()
+       n, err := fmt.Fprintf(
+               out, "# TYPE %s %s\n",
+               name, strings.ToLower(metricType.String()),
+       )
+       written += n
+       if err != nil {
+               return written, err
+       }
+
+       // Finally the samples, one line for each.
+       for _, metric := range in.Metric {
+               switch metricType {
+               case dto.MetricType_COUNTER:
+                       if metric.Counter == nil {
+                               return written, fmt.Errorf(
+                                       "expected counter in metric %s %s", name, metric,
+                               )
+                       }
+                       n, err = writeSample(
+                               name, metric, "", "",
+                               metric.Counter.GetValue(),
+                               out,
+                       )
+               case dto.MetricType_GAUGE:
+                       if metric.Gauge == nil {
+                               return written, fmt.Errorf(
+                                       "expected gauge in metric %s %s", name, metric,
+                               )
+                       }
+                       n, err = writeSample(
+                               name, metric, "", "",
+                               metric.Gauge.GetValue(),
+                               out,
+                       )
+               case dto.MetricType_UNTYPED:
+                       if metric.Untyped == nil {
+                               return written, fmt.Errorf(
+                                       "expected untyped in metric %s %s", name, metric,
+                               )
+                       }
+                       n, err = writeSample(
+                               name, metric, "", "",
+                               metric.Untyped.GetValue(),
+                               out,
+                       )
+               case dto.MetricType_SUMMARY:
+                       if metric.Summary == nil {
+                               return written, fmt.Errorf(
+                                       "expected summary in metric %s %s", name, metric,
+                               )
+                       }
+                       for _, q := range metric.Summary.Quantile {
+                               n, err = writeSample(
+                                       name, metric,
+                                       model.QuantileLabel, fmt.Sprint(q.GetQuantile()),
+                                       q.GetValue(),
+                                       out,
+                               )
+                               written += n
+                               if err != nil {
+                                       return written, err
+                               }
+                       }
+                       n, err = writeSample(
+                               name+"_sum", metric, "", "",
+                               metric.Summary.GetSampleSum(),
+                               out,
+                       )
+                       if err != nil {
+                               return written, err
+                       }
+                       written += n
+                       n, err = writeSample(
+                               name+"_count", metric, "", "",
+                               float64(metric.Summary.GetSampleCount()),
+                               out,
+                       )
+               case dto.MetricType_HISTOGRAM:
+                       if metric.Histogram == nil {
+                               return written, fmt.Errorf(
+                                       "expected histogram in metric %s %s", name, metric,
+                               )
+                       }
+                       infSeen := false
+                       for _, q := range metric.Histogram.Bucket {
+                               n, err = writeSample(
+                                       name+"_bucket", metric,
+                                       model.BucketLabel, fmt.Sprint(q.GetUpperBound()),
+                                       float64(q.GetCumulativeCount()),
+                                       out,
+                               )
+                               written += n
+                               if err != nil {
+                                       return written, err
+                               }
+                               if math.IsInf(q.GetUpperBound(), +1) {
+                                       infSeen = true
+                               }
+                       }
+                       if !infSeen {
+                               n, err = writeSample(
+                                       name+"_bucket", metric,
+                                       model.BucketLabel, "+Inf",
+                                       float64(metric.Histogram.GetSampleCount()),
+                                       out,
+                               )
+                               if err != nil {
+                                       return written, err
+                               }
+                               written += n
+                       }
+                       n, err = writeSample(
+                               name+"_sum", metric, "", "",
+                               metric.Histogram.GetSampleSum(),
+                               out,
+                       )
+                       if err != nil {
+                               return written, err
+                       }
+                       written += n
+                       n, err = writeSample(
+                               name+"_count", metric, "", "",
+                               float64(metric.Histogram.GetSampleCount()),
+                               out,
+                       )
+               default:
+                       return written, fmt.Errorf(
+                               "unexpected type in metric %s %s", name, metric,
+                       )
+               }
+               written += n
+               if err != nil {
+                       return written, err
+               }
+       }
+       return written, nil
+}
+
+// writeSample writes a single sample in text format to out, given the metric
+// name, the metric proto message itself, optionally an additional label name
+// and value (use empty strings if not required), and the value. The function
+// returns the number of bytes written and any error encountered.
+func writeSample(
+       name string,
+       metric *dto.Metric,
+       additionalLabelName, additionalLabelValue string,
+       value float64,
+       out io.Writer,
+) (int, error) {
+       var written int
+       n, err := fmt.Fprint(out, name)
+       written += n
+       if err != nil {
+               return written, err
+       }
+       n, err = labelPairsToText(
+               metric.Label,
+               additionalLabelName, additionalLabelValue,
+               out,
+       )
+       written += n
+       if err != nil {
+               return written, err
+       }
+       n, err = fmt.Fprintf(out, " %v", value)
+       written += n
+       if err != nil {
+               return written, err
+       }
+       if metric.TimestampMs != nil {
+               n, err = fmt.Fprintf(out, " %v", *metric.TimestampMs)
+               written += n
+               if err != nil {
+                       return written, err
+               }
+       }
+       n, err = out.Write([]byte{'\n'})
+       written += n
+       if err != nil {
+               return written, err
+       }
+       return written, nil
+}
+
+// labelPairsToText converts a slice of LabelPair proto messages plus the
+// explicitly given additional label pair into text formatted as required by the
+// text format and writes it to 'out'. An empty slice in combination with an
+// empty string 'additionalLabelName' results in nothing being
+// written. Otherwise, the label pairs are written, escaped as required by the
+// text format, and enclosed in '{...}'. The function returns the number of
+// bytes written and any error encountered.
+func labelPairsToText(
+       in []*dto.LabelPair,
+       additionalLabelName, additionalLabelValue string,
+       out io.Writer,
+) (int, error) {
+       if len(in) == 0 && additionalLabelName == "" {
+               return 0, nil
+       }
+       var written int
+       separator := '{'
+       for _, lp := range in {
+               n, err := fmt.Fprintf(
+                       out, `%c%s="%s"`,
+                       separator, lp.GetName(), escapeString(lp.GetValue(), true),
+               )
+               written += n
+               if err != nil {
+                       return written, err
+               }
+               separator = ','
+       }
+       if additionalLabelName != "" {
+               n, err := fmt.Fprintf(
+                       out, `%c%s="%s"`,
+                       separator, additionalLabelName,
+                       escapeString(additionalLabelValue, true),
+               )
+               written += n
+               if err != nil {
+                       return written, err
+               }
+       }
+       n, err := out.Write([]byte{'}'})
+       written += n
+       if err != nil {
+               return written, err
+       }
+       return written, nil
+}
+
+// escapeString replaces '\' by '\\', new line character by '\n', and - if
+// includeDoubleQuote is true - '"' by '\"'.
+func escapeString(v string, includeDoubleQuote bool) string {
+       result := bytes.NewBuffer(make([]byte, 0, len(v)))
+       for _, c := range v {
+               switch {
+               case c == '\\':
+                       result.WriteString(`\\`)
+               case includeDoubleQuote && c == '"':
+                       result.WriteString(`\"`)
+               case c == '\n':
+                       result.WriteString(`\n`)
+               default:
+                       result.WriteRune(c)
+               }
+       }
+       return result.String()
+}
diff --git a/vendor/github.com/prometheus/common/expfmt/text_parse.go b/vendor/github.com/prometheus/common/expfmt/text_parse.go
new file mode 100644 (file)
index 0000000..bd170b1
--- /dev/null
@@ -0,0 +1,753 @@
+// Copyright 2014 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package expfmt
+
+import (
+       "bufio"
+       "bytes"
+       "fmt"
+       "io"
+       "math"
+       "strconv"
+       "strings"
+
+       dto "github.com/prometheus/client_model/go"
+
+       "github.com/golang/protobuf/proto"
+       "github.com/prometheus/common/model"
+)
+
+// A stateFn is a function that represents a state in a state machine. By
+// executing it, the state is progressed to the next state. The stateFn returns
+// another stateFn, which represents the new state. The end state is represented
+// by nil.
+type stateFn func() stateFn
+
+// ParseError signals errors while parsing the simple and flat text-based
+// exchange format.
+type ParseError struct {
+       Line int
+       Msg  string
+}
+
+// Error implements the error interface.
+func (e ParseError) Error() string {
+       return fmt.Sprintf("text format parsing error in line %d: %s", e.Line, e.Msg)
+}
+
+// TextParser is used to parse the simple and flat text-based exchange format. Its
+// nil value is ready to use.
+type TextParser struct {
+       metricFamiliesByName map[string]*dto.MetricFamily
+       buf                  *bufio.Reader // Where the parsed input is read through.
+       err                  error         // Most recent error.
+       lineCount            int           // Tracks the line count for error messages.
+       currentByte          byte          // The most recent byte read.
+       currentToken         bytes.Buffer  // Re-used each time a token has to be gathered from multiple bytes.
+       currentMF            *dto.MetricFamily
+       currentMetric        *dto.Metric
+       currentLabelPair     *dto.LabelPair
+
+       // The remaining member variables are only used for summaries/histograms.
+       currentLabels map[string]string // All labels including '__name__' but excluding 'quantile'/'le'
+       // Summary specific.
+       summaries       map[uint64]*dto.Metric // Key is created with LabelsToSignature.
+       currentQuantile float64
+       // Histogram specific.
+       histograms    map[uint64]*dto.Metric // Key is created with LabelsToSignature.
+       currentBucket float64
+       // These tell us if the currently processed line ends on '_count' or
+       // '_sum' respectively and belong to a summary/histogram, representing the sample
+       // count and sum of that summary/histogram.
+       currentIsSummaryCount, currentIsSummarySum     bool
+       currentIsHistogramCount, currentIsHistogramSum bool
+}
+
+// TextToMetricFamilies reads 'in' as the simple and flat text-based exchange
+// format and creates MetricFamily proto messages. It returns the MetricFamily
+// proto messages in a map where the metric names are the keys, along with any
+// error encountered.
+//
+// If the input contains duplicate metrics (i.e. lines with the same metric name
+// and exactly the same label set), the resulting MetricFamily will contain
+// duplicate Metric proto messages. Similar is true for duplicate label
+// names. Checks for duplicates have to be performed separately, if required.
+// Also note that neither the metrics within each MetricFamily are sorted nor
+// the label pairs within each Metric. Sorting is not required for the most
+// frequent use of this method, which is sample ingestion in the Prometheus
+// server. However, for presentation purposes, you might want to sort the
+// metrics, and in some cases, you must sort the labels, e.g. for consumption by
+// the metric family injection hook of the Prometheus registry.
+//
+// Summaries and histograms are rather special beasts. You would probably not
+// use them in the simple text format anyway. This method can deal with
+// summaries and histograms if they are presented in exactly the way the
+// text.Create function creates them.
+//
+// This method must not be called concurrently. If you want to parse different
+// input concurrently, instantiate a separate Parser for each goroutine.
+func (p *TextParser) TextToMetricFamilies(in io.Reader) (map[string]*dto.MetricFamily, error) {
+       p.reset(in)
+       for nextState := p.startOfLine; nextState != nil; nextState = nextState() {
+               // Magic happens here...
+       }
+       // Get rid of empty metric families.
+       for k, mf := range p.metricFamiliesByName {
+               if len(mf.GetMetric()) == 0 {
+                       delete(p.metricFamiliesByName, k)
+               }
+       }
+       // If p.err is io.EOF now, we have run into a premature end of the input
+       // stream. Turn this error into something nicer and more
+       // meaningful. (io.EOF is often used as a signal for the legitimate end
+       // of an input stream.)
+       if p.err == io.EOF {
+               p.parseError("unexpected end of input stream")
+       }
+       return p.metricFamiliesByName, p.err
+}
+
+func (p *TextParser) reset(in io.Reader) {
+       p.metricFamiliesByName = map[string]*dto.MetricFamily{}
+       if p.buf == nil {
+               p.buf = bufio.NewReader(in)
+       } else {
+               p.buf.Reset(in)
+       }
+       p.err = nil
+       p.lineCount = 0
+       if p.summaries == nil || len(p.summaries) > 0 {
+               p.summaries = map[uint64]*dto.Metric{}
+       }
+       if p.histograms == nil || len(p.histograms) > 0 {
+               p.histograms = map[uint64]*dto.Metric{}
+       }
+       p.currentQuantile = math.NaN()
+       p.currentBucket = math.NaN()
+}
+
+// startOfLine represents the state where the next byte read from p.buf is the
+// start of a line (or whitespace leading up to it).
+func (p *TextParser) startOfLine() stateFn {
+       p.lineCount++
+       if p.skipBlankTab(); p.err != nil {
+               // End of input reached. This is the only case where
+               // that is not an error but a signal that we are done.
+               p.err = nil
+               return nil
+       }
+       switch p.currentByte {
+       case '#':
+               return p.startComment
+       case '\n':
+               return p.startOfLine // Empty line, start the next one.
+       }
+       return p.readingMetricName
+}
+
+// startComment represents the state where the next byte read from p.buf is the
+// start of a comment (or whitespace leading up to it).
+func (p *TextParser) startComment() stateFn {
+       if p.skipBlankTab(); p.err != nil {
+               return nil // Unexpected end of input.
+       }
+       if p.currentByte == '\n' {
+               return p.startOfLine
+       }
+       if p.readTokenUntilWhitespace(); p.err != nil {
+               return nil // Unexpected end of input.
+       }
+       // If we have hit the end of line already, there is nothing left
+       // to do. This is not considered a syntax error.
+       if p.currentByte == '\n' {
+               return p.startOfLine
+       }
+       keyword := p.currentToken.String()
+       if keyword != "HELP" && keyword != "TYPE" {
+               // Generic comment, ignore by fast forwarding to end of line.
+               for p.currentByte != '\n' {
+                       if p.currentByte, p.err = p.buf.ReadByte(); p.err != nil {
+                               return nil // Unexpected end of input.
+                       }
+               }
+               return p.startOfLine
+       }
+       // There is something. Next has to be a metric name.
+       if p.skipBlankTab(); p.err != nil {
+               return nil // Unexpected end of input.
+       }
+       if p.readTokenAsMetricName(); p.err != nil {
+               return nil // Unexpected end of input.
+       }
+       if p.currentByte == '\n' {
+               // At the end of the line already.
+               // Again, this is not considered a syntax error.
+               return p.startOfLine
+       }
+       if !isBlankOrTab(p.currentByte) {
+               p.parseError("invalid metric name in comment")
+               return nil
+       }
+       p.setOrCreateCurrentMF()
+       if p.skipBlankTab(); p.err != nil {
+               return nil // Unexpected end of input.
+       }
+       if p.currentByte == '\n' {
+               // At the end of the line already.
+               // Again, this is not considered a syntax error.
+               return p.startOfLine
+       }
+       switch keyword {
+       case "HELP":
+               return p.readingHelp
+       case "TYPE":
+               return p.readingType
+       }
+       panic(fmt.Sprintf("code error: unexpected keyword %q", keyword))
+}
+
+// readingMetricName represents the state where the last byte read (now in
+// p.currentByte) is the first byte of a metric name.
+func (p *TextParser) readingMetricName() stateFn {
+       if p.readTokenAsMetricName(); p.err != nil {
+               return nil
+       }
+       if p.currentToken.Len() == 0 {
+               p.parseError("invalid metric name")
+               return nil
+       }
+       p.setOrCreateCurrentMF()
+       // Now is the time to fix the type if it hasn't happened yet.
+       if p.currentMF.Type == nil {
+               p.currentMF.Type = dto.MetricType_UNTYPED.Enum()
+       }
+       p.currentMetric = &dto.Metric{}
+       // Do not append the newly created currentMetric to
+       // currentMF.Metric right now. First wait if this is a summary,
+       // and the metric exists already, which we can only know after
+       // having read all the labels.
+       if p.skipBlankTabIfCurrentBlankTab(); p.err != nil {
+               return nil // Unexpected end of input.
+       }
+       return p.readingLabels
+}
+
+// readingLabels represents the state where the last byte read (now in
+// p.currentByte) is either the first byte of the label set (i.e. a '{'), or the
+// first byte of the value (otherwise).
+func (p *TextParser) readingLabels() stateFn {
+       // Summaries/histograms are special. We have to reset the
+       // currentLabels map, currentQuantile and currentBucket before starting to
+       // read labels.
+       if p.currentMF.GetType() == dto.MetricType_SUMMARY || p.currentMF.GetType() == dto.MetricType_HISTOGRAM {
+               p.currentLabels = map[string]string{}
+               p.currentLabels[string(model.MetricNameLabel)] = p.currentMF.GetName()
+               p.currentQuantile = math.NaN()
+               p.currentBucket = math.NaN()
+       }
+       if p.currentByte != '{' {
+               return p.readingValue
+       }
+       return p.startLabelName
+}
+
+// startLabelName represents the state where the next byte read from p.buf is
+// the start of a label name (or whitespace leading up to it).
+func (p *TextParser) startLabelName() stateFn {
+       if p.skipBlankTab(); p.err != nil {
+               return nil // Unexpected end of input.
+       }
+       if p.currentByte == '}' {
+               if p.skipBlankTab(); p.err != nil {
+                       return nil // Unexpected end of input.
+               }
+               return p.readingValue
+       }
+       if p.readTokenAsLabelName(); p.err != nil {
+               return nil // Unexpected end of input.
+       }
+       if p.currentToken.Len() == 0 {
+               p.parseError(fmt.Sprintf("invalid label name for metric %q", p.currentMF.GetName()))
+               return nil
+       }
+       p.currentLabelPair = &dto.LabelPair{Name: proto.String(p.currentToken.String())}
+       if p.currentLabelPair.GetName() == string(model.MetricNameLabel) {
+               p.parseError(fmt.Sprintf("label name %q is reserved", model.MetricNameLabel))
+               return nil
+       }
+       // Special summary/histogram treatment. Don't add 'quantile' and 'le'
+       // labels to 'real' labels.
+       if !(p.currentMF.GetType() == dto.MetricType_SUMMARY && p.currentLabelPair.GetName() == model.QuantileLabel) &&
+               !(p.currentMF.GetType() == dto.MetricType_HISTOGRAM && p.currentLabelPair.GetName() == model.BucketLabel) {
+               p.currentMetric.Label = append(p.currentMetric.Label, p.currentLabelPair)
+       }
+       if p.skipBlankTabIfCurrentBlankTab(); p.err != nil {
+               return nil // Unexpected end of input.
+       }
+       if p.currentByte != '=' {
+               p.parseError(fmt.Sprintf("expected '=' after label name, found %q", p.currentByte))
+               return nil
+       }
+       return p.startLabelValue
+}
+
+// startLabelValue represents the state where the next byte read from p.buf is
+// the start of a (quoted) label value (or whitespace leading up to it).
+func (p *TextParser) startLabelValue() stateFn {
+       if p.skipBlankTab(); p.err != nil {
+               return nil // Unexpected end of input.
+       }
+       if p.currentByte != '"' {
+               p.parseError(fmt.Sprintf("expected '\"' at start of label value, found %q", p.currentByte))
+               return nil
+       }
+       if p.readTokenAsLabelValue(); p.err != nil {
+               return nil
+       }
+       p.currentLabelPair.Value = proto.String(p.currentToken.String())
+       // Special treatment of summaries:
+       // - Quantile labels are special, will result in dto.Quantile later.
+       // - Other labels have to be added to currentLabels for signature calculation.
+       if p.currentMF.GetType() == dto.MetricType_SUMMARY {
+               if p.currentLabelPair.GetName() == model.QuantileLabel {
+                       if p.currentQuantile, p.err = strconv.ParseFloat(p.currentLabelPair.GetValue(), 64); p.err != nil {
+                               // Create a more helpful error message.
+                               p.parseError(fmt.Sprintf("expected float as value for 'quantile' label, got %q", p.currentLabelPair.GetValue()))
+                               return nil
+                       }
+               } else {
+                       p.currentLabels[p.currentLabelPair.GetName()] = p.currentLabelPair.GetValue()
+               }
+       }
+       // Similar special treatment of histograms.
+       if p.currentMF.GetType() == dto.MetricType_HISTOGRAM {
+               if p.currentLabelPair.GetName() == model.BucketLabel {
+                       if p.currentBucket, p.err = strconv.ParseFloat(p.currentLabelPair.GetValue(), 64); p.err != nil {
+                               // Create a more helpful error message.
+                               p.parseError(fmt.Sprintf("expected float as value for 'le' label, got %q", p.currentLabelPair.GetValue()))
+                               return nil
+                       }
+               } else {
+                       p.currentLabels[p.currentLabelPair.GetName()] = p.currentLabelPair.GetValue()
+               }
+       }
+       if p.skipBlankTab(); p.err != nil {
+               return nil // Unexpected end of input.
+       }
+       switch p.currentByte {
+       case ',':
+               return p.startLabelName
+
+       case '}':
+               if p.skipBlankTab(); p.err != nil {
+                       return nil // Unexpected end of input.
+               }
+               return p.readingValue
+       default:
+               p.parseError(fmt.Sprintf("unexpected end of label value %q", p.currentLabelPair.Value))
+               return nil
+       }
+}
+
+// readingValue represents the state where the last byte read (now in
+// p.currentByte) is the first byte of the sample value (i.e. a float).
+func (p *TextParser) readingValue() stateFn {
+       // When we are here, we have read all the labels, so for the
+       // special case of a summary/histogram, we can finally find out
+       // if the metric already exists.
+       if p.currentMF.GetType() == dto.MetricType_SUMMARY {
+               signature := model.LabelsToSignature(p.currentLabels)
+               if summary := p.summaries[signature]; summary != nil {
+                       p.currentMetric = summary
+               } else {
+                       p.summaries[signature] = p.currentMetric
+                       p.currentMF.Metric = append(p.currentMF.Metric, p.currentMetric)
+               }
+       } else if p.currentMF.GetType() == dto.MetricType_HISTOGRAM {
+               signature := model.LabelsToSignature(p.currentLabels)
+               if histogram := p.histograms[signature]; histogram != nil {
+                       p.currentMetric = histogram
+               } else {
+                       p.histograms[signature] = p.currentMetric
+                       p.currentMF.Metric = append(p.currentMF.Metric, p.currentMetric)
+               }
+       } else {
+               p.currentMF.Metric = append(p.currentMF.Metric, p.currentMetric)
+       }
+       if p.readTokenUntilWhitespace(); p.err != nil {
+               return nil // Unexpected end of input.
+       }
+       value, err := strconv.ParseFloat(p.currentToken.String(), 64)
+       if err != nil {
+               // Create a more helpful error message.
+               p.parseError(fmt.Sprintf("expected float as value, got %q", p.currentToken.String()))
+               return nil
+       }
+       switch p.currentMF.GetType() {
+       case dto.MetricType_COUNTER:
+               p.currentMetric.Counter = &dto.Counter{Value: proto.Float64(value)}
+       case dto.MetricType_GAUGE:
+               p.currentMetric.Gauge = &dto.Gauge{Value: proto.Float64(value)}
+       case dto.MetricType_UNTYPED:
+               p.currentMetric.Untyped = &dto.Untyped{Value: proto.Float64(value)}
+       case dto.MetricType_SUMMARY:
+               // *sigh*
+               if p.currentMetric.Summary == nil {
+                       p.currentMetric.Summary = &dto.Summary{}
+               }
+               switch {
+               case p.currentIsSummaryCount:
+                       p.currentMetric.Summary.SampleCount = proto.Uint64(uint64(value))
+               case p.currentIsSummarySum:
+                       p.currentMetric.Summary.SampleSum = proto.Float64(value)
+               case !math.IsNaN(p.currentQuantile):
+                       p.currentMetric.Summary.Quantile = append(
+                               p.currentMetric.Summary.Quantile,
+                               &dto.Quantile{
+                                       Quantile: proto.Float64(p.currentQuantile),
+                                       Value:    proto.Float64(value),
+                               },
+                       )
+               }
+       case dto.MetricType_HISTOGRAM:
+               // *sigh*
+               if p.currentMetric.Histogram == nil {
+                       p.currentMetric.Histogram = &dto.Histogram{}
+               }
+               switch {
+               case p.currentIsHistogramCount:
+                       p.currentMetric.Histogram.SampleCount = proto.Uint64(uint64(value))
+               case p.currentIsHistogramSum:
+                       p.currentMetric.Histogram.SampleSum = proto.Float64(value)
+               case !math.IsNaN(p.currentBucket):
+                       p.currentMetric.Histogram.Bucket = append(
+                               p.currentMetric.Histogram.Bucket,
+                               &dto.Bucket{
+                                       UpperBound:      proto.Float64(p.currentBucket),
+                                       CumulativeCount: proto.Uint64(uint64(value)),
+                               },
+                       )
+               }
+       default:
+               p.err = fmt.Errorf("unexpected type for metric name %q", p.currentMF.GetName())
+       }
+       if p.currentByte == '\n' {
+               return p.startOfLine
+       }
+       return p.startTimestamp
+}
+
+// startTimestamp represents the state where the next byte read from p.buf is
+// the start of the timestamp (or whitespace leading up to it).
+func (p *TextParser) startTimestamp() stateFn {
+       if p.skipBlankTab(); p.err != nil {
+               return nil // Unexpected end of input.
+       }
+       if p.readTokenUntilWhitespace(); p.err != nil {
+               return nil // Unexpected end of input.
+       }
+       timestamp, err := strconv.ParseInt(p.currentToken.String(), 10, 64)
+       if err != nil {
+               // Create a more helpful error message.
+               p.parseError(fmt.Sprintf("expected integer as timestamp, got %q", p.currentToken.String()))
+               return nil
+       }
+       p.currentMetric.TimestampMs = proto.Int64(timestamp)
+       if p.readTokenUntilNewline(false); p.err != nil {
+               return nil // Unexpected end of input.
+       }
+       if p.currentToken.Len() > 0 {
+               p.parseError(fmt.Sprintf("spurious string after timestamp: %q", p.currentToken.String()))
+               return nil
+       }
+       return p.startOfLine
+}
+
+// readingHelp represents the state where the last byte read (now in
+// p.currentByte) is the first byte of the docstring after 'HELP'.
+func (p *TextParser) readingHelp() stateFn {
+       if p.currentMF.Help != nil {
+               p.parseError(fmt.Sprintf("second HELP line for metric name %q", p.currentMF.GetName()))
+               return nil
+       }
+       // Rest of line is the docstring.
+       if p.readTokenUntilNewline(true); p.err != nil {
+               return nil // Unexpected end of input.
+       }
+       p.currentMF.Help = proto.String(p.currentToken.String())
+       return p.startOfLine
+}
+
+// readingType represents the state where the last byte read (now in
+// p.currentByte) is the first byte of the type hint after 'HELP'.
+func (p *TextParser) readingType() stateFn {
+       if p.currentMF.Type != nil {
+               p.parseError(fmt.Sprintf("second TYPE line for metric name %q, or TYPE reported after samples", p.currentMF.GetName()))
+               return nil
+       }
+       // Rest of line is the type.
+       if p.readTokenUntilNewline(false); p.err != nil {
+               return nil // Unexpected end of input.
+       }
+       metricType, ok := dto.MetricType_value[strings.ToUpper(p.currentToken.String())]
+       if !ok {
+               p.parseError(fmt.Sprintf("unknown metric type %q", p.currentToken.String()))
+               return nil
+       }
+       p.currentMF.Type = dto.MetricType(metricType).Enum()
+       return p.startOfLine
+}
+
+// parseError sets p.err to a ParseError at the current line with the given
+// message.
+func (p *TextParser) parseError(msg string) {
+       p.err = ParseError{
+               Line: p.lineCount,
+               Msg:  msg,
+       }
+}
+
+// skipBlankTab reads (and discards) bytes from p.buf until it encounters a byte
+// that is neither ' ' nor '\t'. That byte is left in p.currentByte.
+func (p *TextParser) skipBlankTab() {
+       for {
+               if p.currentByte, p.err = p.buf.ReadByte(); p.err != nil || !isBlankOrTab(p.currentByte) {
+                       return
+               }
+       }
+}
+
+// skipBlankTabIfCurrentBlankTab works exactly as skipBlankTab but doesn't do
+// anything if p.currentByte is neither ' ' nor '\t'.
+func (p *TextParser) skipBlankTabIfCurrentBlankTab() {
+       if isBlankOrTab(p.currentByte) {
+               p.skipBlankTab()
+       }
+}
+
+// readTokenUntilWhitespace copies bytes from p.buf into p.currentToken.  The
+// first byte considered is the byte already read (now in p.currentByte).  The
+// first whitespace byte encountered is still copied into p.currentByte, but not
+// into p.currentToken.
+func (p *TextParser) readTokenUntilWhitespace() {
+       p.currentToken.Reset()
+       for p.err == nil && !isBlankOrTab(p.currentByte) && p.currentByte != '\n' {
+               p.currentToken.WriteByte(p.currentByte)
+               p.currentByte, p.err = p.buf.ReadByte()
+       }
+}
+
+// readTokenUntilNewline copies bytes from p.buf into p.currentToken.  The first
+// byte considered is the byte already read (now in p.currentByte).  The first
+// newline byte encountered is still copied into p.currentByte, but not into
+// p.currentToken. If recognizeEscapeSequence is true, two escape sequences are
+// recognized: '\\' tranlates into '\', and '\n' into a line-feed character. All
+// other escape sequences are invalid and cause an error.
+func (p *TextParser) readTokenUntilNewline(recognizeEscapeSequence bool) {
+       p.currentToken.Reset()
+       escaped := false
+       for p.err == nil {
+               if recognizeEscapeSequence && escaped {
+                       switch p.currentByte {
+                       case '\\':
+                               p.currentToken.WriteByte(p.currentByte)
+                       case 'n':
+                               p.currentToken.WriteByte('\n')
+                       default:
+                               p.parseError(fmt.Sprintf("invalid escape sequence '\\%c'", p.currentByte))
+                               return
+                       }
+                       escaped = false
+               } else {
+                       switch p.currentByte {
+                       case '\n':
+                               return
+                       case '\\':
+                               escaped = true
+                       default:
+                               p.currentToken.WriteByte(p.currentByte)
+                       }
+               }
+               p.currentByte, p.err = p.buf.ReadByte()
+       }
+}
+
+// readTokenAsMetricName copies a metric name from p.buf into p.currentToken.
+// The first byte considered is the byte already read (now in p.currentByte).
+// The first byte not part of a metric name is still copied into p.currentByte,
+// but not into p.currentToken.
+func (p *TextParser) readTokenAsMetricName() {
+       p.currentToken.Reset()
+       if !isValidMetricNameStart(p.currentByte) {
+               return
+       }
+       for {
+               p.currentToken.WriteByte(p.currentByte)
+               p.currentByte, p.err = p.buf.ReadByte()
+               if p.err != nil || !isValidMetricNameContinuation(p.currentByte) {
+                       return
+               }
+       }
+}
+
+// readTokenAsLabelName copies a label name from p.buf into p.currentToken.
+// The first byte considered is the byte already read (now in p.currentByte).
+// The first byte not part of a label name is still copied into p.currentByte,
+// but not into p.currentToken.
+func (p *TextParser) readTokenAsLabelName() {
+       p.currentToken.Reset()
+       if !isValidLabelNameStart(p.currentByte) {
+               return
+       }
+       for {
+               p.currentToken.WriteByte(p.currentByte)
+               p.currentByte, p.err = p.buf.ReadByte()
+               if p.err != nil || !isValidLabelNameContinuation(p.currentByte) {
+                       return
+               }
+       }
+}
+
+// readTokenAsLabelValue copies a label value from p.buf into p.currentToken.
+// In contrast to the other 'readTokenAs...' functions, which start with the
+// last read byte in p.currentByte, this method ignores p.currentByte and starts
+// with reading a new byte from p.buf. The first byte not part of a label value
+// is still copied into p.currentByte, but not into p.currentToken.
+func (p *TextParser) readTokenAsLabelValue() {
+       p.currentToken.Reset()
+       escaped := false
+       for {
+               if p.currentByte, p.err = p.buf.ReadByte(); p.err != nil {
+                       return
+               }
+               if escaped {
+                       switch p.currentByte {
+                       case '"', '\\':
+                               p.currentToken.WriteByte(p.currentByte)
+                       case 'n':
+                               p.currentToken.WriteByte('\n')
+                       default:
+                               p.parseError(fmt.Sprintf("invalid escape sequence '\\%c'", p.currentByte))
+                               return
+                       }
+                       escaped = false
+                       continue
+               }
+               switch p.currentByte {
+               case '"':
+                       return
+               case '\n':
+                       p.parseError(fmt.Sprintf("label value %q contains unescaped new-line", p.currentToken.String()))
+                       return
+               case '\\':
+                       escaped = true
+               default:
+                       p.currentToken.WriteByte(p.currentByte)
+               }
+       }
+}
+
+func (p *TextParser) setOrCreateCurrentMF() {
+       p.currentIsSummaryCount = false
+       p.currentIsSummarySum = false
+       p.currentIsHistogramCount = false
+       p.currentIsHistogramSum = false
+       name := p.currentToken.String()
+       if p.currentMF = p.metricFamiliesByName[name]; p.currentMF != nil {
+               return
+       }
+       // Try out if this is a _sum or _count for a summary/histogram.
+       summaryName := summaryMetricName(name)
+       if p.currentMF = p.metricFamiliesByName[summaryName]; p.currentMF != nil {
+               if p.currentMF.GetType() == dto.MetricType_SUMMARY {
+                       if isCount(name) {
+                               p.currentIsSummaryCount = true
+                       }
+                       if isSum(name) {
+                               p.currentIsSummarySum = true
+                       }
+                       return
+               }
+       }
+       histogramName := histogramMetricName(name)
+       if p.currentMF = p.metricFamiliesByName[histogramName]; p.currentMF != nil {
+               if p.currentMF.GetType() == dto.MetricType_HISTOGRAM {
+                       if isCount(name) {
+                               p.currentIsHistogramCount = true
+                       }
+                       if isSum(name) {
+                               p.currentIsHistogramSum = true
+                       }
+                       return
+               }
+       }
+       p.currentMF = &dto.MetricFamily{Name: proto.String(name)}
+       p.metricFamiliesByName[name] = p.currentMF
+}
+
+func isValidLabelNameStart(b byte) bool {
+       return (b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') || b == '_'
+}
+
+func isValidLabelNameContinuation(b byte) bool {
+       return isValidLabelNameStart(b) || (b >= '0' && b <= '9')
+}
+
+func isValidMetricNameStart(b byte) bool {
+       return isValidLabelNameStart(b) || b == ':'
+}
+
+func isValidMetricNameContinuation(b byte) bool {
+       return isValidLabelNameContinuation(b) || b == ':'
+}
+
+func isBlankOrTab(b byte) bool {
+       return b == ' ' || b == '\t'
+}
+
+func isCount(name string) bool {
+       return len(name) > 6 && name[len(name)-6:] == "_count"
+}
+
+func isSum(name string) bool {
+       return len(name) > 4 && name[len(name)-4:] == "_sum"
+}
+
+func isBucket(name string) bool {
+       return len(name) > 7 && name[len(name)-7:] == "_bucket"
+}
+
+func summaryMetricName(name string) string {
+       switch {
+       case isCount(name):
+               return name[:len(name)-6]
+       case isSum(name):
+               return name[:len(name)-4]
+       default:
+               return name
+       }
+}
+
+func histogramMetricName(name string) string {
+       switch {
+       case isCount(name):
+               return name[:len(name)-6]
+       case isSum(name):
+               return name[:len(name)-4]
+       case isBucket(name):
+               return name[:len(name)-7]
+       default:
+               return name
+       }
+}
diff --git a/vendor/github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg/README.txt b/vendor/github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg/README.txt
new file mode 100644 (file)
index 0000000..7723656
--- /dev/null
@@ -0,0 +1,67 @@
+PACKAGE
+
+package goautoneg
+import "bitbucket.org/ww/goautoneg"
+
+HTTP Content-Type Autonegotiation.
+
+The functions in this package implement the behaviour specified in
+http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
+
+Copyright (c) 2011, Open Knowledge Foundation Ltd.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+    Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+    Neither the name of the Open Knowledge Foundation Ltd. nor the
+    names of its contributors may be used to endorse or promote
+    products derived from this software without specific prior written
+    permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+FUNCTIONS
+
+func Negotiate(header string, alternatives []string) (content_type string)
+Negotiate the most appropriate content_type given the accept header
+and a list of alternatives.
+
+func ParseAccept(header string) (accept []Accept)
+Parse an Accept Header string returning a sorted list
+of clauses
+
+
+TYPES
+
+type Accept struct {
+    Type, SubType string
+    Q             float32
+    Params        map[string]string
+}
+Structure to represent a clause in an HTTP Accept Header
+
+
+SUBDIRECTORIES
+
+       .hg
diff --git a/vendor/github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg/autoneg.go b/vendor/github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg/autoneg.go
new file mode 100644 (file)
index 0000000..648b38c
--- /dev/null
@@ -0,0 +1,162 @@
+/*
+HTTP Content-Type Autonegotiation.
+
+The functions in this package implement the behaviour specified in
+http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
+
+Copyright (c) 2011, Open Knowledge Foundation Ltd.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+    Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+    Neither the name of the Open Knowledge Foundation Ltd. nor the
+    names of its contributors may be used to endorse or promote
+    products derived from this software without specific prior written
+    permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+*/
+package goautoneg
+
+import (
+       "sort"
+       "strconv"
+       "strings"
+)
+
+// Structure to represent a clause in an HTTP Accept Header
+type Accept struct {
+       Type, SubType string
+       Q             float64
+       Params        map[string]string
+}
+
+// For internal use, so that we can use the sort interface
+type accept_slice []Accept
+
+func (accept accept_slice) Len() int {
+       slice := []Accept(accept)
+       return len(slice)
+}
+
+func (accept accept_slice) Less(i, j int) bool {
+       slice := []Accept(accept)
+       ai, aj := slice[i], slice[j]
+       if ai.Q > aj.Q {
+               return true
+       }
+       if ai.Type != "*" && aj.Type == "*" {
+               return true
+       }
+       if ai.SubType != "*" && aj.SubType == "*" {
+               return true
+       }
+       return false
+}
+
+func (accept accept_slice) Swap(i, j int) {
+       slice := []Accept(accept)
+       slice[i], slice[j] = slice[j], slice[i]
+}
+
+// Parse an Accept Header string returning a sorted list
+// of clauses
+func ParseAccept(header string) (accept []Accept) {
+       parts := strings.Split(header, ",")
+       accept = make([]Accept, 0, len(parts))
+       for _, part := range parts {
+               part := strings.Trim(part, " ")
+
+               a := Accept{}
+               a.Params = make(map[string]string)
+               a.Q = 1.0
+
+               mrp := strings.Split(part, ";")
+
+               media_range := mrp[0]
+               sp := strings.Split(media_range, "/")
+               a.Type = strings.Trim(sp[0], " ")
+
+               switch {
+               case len(sp) == 1 && a.Type == "*":
+                       a.SubType = "*"
+               case len(sp) == 2:
+                       a.SubType = strings.Trim(sp[1], " ")
+               default:
+                       continue
+               }
+
+               if len(mrp) == 1 {
+                       accept = append(accept, a)
+                       continue
+               }
+
+               for _, param := range mrp[1:] {
+                       sp := strings.SplitN(param, "=", 2)
+                       if len(sp) != 2 {
+                               continue
+                       }
+                       token := strings.Trim(sp[0], " ")
+                       if token == "q" {
+                               a.Q, _ = strconv.ParseFloat(sp[1], 32)
+                       } else {
+                               a.Params[token] = strings.Trim(sp[1], " ")
+                       }
+               }
+
+               accept = append(accept, a)
+       }
+
+       slice := accept_slice(accept)
+       sort.Sort(slice)
+
+       return
+}
+
+// Negotiate the most appropriate content_type given the accept header
+// and a list of alternatives.
+func Negotiate(header string, alternatives []string) (content_type string) {
+       asp := make([][]string, 0, len(alternatives))
+       for _, ctype := range alternatives {
+               asp = append(asp, strings.SplitN(ctype, "/", 2))
+       }
+       for _, clause := range ParseAccept(header) {
+               for i, ctsp := range asp {
+                       if clause.Type == ctsp[0] && clause.SubType == ctsp[1] {
+                               content_type = alternatives[i]
+                               return
+                       }
+                       if clause.Type == ctsp[0] && clause.SubType == "*" {
+                               content_type = alternatives[i]
+                               return
+                       }
+                       if clause.Type == "*" && clause.SubType == "*" {
+                               content_type = alternatives[i]
+                               return
+                       }
+               }
+       }
+       return
+}
diff --git a/vendor/github.com/prometheus/common/model/alert.go b/vendor/github.com/prometheus/common/model/alert.go
new file mode 100644 (file)
index 0000000..35e739c
--- /dev/null
@@ -0,0 +1,136 @@
+// Copyright 2013 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package model
+
+import (
+       "fmt"
+       "time"
+)
+
+type AlertStatus string
+
+const (
+       AlertFiring   AlertStatus = "firing"
+       AlertResolved AlertStatus = "resolved"
+)
+
+// Alert is a generic representation of an alert in the Prometheus eco-system.
+type Alert struct {
+       // Label value pairs for purpose of aggregation, matching, and disposition
+       // dispatching. This must minimally include an "alertname" label.
+       Labels LabelSet `json:"labels"`
+
+       // Extra key/value information which does not define alert identity.
+       Annotations LabelSet `json:"annotations"`
+
+       // The known time range for this alert. Both ends are optional.
+       StartsAt     time.Time `json:"startsAt,omitempty"`
+       EndsAt       time.Time `json:"endsAt,omitempty"`
+       GeneratorURL string    `json:"generatorURL"`
+}
+
+// Name returns the name of the alert. It is equivalent to the "alertname" label.
+func (a *Alert) Name() string {
+       return string(a.Labels[AlertNameLabel])
+}
+
+// Fingerprint returns a unique hash for the alert. It is equivalent to
+// the fingerprint of the alert's label set.
+func (a *Alert) Fingerprint() Fingerprint {
+       return a.Labels.Fingerprint()
+}
+
+func (a *Alert) String() string {
+       s := fmt.Sprintf("%s[%s]", a.Name(), a.Fingerprint().String()[:7])
+       if a.Resolved() {
+               return s + "[resolved]"
+       }
+       return s + "[active]"
+}
+
+// Resolved returns true iff the activity interval ended in the past.
+func (a *Alert) Resolved() bool {
+       return a.ResolvedAt(time.Now())
+}
+
+// ResolvedAt returns true off the activity interval ended before
+// the given timestamp.
+func (a *Alert) ResolvedAt(ts time.Time) bool {
+       if a.EndsAt.IsZero() {
+               return false
+       }
+       return !a.EndsAt.After(ts)
+}
+
+// Status returns the status of the alert.
+func (a *Alert) Status() AlertStatus {
+       if a.Resolved() {
+               return AlertResolved
+       }
+       return AlertFiring
+}
+
+// Validate checks whether the alert data is inconsistent.
+func (a *Alert) Validate() error {
+       if a.StartsAt.IsZero() {
+               return fmt.Errorf("start time missing")
+       }
+       if !a.EndsAt.IsZero() && a.EndsAt.Before(a.StartsAt) {
+               return fmt.Errorf("start time must be before end time")
+       }
+       if err := a.Labels.Validate(); err != nil {
+               return fmt.Errorf("invalid label set: %s", err)
+       }
+       if len(a.Labels) == 0 {
+               return fmt.Errorf("at least one label pair required")
+       }
+       if err := a.Annotations.Validate(); err != nil {
+               return fmt.Errorf("invalid annotations: %s", err)
+       }
+       return nil
+}
+
+// Alert is a list of alerts that can be sorted in chronological order.
+type Alerts []*Alert
+
+func (as Alerts) Len() int      { return len(as) }
+func (as Alerts) Swap(i, j int) { as[i], as[j] = as[j], as[i] }
+
+func (as Alerts) Less(i, j int) bool {
+       if as[i].StartsAt.Before(as[j].StartsAt) {
+               return true
+       }
+       if as[i].EndsAt.Before(as[j].EndsAt) {
+               return true
+       }
+       return as[i].Fingerprint() < as[j].Fingerprint()
+}
+
+// HasFiring returns true iff one of the alerts is not resolved.
+func (as Alerts) HasFiring() bool {
+       for _, a := range as {
+               if !a.Resolved() {
+                       return true
+               }
+       }
+       return false
+}
+
+// Status returns StatusFiring iff at least one of the alerts is firing.
+func (as Alerts) Status() AlertStatus {
+       if as.HasFiring() {
+               return AlertFiring
+       }
+       return AlertResolved
+}
diff --git a/vendor/github.com/prometheus/common/model/fingerprinting.go b/vendor/github.com/prometheus/common/model/fingerprinting.go
new file mode 100644 (file)
index 0000000..fc4de41
--- /dev/null
@@ -0,0 +1,105 @@
+// Copyright 2013 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package model
+
+import (
+       "fmt"
+       "strconv"
+)
+
+// Fingerprint provides a hash-capable representation of a Metric.
+// For our purposes, FNV-1A 64-bit is used.
+type Fingerprint uint64
+
+// FingerprintFromString transforms a string representation into a Fingerprint.
+func FingerprintFromString(s string) (Fingerprint, error) {
+       num, err := strconv.ParseUint(s, 16, 64)
+       return Fingerprint(num), err
+}
+
+// ParseFingerprint parses the input string into a fingerprint.
+func ParseFingerprint(s string) (Fingerprint, error) {
+       num, err := strconv.ParseUint(s, 16, 64)
+       if err != nil {
+               return 0, err
+       }
+       return Fingerprint(num), nil
+}
+
+func (f Fingerprint) String() string {
+       return fmt.Sprintf("%016x", uint64(f))
+}
+
+// Fingerprints represents a collection of Fingerprint subject to a given
+// natural sorting scheme. It implements sort.Interface.
+type Fingerprints []Fingerprint
+
+// Len implements sort.Interface.
+func (f Fingerprints) Len() int {
+       return len(f)
+}
+
+// Less implements sort.Interface.
+func (f Fingerprints) Less(i, j int) bool {
+       return f[i] < f[j]
+}
+
+// Swap implements sort.Interface.
+func (f Fingerprints) Swap(i, j int) {
+       f[i], f[j] = f[j], f[i]
+}
+
+// FingerprintSet is a set of Fingerprints.
+type FingerprintSet map[Fingerprint]struct{}
+
+// Equal returns true if both sets contain the same elements (and not more).
+func (s FingerprintSet) Equal(o FingerprintSet) bool {
+       if len(s) != len(o) {
+               return false
+       }
+
+       for k := range s {
+               if _, ok := o[k]; !ok {
+                       return false
+               }
+       }
+
+       return true
+}
+
+// Intersection returns the elements contained in both sets.
+func (s FingerprintSet) Intersection(o FingerprintSet) FingerprintSet {
+       myLength, otherLength := len(s), len(o)
+       if myLength == 0 || otherLength == 0 {
+               return FingerprintSet{}
+       }
+
+       subSet := s
+       superSet := o
+
+       if otherLength < myLength {
+               subSet = o
+               superSet = s
+       }
+
+       out := FingerprintSet{}
+
+       for k := range subSet {
+               if _, ok := superSet[k]; ok {
+                       out[k] = struct{}{}
+               }
+       }
+
+       return out
+}
diff --git a/vendor/github.com/prometheus/common/model/fnv.go b/vendor/github.com/prometheus/common/model/fnv.go
new file mode 100644 (file)
index 0000000..038fc1c
--- /dev/null
@@ -0,0 +1,42 @@
+// Copyright 2015 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package model
+
+// Inline and byte-free variant of hash/fnv's fnv64a.
+
+const (
+       offset64 = 14695981039346656037
+       prime64  = 1099511628211
+)
+
+// hashNew initializies a new fnv64a hash value.
+func hashNew() uint64 {
+       return offset64
+}
+
+// hashAdd adds a string to a fnv64a hash value, returning the updated hash.
+func hashAdd(h uint64, s string) uint64 {
+       for i := 0; i < len(s); i++ {
+               h ^= uint64(s[i])
+               h *= prime64
+       }
+       return h
+}
+
+// hashAddByte adds a byte to a fnv64a hash value, returning the updated hash.
+func hashAddByte(h uint64, b byte) uint64 {
+       h ^= uint64(b)
+       h *= prime64
+       return h
+}
diff --git a/vendor/github.com/prometheus/common/model/labels.go b/vendor/github.com/prometheus/common/model/labels.go
new file mode 100644 (file)
index 0000000..3b72e7f
--- /dev/null
@@ -0,0 +1,206 @@
+// Copyright 2013 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package model
+
+import (
+       "encoding/json"
+       "fmt"
+       "regexp"
+       "strings"
+       "unicode/utf8"
+)
+
+const (
+       // AlertNameLabel is the name of the label containing the an alert's name.
+       AlertNameLabel = "alertname"
+
+       // ExportedLabelPrefix is the prefix to prepend to the label names present in
+       // exported metrics if a label of the same name is added by the server.
+       ExportedLabelPrefix = "exported_"
+
+       // MetricNameLabel is the label name indicating the metric name of a
+       // timeseries.
+       MetricNameLabel = "__name__"
+
+       // SchemeLabel is the name of the label that holds the scheme on which to
+       // scrape a target.
+       SchemeLabel = "__scheme__"
+
+       // AddressLabel is the name of the label that holds the address of
+       // a scrape target.
+       AddressLabel = "__address__"
+
+       // MetricsPathLabel is the name of the label that holds the path on which to
+       // scrape a target.
+       MetricsPathLabel = "__metrics_path__"
+
+       // ReservedLabelPrefix is a prefix which is not legal in user-supplied
+       // label names.
+       ReservedLabelPrefix = "__"
+
+       // MetaLabelPrefix is a prefix for labels that provide meta information.
+       // Labels with this prefix are used for intermediate label processing and
+       // will not be attached to time series.
+       MetaLabelPrefix = "__meta_"
+
+       // TmpLabelPrefix is a prefix for temporary labels as part of relabelling.
+       // Labels with this prefix are used for intermediate label processing and
+       // will not be attached to time series. This is reserved for use in
+       // Prometheus configuration files by users.
+       TmpLabelPrefix = "__tmp_"
+
+       // ParamLabelPrefix is a prefix for labels that provide URL parameters
+       // used to scrape a target.
+       ParamLabelPrefix = "__param_"
+
+       // JobLabel is the label name indicating the job from which a timeseries
+       // was scraped.
+       JobLabel = "job"
+
+       // InstanceLabel is the label name used for the instance label.
+       InstanceLabel = "instance"
+
+       // BucketLabel is used for the label that defines the upper bound of a
+       // bucket of a histogram ("le" -> "less or equal").
+       BucketLabel = "le"
+
+       // QuantileLabel is used for the label that defines the quantile in a
+       // summary.
+       QuantileLabel = "quantile"
+)
+
+// LabelNameRE is a regular expression matching valid label names.
+var LabelNameRE = regexp.MustCompile("^[a-zA-Z_][a-zA-Z0-9_]*$")
+
+// A LabelName is a key for a LabelSet or Metric.  It has a value associated
+// therewith.
+type LabelName string
+
+// IsValid is true iff the label name matches the pattern of LabelNameRE.
+func (ln LabelName) IsValid() bool {
+       if len(ln) == 0 {
+               return false
+       }
+       for i, b := range ln {
+               if !((b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') || b == '_' || (b >= '0' && b <= '9' && i > 0)) {
+                       return false
+               }
+       }
+       return true
+}
+
+// UnmarshalYAML implements the yaml.Unmarshaler interface.
+func (ln *LabelName) UnmarshalYAML(unmarshal func(interface{}) error) error {
+       var s string
+       if err := unmarshal(&s); err != nil {
+               return err
+       }
+       if !LabelNameRE.MatchString(s) {
+               return fmt.Errorf("%q is not a valid label name", s)
+       }
+       *ln = LabelName(s)
+       return nil
+}
+
+// UnmarshalJSON implements the json.Unmarshaler interface.
+func (ln *LabelName) UnmarshalJSON(b []byte) error {
+       var s string
+       if err := json.Unmarshal(b, &s); err != nil {
+               return err
+       }
+       if !LabelNameRE.MatchString(s) {
+               return fmt.Errorf("%q is not a valid label name", s)
+       }
+       *ln = LabelName(s)
+       return nil
+}
+
+// LabelNames is a sortable LabelName slice. In implements sort.Interface.
+type LabelNames []LabelName
+
+func (l LabelNames) Len() int {
+       return len(l)
+}
+
+func (l LabelNames) Less(i, j int) bool {
+       return l[i] < l[j]
+}
+
+func (l LabelNames) Swap(i, j int) {
+       l[i], l[j] = l[j], l[i]
+}
+
+func (l LabelNames) String() string {
+       labelStrings := make([]string, 0, len(l))
+       for _, label := range l {
+               labelStrings = append(labelStrings, string(label))
+       }
+       return strings.Join(labelStrings, ", ")
+}
+
+// A LabelValue is an associated value for a LabelName.
+type LabelValue string
+
+// IsValid returns true iff the string is a valid UTF8.
+func (lv LabelValue) IsValid() bool {
+       return utf8.ValidString(string(lv))
+}
+
+// LabelValues is a sortable LabelValue slice. It implements sort.Interface.
+type LabelValues []LabelValue
+
+func (l LabelValues) Len() int {
+       return len(l)
+}
+
+func (l LabelValues) Less(i, j int) bool {
+       return string(l[i]) < string(l[j])
+}
+
+func (l LabelValues) Swap(i, j int) {
+       l[i], l[j] = l[j], l[i]
+}
+
+// LabelPair pairs a name with a value.
+type LabelPair struct {
+       Name  LabelName
+       Value LabelValue
+}
+
+// LabelPairs is a sortable slice of LabelPair pointers. It implements
+// sort.Interface.
+type LabelPairs []*LabelPair
+
+func (l LabelPairs) Len() int {
+       return len(l)
+}
+
+func (l LabelPairs) Less(i, j int) bool {
+       switch {
+       case l[i].Name > l[j].Name:
+               return false
+       case l[i].Name < l[j].Name:
+               return true
+       case l[i].Value > l[j].Value:
+               return false
+       case l[i].Value < l[j].Value:
+               return true
+       default:
+               return false
+       }
+}
+
+func (l LabelPairs) Swap(i, j int) {
+       l[i], l[j] = l[j], l[i]
+}
diff --git a/vendor/github.com/prometheus/common/model/labelset.go b/vendor/github.com/prometheus/common/model/labelset.go
new file mode 100644 (file)
index 0000000..5f931cd
--- /dev/null
@@ -0,0 +1,169 @@
+// Copyright 2013 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package model
+
+import (
+       "encoding/json"
+       "fmt"
+       "sort"
+       "strings"
+)
+
+// A LabelSet is a collection of LabelName and LabelValue pairs.  The LabelSet
+// may be fully-qualified down to the point where it may resolve to a single
+// Metric in the data store or not.  All operations that occur within the realm
+// of a LabelSet can emit a vector of Metric entities to which the LabelSet may
+// match.
+type LabelSet map[LabelName]LabelValue
+
+// Validate checks whether all names and values in the label set
+// are valid.
+func (ls LabelSet) Validate() error {
+       for ln, lv := range ls {
+               if !ln.IsValid() {
+                       return fmt.Errorf("invalid name %q", ln)
+               }
+               if !lv.IsValid() {
+                       return fmt.Errorf("invalid value %q", lv)
+               }
+       }
+       return nil
+}
+
+// Equal returns true iff both label sets have exactly the same key/value pairs.
+func (ls LabelSet) Equal(o LabelSet) bool {
+       if len(ls) != len(o) {
+               return false
+       }
+       for ln, lv := range ls {
+               olv, ok := o[ln]
+               if !ok {
+                       return false
+               }
+               if olv != lv {
+                       return false
+               }
+       }
+       return true
+}
+
+// Before compares the metrics, using the following criteria:
+//
+// If m has fewer labels than o, it is before o. If it has more, it is not.
+//
+// If the number of labels is the same, the superset of all label names is
+// sorted alphanumerically. The first differing label pair found in that order
+// determines the outcome: If the label does not exist at all in m, then m is
+// before o, and vice versa. Otherwise the label value is compared
+// alphanumerically.
+//
+// If m and o are equal, the method returns false.
+func (ls LabelSet) Before(o LabelSet) bool {
+       if len(ls) < len(o) {
+               return true
+       }
+       if len(ls) > len(o) {
+               return false
+       }
+
+       lns := make(LabelNames, 0, len(ls)+len(o))
+       for ln := range ls {
+               lns = append(lns, ln)
+       }
+       for ln := range o {
+               lns = append(lns, ln)
+       }
+       // It's probably not worth it to de-dup lns.
+       sort.Sort(lns)
+       for _, ln := range lns {
+               mlv, ok := ls[ln]
+               if !ok {
+                       return true
+               }
+               olv, ok := o[ln]
+               if !ok {
+                       return false
+               }
+               if mlv < olv {
+                       return true
+               }
+               if mlv > olv {
+                       return false
+               }
+       }
+       return false
+}
+
+// Clone returns a copy of the label set.
+func (ls LabelSet) Clone() LabelSet {
+       lsn := make(LabelSet, len(ls))
+       for ln, lv := range ls {
+               lsn[ln] = lv
+       }
+       return lsn
+}
+
+// Merge is a helper function to non-destructively merge two label sets.
+func (l LabelSet) Merge(other LabelSet) LabelSet {
+       result := make(LabelSet, len(l))
+
+       for k, v := range l {
+               result[k] = v
+       }
+
+       for k, v := range other {
+               result[k] = v
+       }
+
+       return result
+}
+
+func (l LabelSet) String() string {
+       lstrs := make([]string, 0, len(l))
+       for l, v := range l {
+               lstrs = append(lstrs, fmt.Sprintf("%s=%q", l, v))
+       }
+
+       sort.Strings(lstrs)
+       return fmt.Sprintf("{%s}", strings.Join(lstrs, ", "))
+}
+
+// Fingerprint returns the LabelSet's fingerprint.
+func (ls LabelSet) Fingerprint() Fingerprint {
+       return labelSetToFingerprint(ls)
+}
+
+// FastFingerprint returns the LabelSet's Fingerprint calculated by a faster hashing
+// algorithm, which is, however, more susceptible to hash collisions.
+func (ls LabelSet) FastFingerprint() Fingerprint {
+       return labelSetToFastFingerprint(ls)
+}
+
+// UnmarshalJSON implements the json.Unmarshaler interface.
+func (l *LabelSet) UnmarshalJSON(b []byte) error {
+       var m map[LabelName]LabelValue
+       if err := json.Unmarshal(b, &m); err != nil {
+               return err
+       }
+       // encoding/json only unmarshals maps of the form map[string]T. It treats
+       // LabelName as a string and does not call its UnmarshalJSON method.
+       // Thus, we have to replicate the behavior here.
+       for ln := range m {
+               if !LabelNameRE.MatchString(string(ln)) {
+                       return fmt.Errorf("%q is not a valid label name", ln)
+               }
+       }
+       *l = LabelSet(m)
+       return nil
+}
diff --git a/vendor/github.com/prometheus/common/model/metric.go b/vendor/github.com/prometheus/common/model/metric.go
new file mode 100644 (file)
index 0000000..a5da59a
--- /dev/null
@@ -0,0 +1,98 @@
+// Copyright 2013 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package model
+
+import (
+       "fmt"
+       "regexp"
+       "sort"
+       "strings"
+)
+
+var (
+       separator    = []byte{0}
+       MetricNameRE = regexp.MustCompile(`^[a-zA-Z_][a-zA-Z0-9_:]*$`)
+)
+
+// A Metric is similar to a LabelSet, but the key difference is that a Metric is
+// a singleton and refers to one and only one stream of samples.
+type Metric LabelSet
+
+// Equal compares the metrics.
+func (m Metric) Equal(o Metric) bool {
+       return LabelSet(m).Equal(LabelSet(o))
+}
+
+// Before compares the metrics' underlying label sets.
+func (m Metric) Before(o Metric) bool {
+       return LabelSet(m).Before(LabelSet(o))
+}
+
+// Clone returns a copy of the Metric.
+func (m Metric) Clone() Metric {
+       clone := Metric{}
+       for k, v := range m {
+               clone[k] = v
+       }
+       return clone
+}
+
+func (m Metric) String() string {
+       metricName, hasName := m[MetricNameLabel]
+       numLabels := len(m) - 1
+       if !hasName {
+               numLabels = len(m)
+       }
+       labelStrings := make([]string, 0, numLabels)
+       for label, value := range m {
+               if label != MetricNameLabel {
+                       labelStrings = append(labelStrings, fmt.Sprintf("%s=%q", label, value))
+               }
+       }
+
+       switch numLabels {
+       case 0:
+               if hasName {
+                       return string(metricName)
+               }
+               return "{}"
+       default:
+               sort.Strings(labelStrings)
+               return fmt.Sprintf("%s{%s}", metricName, strings.Join(labelStrings, ", "))
+       }
+}
+
+// Fingerprint returns a Metric's Fingerprint.
+func (m Metric) Fingerprint() Fingerprint {
+       return LabelSet(m).Fingerprint()
+}
+
+// FastFingerprint returns a Metric's Fingerprint calculated by a faster hashing
+// algorithm, which is, however, more susceptible to hash collisions.
+func (m Metric) FastFingerprint() Fingerprint {
+       return LabelSet(m).FastFingerprint()
+}
+
+// IsValidMetricName returns true iff name matches the pattern of MetricNameRE.
+func IsValidMetricName(n LabelValue) bool {
+       if len(n) == 0 {
+               return false
+       }
+       for i, b := range n {
+               if !((b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z') || b == '_' || b == ':' || (b >= '0' && b <= '9' && i > 0)) {
+                       return false
+               }
+       }
+       return true
+}
diff --git a/vendor/github.com/prometheus/common/model/model.go b/vendor/github.com/prometheus/common/model/model.go
new file mode 100644 (file)
index 0000000..88f013a
--- /dev/null
@@ -0,0 +1,16 @@
+// Copyright 2013 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Package model contains common data structures that are shared across
+// Prometheus componenets and libraries.
+package model
diff --git a/vendor/github.com/prometheus/common/model/signature.go b/vendor/github.com/prometheus/common/model/signature.go
new file mode 100644 (file)
index 0000000..8762b13
--- /dev/null
@@ -0,0 +1,144 @@
+// Copyright 2014 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package model
+
+import (
+       "sort"
+)
+
+// SeparatorByte is a byte that cannot occur in valid UTF-8 sequences and is
+// used to separate label names, label values, and other strings from each other
+// when calculating their combined hash value (aka signature aka fingerprint).
+const SeparatorByte byte = 255
+
+var (
+       // cache the signature of an empty label set.
+       emptyLabelSignature = hashNew()
+)
+
+// LabelsToSignature returns a quasi-unique signature (i.e., fingerprint) for a
+// given label set. (Collisions are possible but unlikely if the number of label
+// sets the function is applied to is small.)
+func LabelsToSignature(labels map[string]string) uint64 {
+       if len(labels) == 0 {
+               return emptyLabelSignature
+       }
+
+       labelNames := make([]string, 0, len(labels))
+       for labelName := range labels {
+               labelNames = append(labelNames, labelName)
+       }
+       sort.Strings(labelNames)
+
+       sum := hashNew()
+       for _, labelName := range labelNames {
+               sum = hashAdd(sum, labelName)
+               sum = hashAddByte(sum, SeparatorByte)
+               sum = hashAdd(sum, labels[labelName])
+               sum = hashAddByte(sum, SeparatorByte)
+       }
+       return sum
+}
+
+// labelSetToFingerprint works exactly as LabelsToSignature but takes a LabelSet as
+// parameter (rather than a label map) and returns a Fingerprint.
+func labelSetToFingerprint(ls LabelSet) Fingerprint {
+       if len(ls) == 0 {
+               return Fingerprint(emptyLabelSignature)
+       }
+
+       labelNames := make(LabelNames, 0, len(ls))
+       for labelName := range ls {
+               labelNames = append(labelNames, labelName)
+       }
+       sort.Sort(labelNames)
+
+       sum := hashNew()
+       for _, labelName := range labelNames {
+               sum = hashAdd(sum, string(labelName))
+               sum = hashAddByte(sum, SeparatorByte)
+               sum = hashAdd(sum, string(ls[labelName]))
+               sum = hashAddByte(sum, SeparatorByte)
+       }
+       return Fingerprint(sum)
+}
+
+// labelSetToFastFingerprint works similar to labelSetToFingerprint but uses a
+// faster and less allocation-heavy hash function, which is more susceptible to
+// create hash collisions. Therefore, collision detection should be applied.
+func labelSetToFastFingerprint(ls LabelSet) Fingerprint {
+       if len(ls) == 0 {
+               return Fingerprint(emptyLabelSignature)
+       }
+
+       var result uint64
+       for labelName, labelValue := range ls {
+               sum := hashNew()
+               sum = hashAdd(sum, string(labelName))
+               sum = hashAddByte(sum, SeparatorByte)
+               sum = hashAdd(sum, string(labelValue))
+               result ^= sum
+       }
+       return Fingerprint(result)
+}
+
+// SignatureForLabels works like LabelsToSignature but takes a Metric as
+// parameter (rather than a label map) and only includes the labels with the
+// specified LabelNames into the signature calculation. The labels passed in
+// will be sorted by this function.
+func SignatureForLabels(m Metric, labels ...LabelName) uint64 {
+       if len(labels) == 0 {
+               return emptyLabelSignature
+       }
+
+       sort.Sort(LabelNames(labels))
+
+       sum := hashNew()
+       for _, label := range labels {
+               sum = hashAdd(sum, string(label))
+               sum = hashAddByte(sum, SeparatorByte)
+               sum = hashAdd(sum, string(m[label]))
+               sum = hashAddByte(sum, SeparatorByte)
+       }
+       return sum
+}
+
+// SignatureWithoutLabels works like LabelsToSignature but takes a Metric as
+// parameter (rather than a label map) and excludes the labels with any of the
+// specified LabelNames from the signature calculation.
+func SignatureWithoutLabels(m Metric, labels map[LabelName]struct{}) uint64 {
+       if len(m) == 0 {
+               return emptyLabelSignature
+       }
+
+       labelNames := make(LabelNames, 0, len(m))
+       for labelName := range m {
+               if _, exclude := labels[labelName]; !exclude {
+                       labelNames = append(labelNames, labelName)
+               }
+       }
+       if len(labelNames) == 0 {
+               return emptyLabelSignature
+       }
+       sort.Sort(labelNames)
+
+       sum := hashNew()
+       for _, labelName := range labelNames {
+               sum = hashAdd(sum, string(labelName))
+               sum = hashAddByte(sum, SeparatorByte)
+               sum = hashAdd(sum, string(m[labelName]))
+               sum = hashAddByte(sum, SeparatorByte)
+       }
+       return sum
+}
diff --git a/vendor/github.com/prometheus/common/model/silence.go b/vendor/github.com/prometheus/common/model/silence.go
new file mode 100644 (file)
index 0000000..7538e29
--- /dev/null
@@ -0,0 +1,106 @@
+// Copyright 2015 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package model
+
+import (
+       "encoding/json"
+       "fmt"
+       "regexp"
+       "time"
+)
+
+// Matcher describes a matches the value of a given label.
+type Matcher struct {
+       Name    LabelName `json:"name"`
+       Value   string    `json:"value"`
+       IsRegex bool      `json:"isRegex"`
+}
+
+func (m *Matcher) UnmarshalJSON(b []byte) error {
+       type plain Matcher
+       if err := json.Unmarshal(b, (*plain)(m)); err != nil {
+               return err
+       }
+
+       if len(m.Name) == 0 {
+               return fmt.Errorf("label name in matcher must not be empty")
+       }
+       if m.IsRegex {
+               if _, err := regexp.Compile(m.Value); err != nil {
+                       return err
+               }
+       }
+       return nil
+}
+
+// Validate returns true iff all fields of the matcher have valid values.
+func (m *Matcher) Validate() error {
+       if !m.Name.IsValid() {
+               return fmt.Errorf("invalid name %q", m.Name)
+       }
+       if m.IsRegex {
+               if _, err := regexp.Compile(m.Value); err != nil {
+                       return fmt.Errorf("invalid regular expression %q", m.Value)
+               }
+       } else if !LabelValue(m.Value).IsValid() || len(m.Value) == 0 {
+               return fmt.Errorf("invalid value %q", m.Value)
+       }
+       return nil
+}
+
+// Silence defines the representation of a silence definiton
+// in the Prometheus eco-system.
+type Silence struct {
+       ID uint64 `json:"id,omitempty"`
+
+       Matchers []*Matcher `json:"matchers"`
+
+       StartsAt time.Time `json:"startsAt"`
+       EndsAt   time.Time `json:"endsAt"`
+
+       CreatedAt time.Time `json:"createdAt,omitempty"`
+       CreatedBy string    `json:"createdBy"`
+       Comment   string    `json:"comment,omitempty"`
+}
+
+// Validate returns true iff all fields of the silence have valid values.
+func (s *Silence) Validate() error {
+       if len(s.Matchers) == 0 {
+               return fmt.Errorf("at least one matcher required")
+       }
+       for _, m := range s.Matchers {
+               if err := m.Validate(); err != nil {
+                       return fmt.Errorf("invalid matcher: %s", err)
+               }
+       }
+       if s.StartsAt.IsZero() {
+               return fmt.Errorf("start time missing")
+       }
+       if s.EndsAt.IsZero() {
+               return fmt.Errorf("end time missing")
+       }
+       if s.EndsAt.Before(s.StartsAt) {
+               return fmt.Errorf("start time must be before end time")
+       }
+       if s.CreatedBy == "" {
+               return fmt.Errorf("creator information missing")
+       }
+       if s.Comment == "" {
+               return fmt.Errorf("comment missing")
+       }
+       if s.CreatedAt.IsZero() {
+               return fmt.Errorf("creation timestamp missing")
+       }
+       return nil
+}
diff --git a/vendor/github.com/prometheus/common/model/time.go b/vendor/github.com/prometheus/common/model/time.go
new file mode 100644 (file)
index 0000000..548968a
--- /dev/null
@@ -0,0 +1,249 @@
+// Copyright 2013 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package model
+
+import (
+       "fmt"
+       "math"
+       "regexp"
+       "strconv"
+       "strings"
+       "time"
+)
+
+const (
+       // MinimumTick is the minimum supported time resolution. This has to be
+       // at least time.Second in order for the code below to work.
+       minimumTick = time.Millisecond
+       // second is the Time duration equivalent to one second.
+       second = int64(time.Second / minimumTick)
+       // The number of nanoseconds per minimum tick.
+       nanosPerTick = int64(minimumTick / time.Nanosecond)
+
+       // Earliest is the earliest Time representable. Handy for
+       // initializing a high watermark.
+       Earliest = Time(math.MinInt64)
+       // Latest is the latest Time representable. Handy for initializing
+       // a low watermark.
+       Latest = Time(math.MaxInt64)
+)
+
+// Time is the number of milliseconds since the epoch
+// (1970-01-01 00:00 UTC) excluding leap seconds.
+type Time int64
+
+// Interval describes and interval between two timestamps.
+type Interval struct {
+       Start, End Time
+}
+
+// Now returns the current time as a Time.
+func Now() Time {
+       return TimeFromUnixNano(time.Now().UnixNano())
+}
+
+// TimeFromUnix returns the Time equivalent to the Unix Time t
+// provided in seconds.
+func TimeFromUnix(t int64) Time {
+       return Time(t * second)
+}
+
+// TimeFromUnixNano returns the Time equivalent to the Unix Time
+// t provided in nanoseconds.
+func TimeFromUnixNano(t int64) Time {
+       return Time(t / nanosPerTick)
+}
+
+// Equal reports whether two Times represent the same instant.
+func (t Time) Equal(o Time) bool {
+       return t == o
+}
+
+// Before reports whether the Time t is before o.
+func (t Time) Before(o Time) bool {
+       return t < o
+}
+
+// After reports whether the Time t is after o.
+func (t Time) After(o Time) bool {
+       return t > o
+}
+
+// Add returns the Time t + d.
+func (t Time) Add(d time.Duration) Time {
+       return t + Time(d/minimumTick)
+}
+
+// Sub returns the Duration t - o.
+func (t Time) Sub(o Time) time.Duration {
+       return time.Duration(t-o) * minimumTick
+}
+
+// Time returns the time.Time representation of t.
+func (t Time) Time() time.Time {
+       return time.Unix(int64(t)/second, (int64(t)%second)*nanosPerTick)
+}
+
+// Unix returns t as a Unix time, the number of seconds elapsed
+// since January 1, 1970 UTC.
+func (t Time) Unix() int64 {
+       return int64(t) / second
+}
+
+// UnixNano returns t as a Unix time, the number of nanoseconds elapsed
+// since January 1, 1970 UTC.
+func (t Time) UnixNano() int64 {
+       return int64(t) * nanosPerTick
+}
+
+// The number of digits after the dot.
+var dotPrecision = int(math.Log10(float64(second)))
+
+// String returns a string representation of the Time.
+func (t Time) String() string {
+       return strconv.FormatFloat(float64(t)/float64(second), 'f', -1, 64)
+}
+
+// MarshalJSON implements the json.Marshaler interface.
+func (t Time) MarshalJSON() ([]byte, error) {
+       return []byte(t.String()), nil
+}
+
+// UnmarshalJSON implements the json.Unmarshaler interface.
+func (t *Time) UnmarshalJSON(b []byte) error {
+       p := strings.Split(string(b), ".")
+       switch len(p) {
+       case 1:
+               v, err := strconv.ParseInt(string(p[0]), 10, 64)
+               if err != nil {
+                       return err
+               }
+               *t = Time(v * second)
+
+       case 2:
+               v, err := strconv.ParseInt(string(p[0]), 10, 64)
+               if err != nil {
+                       return err
+               }
+               v *= second
+
+               prec := dotPrecision - len(p[1])
+               if prec < 0 {
+                       p[1] = p[1][:dotPrecision]
+               } else if prec > 0 {
+                       p[1] = p[1] + strings.Repeat("0", prec)
+               }
+
+               va, err := strconv.ParseInt(p[1], 10, 32)
+               if err != nil {
+                       return err
+               }
+
+               *t = Time(v + va)
+
+       default:
+               return fmt.Errorf("invalid time %q", string(b))
+       }
+       return nil
+}
+
+// Duration wraps time.Duration. It is used to parse the custom duration format
+// from YAML.
+// This type should not propagate beyond the scope of input/output processing.
+type Duration time.Duration
+
+var durationRE = regexp.MustCompile("^([0-9]+)(y|w|d|h|m|s|ms)$")
+
+// StringToDuration parses a string into a time.Duration, assuming that a year
+// always has 365d, a week always has 7d, and a day always has 24h.
+func ParseDuration(durationStr string) (Duration, error) {
+       matches := durationRE.FindStringSubmatch(durationStr)
+       if len(matches) != 3 {
+               return 0, fmt.Errorf("not a valid duration string: %q", durationStr)
+       }
+       var (
+               n, _ = strconv.Atoi(matches[1])
+               dur  = time.Duration(n) * time.Millisecond
+       )
+       switch unit := matches[2]; unit {
+       case "y":
+               dur *= 1000 * 60 * 60 * 24 * 365
+       case "w":
+               dur *= 1000 * 60 * 60 * 24 * 7
+       case "d":
+               dur *= 1000 * 60 * 60 * 24
+       case "h":
+               dur *= 1000 * 60 * 60
+       case "m":
+               dur *= 1000 * 60
+       case "s":
+               dur *= 1000
+       case "ms":
+               // Value already correct
+       default:
+               return 0, fmt.Errorf("invalid time unit in duration string: %q", unit)
+       }
+       return Duration(dur), nil
+}
+
+func (d Duration) String() string {
+       var (
+               ms   = int64(time.Duration(d) / time.Millisecond)
+               unit = "ms"
+       )
+       factors := map[string]int64{
+               "y":  1000 * 60 * 60 * 24 * 365,
+               "w":  1000 * 60 * 60 * 24 * 7,
+               "d":  1000 * 60 * 60 * 24,
+               "h":  1000 * 60 * 60,
+               "m":  1000 * 60,
+               "s":  1000,
+               "ms": 1,
+       }
+
+       switch int64(0) {
+       case ms % factors["y"]:
+               unit = "y"
+       case ms % factors["w"]:
+               unit = "w"
+       case ms % factors["d"]:
+               unit = "d"
+       case ms % factors["h"]:
+               unit = "h"
+       case ms % factors["m"]:
+               unit = "m"
+       case ms % factors["s"]:
+               unit = "s"
+       }
+       return fmt.Sprintf("%v%v", ms/factors[unit], unit)
+}
+
+// MarshalYAML implements the yaml.Marshaler interface.
+func (d Duration) MarshalYAML() (interface{}, error) {
+       return d.String(), nil
+}
+
+// UnmarshalYAML implements the yaml.Unmarshaler interface.
+func (d *Duration) UnmarshalYAML(unmarshal func(interface{}) error) error {
+       var s string
+       if err := unmarshal(&s); err != nil {
+               return err
+       }
+       dur, err := ParseDuration(s)
+       if err != nil {
+               return err
+       }
+       *d = dur
+       return nil
+}
diff --git a/vendor/github.com/prometheus/common/model/value.go b/vendor/github.com/prometheus/common/model/value.go
new file mode 100644 (file)
index 0000000..10ffb0b
--- /dev/null
@@ -0,0 +1,395 @@
+// Copyright 2013 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package model
+
+import (
+       "encoding/json"
+       "fmt"
+       "sort"
+       "strconv"
+       "strings"
+)
+
+// A SampleValue is a representation of a value for a given sample at a given
+// time.
+type SampleValue float64
+
+// MarshalJSON implements json.Marshaler.
+func (v SampleValue) MarshalJSON() ([]byte, error) {
+       return json.Marshal(v.String())
+}
+
+// UnmarshalJSON implements json.Unmarshaler.
+func (v *SampleValue) UnmarshalJSON(b []byte) error {
+       if len(b) < 2 || b[0] != '"' || b[len(b)-1] != '"' {
+               return fmt.Errorf("sample value must be a quoted string")
+       }
+       f, err := strconv.ParseFloat(string(b[1:len(b)-1]), 64)
+       if err != nil {
+               return err
+       }
+       *v = SampleValue(f)
+       return nil
+}
+
+func (v SampleValue) Equal(o SampleValue) bool {
+       return v == o
+}
+
+func (v SampleValue) String() string {
+       return strconv.FormatFloat(float64(v), 'f', -1, 64)
+}
+
+// SamplePair pairs a SampleValue with a Timestamp.
+type SamplePair struct {
+       Timestamp Time
+       Value     SampleValue
+}
+
+// MarshalJSON implements json.Marshaler.
+func (s SamplePair) MarshalJSON() ([]byte, error) {
+       t, err := json.Marshal(s.Timestamp)
+       if err != nil {
+               return nil, err
+       }
+       v, err := json.Marshal(s.Value)
+       if err != nil {
+               return nil, err
+       }
+       return []byte(fmt.Sprintf("[%s,%s]", t, v)), nil
+}
+
+// UnmarshalJSON implements json.Unmarshaler.
+func (s *SamplePair) UnmarshalJSON(b []byte) error {
+       v := [...]json.Unmarshaler{&s.Timestamp, &s.Value}
+       return json.Unmarshal(b, &v)
+}
+
+// Equal returns true if this SamplePair and o have equal Values and equal
+// Timestamps.
+func (s *SamplePair) Equal(o *SamplePair) bool {
+       return s == o || (s.Value == o.Value && s.Timestamp.Equal(o.Timestamp))
+}
+
+func (s SamplePair) String() string {
+       return fmt.Sprintf("%s @[%s]", s.Value, s.Timestamp)
+}
+
+// Sample is a sample pair associated with a metric.
+type Sample struct {
+       Metric    Metric      `json:"metric"`
+       Value     SampleValue `json:"value"`
+       Timestamp Time        `json:"timestamp"`
+}
+
+// Equal compares first the metrics, then the timestamp, then the value.
+func (s *Sample) Equal(o *Sample) bool {
+       if s == o {
+               return true
+       }
+
+       if !s.Metric.Equal(o.Metric) {
+               return false
+       }
+       if !s.Timestamp.Equal(o.Timestamp) {
+               return false
+       }
+       if s.Value != o.Value {
+               return false
+       }
+
+       return true
+}
+
+func (s Sample) String() string {
+       return fmt.Sprintf("%s => %s", s.Metric, SamplePair{
+               Timestamp: s.Timestamp,
+               Value:     s.Value,
+       })
+}
+
+// MarshalJSON implements json.Marshaler.
+func (s Sample) MarshalJSON() ([]byte, error) {
+       v := struct {
+               Metric Metric     `json:"metric"`
+               Value  SamplePair `json:"value"`
+       }{
+               Metric: s.Metric,
+               Value: SamplePair{
+                       Timestamp: s.Timestamp,
+                       Value:     s.Value,
+               },
+       }
+
+       return json.Marshal(&v)
+}
+
+// UnmarshalJSON implements json.Unmarshaler.
+func (s *Sample) UnmarshalJSON(b []byte) error {
+       v := struct {
+               Metric Metric     `json:"metric"`
+               Value  SamplePair `json:"value"`
+       }{
+               Metric: s.Metric,
+               Value: SamplePair{
+                       Timestamp: s.Timestamp,
+                       Value:     s.Value,
+               },
+       }
+
+       if err := json.Unmarshal(b, &v); err != nil {
+               return err
+       }
+
+       s.Metric = v.Metric
+       s.Timestamp = v.Value.Timestamp
+       s.Value = v.Value.Value
+
+       return nil
+}
+
+// Samples is a sortable Sample slice. It implements sort.Interface.
+type Samples []*Sample
+
+func (s Samples) Len() int {
+       return len(s)
+}
+
+// Less compares first the metrics, then the timestamp.
+func (s Samples) Less(i, j int) bool {
+       switch {
+       case s[i].Metric.Before(s[j].Metric):
+               return true
+       case s[j].Metric.Before(s[i].Metric):
+               return false
+       case s[i].Timestamp.Before(s[j].Timestamp):
+               return true
+       default:
+               return false
+       }
+}
+
+func (s Samples) Swap(i, j int) {
+       s[i], s[j] = s[j], s[i]
+}
+
+// Equal compares two sets of samples and returns true if they are equal.
+func (s Samples) Equal(o Samples) bool {
+       if len(s) != len(o) {
+               return false
+       }
+
+       for i, sample := range s {
+               if !sample.Equal(o[i]) {
+                       return false
+               }
+       }
+       return true
+}
+
+// SampleStream is a stream of Values belonging to an attached COWMetric.
+type SampleStream struct {
+       Metric Metric       `json:"metric"`
+       Values []SamplePair `json:"values"`
+}
+
+func (ss SampleStream) String() string {
+       vals := make([]string, len(ss.Values))
+       for i, v := range ss.Values {
+               vals[i] = v.String()
+       }
+       return fmt.Sprintf("%s =>\n%s", ss.Metric, strings.Join(vals, "\n"))
+}
+
+// Value is a generic interface for values resulting from a query evaluation.
+type Value interface {
+       Type() ValueType
+       String() string
+}
+
+func (Matrix) Type() ValueType  { return ValMatrix }
+func (Vector) Type() ValueType  { return ValVector }
+func (*Scalar) Type() ValueType { return ValScalar }
+func (*String) Type() ValueType { return ValString }
+
+type ValueType int
+
+const (
+       ValNone ValueType = iota
+       ValScalar
+       ValVector
+       ValMatrix
+       ValString
+)
+
+// MarshalJSON implements json.Marshaler.
+func (et ValueType) MarshalJSON() ([]byte, error) {
+       return json.Marshal(et.String())
+}
+
+func (et *ValueType) UnmarshalJSON(b []byte) error {
+       var s string
+       if err := json.Unmarshal(b, &s); err != nil {
+               return err
+       }
+       switch s {
+       case "<ValNone>":
+               *et = ValNone
+       case "scalar":
+               *et = ValScalar
+       case "vector":
+               *et = ValVector
+       case "matrix":
+               *et = ValMatrix
+       case "string":
+               *et = ValString
+       default:
+               return fmt.Errorf("unknown value type %q", s)
+       }
+       return nil
+}
+
+func (e ValueType) String() string {
+       switch e {
+       case ValNone:
+               return "<ValNone>"
+       case ValScalar:
+               return "scalar"
+       case ValVector:
+               return "vector"
+       case ValMatrix:
+               return "matrix"
+       case ValString:
+               return "string"
+       }
+       panic("ValueType.String: unhandled value type")
+}
+
+// Scalar is a scalar value evaluated at the set timestamp.
+type Scalar struct {
+       Value     SampleValue `json:"value"`
+       Timestamp Time        `json:"timestamp"`
+}
+
+func (s Scalar) String() string {
+       return fmt.Sprintf("scalar: %v @[%v]", s.Value, s.Timestamp)
+}
+
+// MarshalJSON implements json.Marshaler.
+func (s Scalar) MarshalJSON() ([]byte, error) {
+       v := strconv.FormatFloat(float64(s.Value), 'f', -1, 64)
+       return json.Marshal([...]interface{}{s.Timestamp, string(v)})
+}
+
+// UnmarshalJSON implements json.Unmarshaler.
+func (s *Scalar) UnmarshalJSON(b []byte) error {
+       var f string
+       v := [...]interface{}{&s.Timestamp, &f}
+
+       if err := json.Unmarshal(b, &v); err != nil {
+               return err
+       }
+
+       value, err := strconv.ParseFloat(f, 64)
+       if err != nil {
+               return fmt.Errorf("error parsing sample value: %s", err)
+       }
+       s.Value = SampleValue(value)
+       return nil
+}
+
+// String is a string value evaluated at the set timestamp.
+type String struct {
+       Value     string `json:"value"`
+       Timestamp Time   `json:"timestamp"`
+}
+
+func (s *String) String() string {
+       return s.Value
+}
+
+// MarshalJSON implements json.Marshaler.
+func (s String) MarshalJSON() ([]byte, error) {
+       return json.Marshal([]interface{}{s.Timestamp, s.Value})
+}
+
+// UnmarshalJSON implements json.Unmarshaler.
+func (s *String) UnmarshalJSON(b []byte) error {
+       v := [...]interface{}{&s.Timestamp, &s.Value}
+       return json.Unmarshal(b, &v)
+}
+
+// Vector is basically only an alias for Samples, but the
+// contract is that in a Vector, all Samples have the same timestamp.
+type Vector []*Sample
+
+func (vec Vector) String() string {
+       entries := make([]string, len(vec))
+       for i, s := range vec {
+               entries[i] = s.String()
+       }
+       return strings.Join(entries, "\n")
+}
+
+func (vec Vector) Len() int      { return len(vec) }
+func (vec Vector) Swap(i, j int) { vec[i], vec[j] = vec[j], vec[i] }
+
+// Less compares first the metrics, then the timestamp.
+func (vec Vector) Less(i, j int) bool {
+       switch {
+       case vec[i].Metric.Before(vec[j].Metric):
+               return true
+       case vec[j].Metric.Before(vec[i].Metric):
+               return false
+       case vec[i].Timestamp.Before(vec[j].Timestamp):
+               return true
+       default:
+               return false
+       }
+}
+
+// Equal compares two sets of samples and returns true if they are equal.
+func (vec Vector) Equal(o Vector) bool {
+       if len(vec) != len(o) {
+               return false
+       }
+
+       for i, sample := range vec {
+               if !sample.Equal(o[i]) {
+                       return false
+               }
+       }
+       return true
+}
+
+// Matrix is a list of time series.
+type Matrix []*SampleStream
+
+func (m Matrix) Len() int           { return len(m) }
+func (m Matrix) Less(i, j int) bool { return m[i].Metric.Before(m[j].Metric) }
+func (m Matrix) Swap(i, j int)      { m[i], m[j] = m[j], m[i] }
+
+func (mat Matrix) String() string {
+       matCp := make(Matrix, len(mat))
+       copy(matCp, mat)
+       sort.Sort(matCp)
+
+       strs := make([]string, len(matCp))
+
+       for i, ss := range matCp {
+               strs[i] = ss.String()
+       }
+
+       return strings.Join(strs, "\n")
+}
diff --git a/vendor/github.com/prometheus/log/AUTHORS.md b/vendor/github.com/prometheus/log/AUTHORS.md
new file mode 100644 (file)
index 0000000..3aaa7f2
--- /dev/null
@@ -0,0 +1,11 @@
+The Prometheus project was started by Matt T. Proud (emeritus) and
+Julius Volz in 2012.
+
+Maintainers of this repository:
+
+* Julius Volz <julius.volz@gmail.com>
+
+The following individuals have contributed code to this repository
+(listed in alphabetical order):
+
+* Julius Volz <julius.volz@gmail.com>
diff --git a/vendor/github.com/prometheus/log/CONTRIBUTING.md b/vendor/github.com/prometheus/log/CONTRIBUTING.md
new file mode 100644 (file)
index 0000000..5705f0f
--- /dev/null
@@ -0,0 +1,18 @@
+# Contributing
+
+Prometheus uses GitHub to manage reviews of pull requests.
+
+* If you have a trivial fix or improvement, go ahead and create a pull
+  request, addressing (with `@...`) one or more of the maintainers
+  (see [AUTHORS.md](AUTHORS.md)) in the description of the pull request.
+
+* If you plan to do something more involved, first discuss your ideas
+  on our [mailing list](https://groups.google.com/forum/?fromgroups#!forum/prometheus-developers).
+  This will avoid unnecessary work and surely give you and us a good deal
+  of inspiration.
+
+* Relevant coding style guidelines are the [Go Code Review
+  Comments](https://code.google.com/p/go-wiki/wiki/CodeReviewComments)
+  and the _Formatting and style_ section of Peter Bourgon's [Go: Best
+  Practices for Production
+  Environments](http://peter.bourgon.org/go-in-production/#formatting-and-style).
diff --git a/vendor/github.com/prometheus/log/LICENSE b/vendor/github.com/prometheus/log/LICENSE
new file mode 100644 (file)
index 0000000..261eeb9
--- /dev/null
@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/vendor/github.com/prometheus/log/NOTICE b/vendor/github.com/prometheus/log/NOTICE
new file mode 100644 (file)
index 0000000..1f37552
--- /dev/null
@@ -0,0 +1,2 @@
+Standard logging library for Go-based Prometheus components.
+Copyright 2015 The Prometheus Authors
diff --git a/vendor/github.com/prometheus/log/README.md b/vendor/github.com/prometheus/log/README.md
new file mode 100644 (file)
index 0000000..453abc3
--- /dev/null
@@ -0,0 +1,10 @@
+# Prometheus Logging Library
+
+**Deprecated: This repository is superseded by [common/log](https://github.com/prometheus/common/tree/master/log).**
+
+Standard logging library for Go-based Prometheus components.
+
+This library wraps
+[https://github.com/Sirupsen/logrus](https://github.com/Sirupsen/logrus) in
+order to add line:file annotations to log lines, as well as to provide common
+command-line flags for Prometheus components using it.
diff --git a/vendor/github.com/prometheus/log/log.go b/vendor/github.com/prometheus/log/log.go
new file mode 100644 (file)
index 0000000..8c85df3
--- /dev/null
@@ -0,0 +1,171 @@
+// Copyright 2015 The Prometheus Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package log
+
+import (
+       "flag"
+       "runtime"
+       "strings"
+
+       "github.com/Sirupsen/logrus"
+)
+
+var logger = logrus.New()
+
+type levelFlag struct{}
+
+// String implements flag.Value.
+func (f levelFlag) String() string {
+       return logger.Level.String()
+}
+
+// Set implements flag.Value.
+func (f levelFlag) Set(level string) error {
+       l, err := logrus.ParseLevel(level)
+       if err != nil {
+               return err
+       }
+       logger.Level = l
+       return nil
+}
+
+func init() {
+       // In order for this flag to take effect, the user of the package must call
+       // flag.Parse() before logging anything.
+       flag.Var(levelFlag{}, "log.level", "Only log messages with the given severity or above. Valid levels: [debug, info, warn, error, fatal, panic].")
+}
+
+// fileLineEntry returns a logrus.Entry with file and line annotations for the
+// original user log statement (two stack frames up from this function).
+func fileLineEntry() *logrus.Entry {
+       _, file, line, ok := runtime.Caller(2)
+       if !ok {
+               file = "<???>"
+               line = 1
+       } else {
+               slash := strings.LastIndex(file, "/")
+               if slash >= 0 {
+                       file = file[slash+1:]
+               }
+       }
+       return logger.WithFields(logrus.Fields{
+               "file": file,
+               "line": line,
+       })
+}
+
+// Debug logs a message at level Debug on the standard logger.
+func Debug(args ...interface{}) {
+       fileLineEntry().Debug(args...)
+}
+
+// Debugln logs a message at level Debug on the standard logger.
+func Debugln(args ...interface{}) {
+       fileLineEntry().Debugln(args...)
+}
+
+// Debugf logs a message at level Debug on the standard logger.
+func Debugf(format string, args ...interface{}) {
+       fileLineEntry().Debugf(format, args...)
+}
+
+// Info logs a message at level Info on the standard logger.
+func Info(args ...interface{}) {
+       fileLineEntry().Info(args...)
+}
+
+// Infoln logs a message at level Info on the standard logger.
+func Infoln(args ...interface{}) {
+       fileLineEntry().Infoln(args...)
+}
+
+// Infof logs a message at level Info on the standard logger.
+func Infof(format string, args ...interface{}) {
+       fileLineEntry().Infof(format, args...)
+}
+
+// Print logs a message at level Info on the standard logger.
+func Print(args ...interface{}) {
+       fileLineEntry().Info(args...)
+}
+
+// Println logs a message at level Info on the standard logger.
+func Println(args ...interface{}) {
+       fileLineEntry().Infoln(args...)
+}
+
+// Printf logs a message at level Info on the standard logger.
+func Printf(format string, args ...interface{}) {
+       fileLineEntry().Infof(format, args...)
+}
+
+// Warn logs a message at level Warn on the standard logger.
+func Warn(args ...interface{}) {
+       fileLineEntry().Warn(args...)
+}
+
+// Warnln logs a message at level Warn on the standard logger.
+func Warnln(args ...interface{}) {
+       fileLineEntry().Warnln(args...)
+}
+
+// Warnf logs a message at level Warn on the standard logger.
+func Warnf(format string, args ...interface{}) {
+       fileLineEntry().Warnf(format, args...)
+}
+
+// Error logs a message at level Error on the standard logger.
+func Error(args ...interface{}) {
+       fileLineEntry().Error(args...)
+}
+
+// Errorln logs a message at level Error on the standard logger.
+func Errorln(args ...interface{}) {
+       fileLineEntry().Errorln(args...)
+}
+
+// Errorf logs a message at level Error on the standard logger.
+func Errorf(format string, args ...interface{}) {
+       fileLineEntry().Errorf(format, args...)
+}
+
+// Fatal logs a message at level Fatal on the standard logger.
+func Fatal(args ...interface{}) {
+       fileLineEntry().Fatal(args...)
+}
+
+// Fatalln logs a message at level Fatal on the standard logger.
+func Fatalln(args ...interface{}) {
+       fileLineEntry().Fatalln(args...)
+}
+
+// Fatalf logs a message at level Fatal on the standard logger.
+func Fatalf(format string, args ...interface{}) {
+       fileLineEntry().Fatalf(format, args...)
+}
+
+// Panic logs a message at level Panic on the standard logger.
+func Panic(args ...interface{}) {
+       fileLineEntry().Panicln(args...)
+}
+
+// Panicln logs a message at level Panic on the standard logger.
+func Panicln(args ...interface{}) {
+       fileLineEntry().Panicln(args...)
+}
+
+// Panicf logs a message at level Panic on the standard logger.
+func Panicf(format string, args ...interface{}) {
+       fileLineEntry().Panicf(format, args...)
+}
diff --git a/vendor/github.com/prometheus/procfs/AUTHORS.md b/vendor/github.com/prometheus/procfs/AUTHORS.md
new file mode 100644 (file)
index 0000000..0c802dd
--- /dev/null
@@ -0,0 +1,20 @@
+The Prometheus project was started by Matt T. Proud (emeritus) and
+Julius Volz in 2012.
+
+Maintainers of this repository:
+
+* Tobias Schmidt <ts@soundcloud.com>
+
+The following individuals have contributed code to this repository
+(listed in alphabetical order):
+
+* Armen Baghumian <abaghumian@noggin.com.au>
+* Bjoern Rabenstein <beorn@soundcloud.com>
+* David Cournapeau <cournape@gmail.com>
+* Ji-Hoon, Seol <jihoon.seol@gmail.com>
+* Jonas Große Sundrup <cherti@letopolis.de>
+* Julius Volz <julius.volz@gmail.com>
+* Matthias Rampke <mr@soundcloud.com>
+* Nicky Gerritsen <nicky@streamone.nl>
+* Rémi Audebert <contact@halfr.net>
+* Tobias Schmidt <tobidt@gmail.com>
diff --git a/vendor/github.com/prometheus/procfs/CONTRIBUTING.md b/vendor/github.com/prometheus/procfs/CONTRIBUTING.md
new file mode 100644 (file)
index 0000000..5705f0f
--- /dev/null
@@ -0,0 +1,18 @@
+# Contributing
+
+Prometheus uses GitHub to manage reviews of pull requests.
+
+* If you have a trivial fix or improvement, go ahead and create a pull
+  request, addressing (with `@...`) one or more of the maintainers
+  (see [AUTHORS.md](AUTHORS.md)) in the description of the pull request.
+
+* If you plan to do something more involved, first discuss your ideas
+  on our [mailing list](https://groups.google.com/forum/?fromgroups#!forum/prometheus-developers).
+  This will avoid unnecessary work and surely give you and us a good deal
+  of inspiration.
+
+* Relevant coding style guidelines are the [Go Code Review
+  Comments](https://code.google.com/p/go-wiki/wiki/CodeReviewComments)
+  and the _Formatting and style_ section of Peter Bourgon's [Go: Best
+  Practices for Production
+  Environments](http://peter.bourgon.org/go-in-production/#formatting-and-style).
diff --git a/vendor/github.com/prometheus/procfs/LICENSE b/vendor/github.com/prometheus/procfs/LICENSE
new file mode 100644 (file)
index 0000000..261eeb9
--- /dev/null
@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/vendor/github.com/prometheus/procfs/Makefile b/vendor/github.com/prometheus/procfs/Makefile
new file mode 100644 (file)
index 0000000..c264a49
--- /dev/null
@@ -0,0 +1,6 @@
+ci:
+       ! gofmt -l *.go | read nothing
+       go vet
+       go test -v ./...
+       go get github.com/golang/lint/golint
+       golint *.go
diff --git a/vendor/github.com/prometheus/procfs/NOTICE b/vendor/github.com/prometheus/procfs/NOTICE
new file mode 100644 (file)
index 0000000..53c5e9a
--- /dev/null
@@ -0,0 +1,7 @@
+procfs provides functions to retrieve system, kernel and process
+metrics from the pseudo-filesystem proc.
+
+Copyright 2014-2015 The Prometheus Authors
+
+This product includes software developed at
+SoundCloud Ltd. (http://soundcloud.com/).
diff --git a/vendor/github.com/prometheus/procfs/README.md b/vendor/github.com/prometheus/procfs/README.md
new file mode 100644 (file)
index 0000000..6e7ee6b
--- /dev/null
@@ -0,0 +1,10 @@
+# procfs
+
+This procfs package provides functions to retrieve system, kernel and process
+metrics from the pseudo-filesystem proc.
+
+*WARNING*: This package is a work in progress. Its API may still break in
+backwards-incompatible ways without warnings. Use it at your own risk.
+
+[![GoDoc](https://godoc.org/github.com/prometheus/procfs?status.png)](https://godoc.org/github.com/prometheus/procfs)
+[![Build Status](https://travis-ci.org/prometheus/procfs.svg?branch=master)](https://travis-ci.org/prometheus/procfs)
diff --git a/vendor/github.com/prometheus/procfs/doc.go b/vendor/github.com/prometheus/procfs/doc.go
new file mode 100644 (file)
index 0000000..e2acd6d
--- /dev/null
@@ -0,0 +1,45 @@
+// Copyright 2014 Prometheus Team
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Package procfs provides functions to retrieve system, kernel and process
+// metrics from the pseudo-filesystem proc.
+//
+// Example:
+//
+//    package main
+//
+//    import (
+//     "fmt"
+//     "log"
+//
+//     "github.com/prometheus/procfs"
+//    )
+//
+//    func main() {
+//     p, err := procfs.Self()
+//     if err != nil {
+//             log.Fatalf("could not get process: %s", err)
+//     }
+//
+//     stat, err := p.NewStat()
+//     if err != nil {
+//             log.Fatalf("could not get process stat: %s", err)
+//     }
+//
+//     fmt.Printf("command:  %s\n", stat.Comm)
+//     fmt.Printf("cpu time: %fs\n", stat.CPUTime())
+//     fmt.Printf("vsize:    %dB\n", stat.VirtualMemory())
+//     fmt.Printf("rss:      %dB\n", stat.ResidentMemory())
+//    }
+//
+package procfs
diff --git a/vendor/github.com/prometheus/procfs/fs.go b/vendor/github.com/prometheus/procfs/fs.go
new file mode 100644 (file)
index 0000000..49aaab0
--- /dev/null
@@ -0,0 +1,33 @@
+package procfs
+
+import (
+       "fmt"
+       "os"
+       "path"
+)
+
+// FS represents the pseudo-filesystem proc, which provides an interface to
+// kernel data structures.
+type FS string
+
+// DefaultMountPoint is the common mount point of the proc filesystem.
+const DefaultMountPoint = "/proc"
+
+// NewFS returns a new FS mounted under the given mountPoint. It will error
+// if the mount point can't be read.
+func NewFS(mountPoint string) (FS, error) {
+       info, err := os.Stat(mountPoint)
+       if err != nil {
+               return "", fmt.Errorf("could not read %s: %s", mountPoint, err)
+       }
+       if !info.IsDir() {
+               return "", fmt.Errorf("mount point %s is not a directory", mountPoint)
+       }
+
+       return FS(mountPoint), nil
+}
+
+// Path returns the path of the given subsystem relative to the procfs root.
+func (fs FS) Path(p ...string) string {
+       return path.Join(append([]string{string(fs)}, p...)...)
+}
diff --git a/vendor/github.com/prometheus/procfs/ipvs.go b/vendor/github.com/prometheus/procfs/ipvs.go
new file mode 100644 (file)
index 0000000..e7012f7
--- /dev/null
@@ -0,0 +1,224 @@
+package procfs
+
+import (
+       "bufio"
+       "encoding/hex"
+       "errors"
+       "fmt"
+       "io"
+       "io/ioutil"
+       "net"
+       "os"
+       "strconv"
+       "strings"
+)
+
+// IPVSStats holds IPVS statistics, as exposed by the kernel in `/proc/net/ip_vs_stats`.
+type IPVSStats struct {
+       // Total count of connections.
+       Connections uint64
+       // Total incoming packages processed.
+       IncomingPackets uint64
+       // Total outgoing packages processed.
+       OutgoingPackets uint64
+       // Total incoming traffic.
+       IncomingBytes uint64
+       // Total outgoing traffic.
+       OutgoingBytes uint64
+}
+
+// IPVSBackendStatus holds current metrics of one virtual / real address pair.
+type IPVSBackendStatus struct {
+       // The local (virtual) IP address.
+       LocalAddress net.IP
+       // The local (virtual) port.
+       LocalPort uint16
+       // The transport protocol (TCP, UDP).
+       Proto string
+       // The remote (real) IP address.
+       RemoteAddress net.IP
+       // The remote (real) port.
+       RemotePort uint16
+       // The current number of active connections for this virtual/real address pair.
+       ActiveConn uint64
+       // The current number of inactive connections for this virtual/real address pair.
+       InactConn uint64
+       // The current weight of this virtual/real address pair.
+       Weight uint64
+}
+
+// NewIPVSStats reads the IPVS statistics.
+func NewIPVSStats() (IPVSStats, error) {
+       fs, err := NewFS(DefaultMountPoint)
+       if err != nil {
+               return IPVSStats{}, err
+       }
+
+       return fs.NewIPVSStats()
+}
+
+// NewIPVSStats reads the IPVS statistics from the specified `proc` filesystem.
+func (fs FS) NewIPVSStats() (IPVSStats, error) {
+       file, err := os.Open(fs.Path("net/ip_vs_stats"))
+       if err != nil {
+               return IPVSStats{}, err
+       }
+       defer file.Close()
+
+       return parseIPVSStats(file)
+}
+
+// parseIPVSStats performs the actual parsing of `ip_vs_stats`.
+func parseIPVSStats(file io.Reader) (IPVSStats, error) {
+       var (
+               statContent []byte
+               statLines   []string
+               statFields  []string
+               stats       IPVSStats
+       )
+
+       statContent, err := ioutil.ReadAll(file)
+       if err != nil {
+               return IPVSStats{}, err
+       }
+
+       statLines = strings.SplitN(string(statContent), "\n", 4)
+       if len(statLines) != 4 {
+               return IPVSStats{}, errors.New("ip_vs_stats corrupt: too short")
+       }
+
+       statFields = strings.Fields(statLines[2])
+       if len(statFields) != 5 {
+               return IPVSStats{}, errors.New("ip_vs_stats corrupt: unexpected number of fields")
+       }
+
+       stats.Connections, err = strconv.ParseUint(statFields[0], 16, 64)
+       if err != nil {
+               return IPVSStats{}, err
+       }
+       stats.IncomingPackets, err = strconv.ParseUint(statFields[1], 16, 64)
+       if err != nil {
+               return IPVSStats{}, err
+       }
+       stats.OutgoingPackets, err = strconv.ParseUint(statFields[2], 16, 64)
+       if err != nil {
+               return IPVSStats{}, err
+       }
+       stats.IncomingBytes, err = strconv.ParseUint(statFields[3], 16, 64)
+       if err != nil {
+               return IPVSStats{}, err
+       }
+       stats.OutgoingBytes, err = strconv.ParseUint(statFields[4], 16, 64)
+       if err != nil {
+               return IPVSStats{}, err
+       }
+
+       return stats, nil
+}
+
+// NewIPVSBackendStatus reads and returns the status of all (virtual,real) server pairs.
+func NewIPVSBackendStatus() ([]IPVSBackendStatus, error) {
+       fs, err := NewFS(DefaultMountPoint)
+       if err != nil {
+               return []IPVSBackendStatus{}, err
+       }
+
+       return fs.NewIPVSBackendStatus()
+}
+
+// NewIPVSBackendStatus reads and returns the status of all (virtual,real) server pairs from the specified `proc` filesystem.
+func (fs FS) NewIPVSBackendStatus() ([]IPVSBackendStatus, error) {
+       file, err := os.Open(fs.Path("net/ip_vs"))
+       if err != nil {
+               return nil, err
+       }
+       defer file.Close()
+
+       return parseIPVSBackendStatus(file)
+}
+
+func parseIPVSBackendStatus(file io.Reader) ([]IPVSBackendStatus, error) {
+       var (
+               status       []IPVSBackendStatus
+               scanner      = bufio.NewScanner(file)
+               proto        string
+               localAddress net.IP
+               localPort    uint16
+               err          error
+       )
+
+       for scanner.Scan() {
+               fields := strings.Fields(string(scanner.Text()))
+               if len(fields) == 0 {
+                       continue
+               }
+               switch {
+               case fields[0] == "IP" || fields[0] == "Prot" || fields[1] == "RemoteAddress:Port":
+                       continue
+               case fields[0] == "TCP" || fields[0] == "UDP":
+                       if len(fields) < 2 {
+                               continue
+                       }
+                       proto = fields[0]
+                       localAddress, localPort, err = parseIPPort(fields[1])
+                       if err != nil {
+                               return nil, err
+                       }
+               case fields[0] == "->":
+                       if len(fields) < 6 {
+                               continue
+                       }
+                       remoteAddress, remotePort, err := parseIPPort(fields[1])
+                       if err != nil {
+                               return nil, err
+                       }
+                       weight, err := strconv.ParseUint(fields[3], 10, 64)
+                       if err != nil {
+                               return nil, err
+                       }
+                       activeConn, err := strconv.ParseUint(fields[4], 10, 64)
+                       if err != nil {
+                               return nil, err
+                       }
+                       inactConn, err := strconv.ParseUint(fields[5], 10, 64)
+                       if err != nil {
+                               return nil, err
+                       }
+                       status = append(status, IPVSBackendStatus{
+                               LocalAddress:  localAddress,
+                               LocalPort:     localPort,
+                               RemoteAddress: remoteAddress,
+                               RemotePort:    remotePort,
+                               Proto:         proto,
+                               Weight:        weight,
+                               ActiveConn:    activeConn,
+                               InactConn:     inactConn,
+                       })
+               }
+       }
+       return status, nil
+}
+
+func parseIPPort(s string) (net.IP, uint16, error) {
+       tmp := strings.SplitN(s, ":", 2)
+
+       if len(tmp) != 2 {
+               return nil, 0, fmt.Errorf("invalid IP:Port: %s", s)
+       }
+
+       if len(tmp[0]) != 8 && len(tmp[0]) != 32 {
+               return nil, 0, fmt.Errorf("invalid IP: %s", tmp[0])
+       }
+
+       ip, err := hex.DecodeString(tmp[0])
+       if err != nil {
+               return nil, 0, err
+       }
+
+       port, err := strconv.ParseUint(tmp[1], 16, 16)
+       if err != nil {
+               return nil, 0, err
+       }
+
+       return ip, uint16(port), nil
+}
diff --git a/vendor/github.com/prometheus/procfs/mdstat.go b/vendor/github.com/prometheus/procfs/mdstat.go
new file mode 100644 (file)
index 0000000..d7a248c
--- /dev/null
@@ -0,0 +1,138 @@
+package procfs
+
+import (
+       "fmt"
+       "io/ioutil"
+       "regexp"
+       "strconv"
+       "strings"
+)
+
+var (
+       statuslineRE = regexp.MustCompile(`(\d+) blocks .*\[(\d+)/(\d+)\] \[[U_]+\]`)
+       buildlineRE  = regexp.MustCompile(`\((\d+)/\d+\)`)
+)
+
+// MDStat holds info parsed from /proc/mdstat.
+type MDStat struct {
+       // Name of the device.
+       Name string
+       // activity-state of the device.
+       ActivityState string
+       // Number of active disks.
+       DisksActive int64
+       // Total number of disks the device consists of.
+       DisksTotal int64
+       // Number of blocks the device holds.
+       BlocksTotal int64
+       // Number of blocks on the device that are in sync.
+       BlocksSynced int64
+}
+
+// ParseMDStat parses an mdstat-file and returns a struct with the relevant infos.
+func (fs FS) ParseMDStat() (mdstates []MDStat, err error) {
+       mdStatusFilePath := fs.Path("mdstat")
+       content, err := ioutil.ReadFile(mdStatusFilePath)
+       if err != nil {
+               return []MDStat{}, fmt.Errorf("error parsing %s: %s", mdStatusFilePath, err)
+       }
+
+       mdStates := []MDStat{}
+       lines := strings.Split(string(content), "\n")
+       for i, l := range lines {
+               if l == "" {
+                       continue
+               }
+               if l[0] == ' ' {
+                       continue
+               }
+               if strings.HasPrefix(l, "Personalities") || strings.HasPrefix(l, "unused") {
+                       continue
+               }
+
+               mainLine := strings.Split(l, " ")
+               if len(mainLine) < 3 {
+                       return mdStates, fmt.Errorf("error parsing mdline: %s", l)
+               }
+               mdName := mainLine[0]
+               activityState := mainLine[2]
+
+               if len(lines) <= i+3 {
+                       return mdStates, fmt.Errorf(
+                               "error parsing %s: too few lines for md device %s",
+                               mdStatusFilePath,
+                               mdName,
+                       )
+               }
+
+               active, total, size, err := evalStatusline(lines[i+1])
+               if err != nil {
+                       return mdStates, fmt.Errorf("error parsing %s: %s", mdStatusFilePath, err)
+               }
+
+               // j is the line number of the syncing-line.
+               j := i + 2
+               if strings.Contains(lines[i+2], "bitmap") { // skip bitmap line
+                       j = i + 3
+               }
+
+               // If device is syncing at the moment, get the number of currently
+               // synced bytes, otherwise that number equals the size of the device.
+               syncedBlocks := size
+               if strings.Contains(lines[j], "recovery") || strings.Contains(lines[j], "resync") {
+                       syncedBlocks, err = evalBuildline(lines[j])
+                       if err != nil {
+                               return mdStates, fmt.Errorf("error parsing %s: %s", mdStatusFilePath, err)
+                       }
+               }
+
+               mdStates = append(mdStates, MDStat{
+                       Name:          mdName,
+                       ActivityState: activityState,
+                       DisksActive:   active,
+                       DisksTotal:    total,
+                       BlocksTotal:   size,
+                       BlocksSynced:  syncedBlocks,
+               })
+       }
+
+       return mdStates, nil
+}
+
+func evalStatusline(statusline string) (active, total, size int64, err error) {
+       matches := statuslineRE.FindStringSubmatch(statusline)
+       if len(matches) != 4 {
+               return 0, 0, 0, fmt.Errorf("unexpected statusline: %s", statusline)
+       }
+
+       size, err = strconv.ParseInt(matches[1], 10, 64)
+       if err != nil {
+               return 0, 0, 0, fmt.Errorf("unexpected statusline %s: %s", statusline, err)
+       }
+
+       total, err = strconv.ParseInt(matches[2], 10, 64)
+       if err != nil {
+               return 0, 0, 0, fmt.Errorf("unexpected statusline %s: %s", statusline, err)
+       }
+
+       active, err = strconv.ParseInt(matches[3], 10, 64)
+       if err != nil {
+               return 0, 0, 0, fmt.Errorf("unexpected statusline %s: %s", statusline, err)
+       }
+
+       return active, total, size, nil
+}
+
+func evalBuildline(buildline string) (syncedBlocks int64, err error) {
+       matches := buildlineRE.FindStringSubmatch(buildline)
+       if len(matches) != 2 {
+               return 0, fmt.Errorf("unexpected buildline: %s", buildline)
+       }
+
+       syncedBlocks, err = strconv.ParseInt(matches[1], 10, 64)
+       if err != nil {
+               return 0, fmt.Errorf("%s in buildline: %s", err, buildline)
+       }
+
+       return syncedBlocks, nil
+}
diff --git a/vendor/github.com/prometheus/procfs/proc.go b/vendor/github.com/prometheus/procfs/proc.go
new file mode 100644 (file)
index 0000000..deeab17
--- /dev/null
@@ -0,0 +1,212 @@
+package procfs
+
+import (
+       "fmt"
+       "io/ioutil"
+       "os"
+       "strconv"
+       "strings"
+)
+
+// Proc provides information about a running process.
+type Proc struct {
+       // The process ID.
+       PID int
+
+       fs FS
+}
+
+// Procs represents a list of Proc structs.
+type Procs []Proc
+
+func (p Procs) Len() int           { return len(p) }
+func (p Procs) Swap(i, j int)      { p[i], p[j] = p[j], p[i] }
+func (p Procs) Less(i, j int) bool { return p[i].PID < p[j].PID }
+
+// Self returns a process for the current process read via /proc/self.
+func Self() (Proc, error) {
+       fs, err := NewFS(DefaultMountPoint)
+       if err != nil {
+               return Proc{}, err
+       }
+       return fs.Self()
+}
+
+// NewProc returns a process for the given pid under /proc.
+func NewProc(pid int) (Proc, error) {
+       fs, err := NewFS(DefaultMountPoint)
+       if err != nil {
+               return Proc{}, err
+       }
+       return fs.NewProc(pid)
+}
+
+// AllProcs returns a list of all currently avaible processes under /proc.
+func AllProcs() (Procs, error) {
+       fs, err := NewFS(DefaultMountPoint)
+       if err != nil {
+               return Procs{}, err
+       }
+       return fs.AllProcs()
+}
+
+// Self returns a process for the current process.
+func (fs FS) Self() (Proc, error) {
+       p, err := os.Readlink(fs.Path("self"))
+       if err != nil {
+               return Proc{}, err
+       }
+       pid, err := strconv.Atoi(strings.Replace(p, string(fs), "", -1))
+       if err != nil {
+               return Proc{}, err
+       }
+       return fs.NewProc(pid)
+}
+
+// NewProc returns a process for the given pid.
+func (fs FS) NewProc(pid int) (Proc, error) {
+       if _, err := os.Stat(fs.Path(strconv.Itoa(pid))); err != nil {
+               return Proc{}, err
+       }
+       return Proc{PID: pid, fs: fs}, nil
+}
+
+// AllProcs returns a list of all currently avaible processes.
+func (fs FS) AllProcs() (Procs, error) {
+       d, err := os.Open(fs.Path())
+       if err != nil {
+               return Procs{}, err
+       }
+       defer d.Close()
+
+       names, err := d.Readdirnames(-1)
+       if err != nil {
+               return Procs{}, fmt.Errorf("could not read %s: %s", d.Name(), err)
+       }
+
+       p := Procs{}
+       for _, n := range names {
+               pid, err := strconv.ParseInt(n, 10, 64)
+               if err != nil {
+                       continue
+               }
+               p = append(p, Proc{PID: int(pid), fs: fs})
+       }
+
+       return p, nil
+}
+
+// CmdLine returns the command line of a process.
+func (p Proc) CmdLine() ([]string, error) {
+       f, err := os.Open(p.path("cmdline"))
+       if err != nil {
+               return nil, err
+       }
+       defer f.Close()
+
+       data, err := ioutil.ReadAll(f)
+       if err != nil {
+               return nil, err
+       }
+
+       if len(data) < 1 {
+               return []string{}, nil
+       }
+
+       return strings.Split(string(data[:len(data)-1]), string(byte(0))), nil
+}
+
+// Comm returns the command name of a process.
+func (p Proc) Comm() (string, error) {
+       f, err := os.Open(p.path("comm"))
+       if err != nil {
+               return "", err
+       }
+       defer f.Close()
+
+       data, err := ioutil.ReadAll(f)
+       if err != nil {
+               return "", err
+       }
+
+       return strings.TrimSpace(string(data)), nil
+}
+
+// Executable returns the absolute path of the executable command of a process.
+func (p Proc) Executable() (string, error) {
+       exe, err := os.Readlink(p.path("exe"))
+       if os.IsNotExist(err) {
+               return "", nil
+       }
+
+       return exe, err
+}
+
+// FileDescriptors returns the currently open file descriptors of a process.
+func (p Proc) FileDescriptors() ([]uintptr, error) {
+       names, err := p.fileDescriptors()
+       if err != nil {
+               return nil, err
+       }
+
+       fds := make([]uintptr, len(names))
+       for i, n := range names {
+               fd, err := strconv.ParseInt(n, 10, 32)
+               if err != nil {
+                       return nil, fmt.Errorf("could not parse fd %s: %s", n, err)
+               }
+               fds[i] = uintptr(fd)
+       }
+
+       return fds, nil
+}
+
+// FileDescriptorTargets returns the targets of all file descriptors of a process.
+// If a file descriptor is not a symlink to a file (like a socket), that value will be the empty string.
+func (p Proc) FileDescriptorTargets() ([]string, error) {
+       names, err := p.fileDescriptors()
+       if err != nil {
+               return nil, err
+       }
+
+       targets := make([]string, len(names))
+
+       for i, name := range names {
+               target, err := os.Readlink(p.path("fd", name))
+               if err == nil {
+                       targets[i] = target
+               }
+       }
+
+       return targets, nil
+}
+
+// FileDescriptorsLen returns the number of currently open file descriptors of
+// a process.
+func (p Proc) FileDescriptorsLen() (int, error) {
+       fds, err := p.fileDescriptors()
+       if err != nil {
+               return 0, err
+       }
+
+       return len(fds), nil
+}
+
+func (p Proc) fileDescriptors() ([]string, error) {
+       d, err := os.Open(p.path("fd"))
+       if err != nil {
+               return nil, err
+       }
+       defer d.Close()
+
+       names, err := d.Readdirnames(-1)
+       if err != nil {
+               return nil, fmt.Errorf("could not read %s: %s", d.Name(), err)
+       }
+
+       return names, nil
+}
+
+func (p Proc) path(pa ...string) string {
+       return p.fs.Path(append([]string{strconv.Itoa(p.PID)}, pa...)...)
+}
diff --git a/vendor/github.com/prometheus/procfs/proc_io.go b/vendor/github.com/prometheus/procfs/proc_io.go
new file mode 100644 (file)
index 0000000..b4e31d7
--- /dev/null
@@ -0,0 +1,55 @@
+package procfs
+
+import (
+       "fmt"
+       "io/ioutil"
+       "os"
+)
+
+// ProcIO models the content of /proc/<pid>/io.
+type ProcIO struct {
+       // Chars read.
+       RChar uint64
+       // Chars written.
+       WChar uint64
+       // Read syscalls.
+       SyscR uint64
+       // Write syscalls.
+       SyscW uint64
+       // Bytes read.
+       ReadBytes uint64
+       // Bytes written.
+       WriteBytes uint64
+       // Bytes written, but taking into account truncation. See
+       // Documentation/filesystems/proc.txt in the kernel sources for
+       // detailed explanation.
+       CancelledWriteBytes int64
+}
+
+// NewIO creates a new ProcIO instance from a given Proc instance.
+func (p Proc) NewIO() (ProcIO, error) {
+       pio := ProcIO{}
+
+       f, err := os.Open(p.path("io"))
+       if err != nil {
+               return pio, err
+       }
+       defer f.Close()
+
+       data, err := ioutil.ReadAll(f)
+       if err != nil {
+               return pio, err
+       }
+
+       ioFormat := "rchar: %d\nwchar: %d\nsyscr: %d\nsyscw: %d\n" +
+               "read_bytes: %d\nwrite_bytes: %d\n" +
+               "cancelled_write_bytes: %d\n"
+
+       _, err = fmt.Sscanf(string(data), ioFormat, &pio.RChar, &pio.WChar, &pio.SyscR,
+               &pio.SyscW, &pio.ReadBytes, &pio.WriteBytes, &pio.CancelledWriteBytes)
+       if err != nil {
+               return pio, err
+       }
+
+       return pio, nil
+}
diff --git a/vendor/github.com/prometheus/procfs/proc_limits.go b/vendor/github.com/prometheus/procfs/proc_limits.go
new file mode 100644 (file)
index 0000000..acac02b
--- /dev/null
@@ -0,0 +1,137 @@
+package procfs
+
+import (
+       "bufio"
+       "fmt"
+       "os"
+       "regexp"
+       "strconv"
+)
+
+// ProcLimits represents the soft limits for each of the process's resource
+// limits. For more information see getrlimit(2):
+// http://man7.org/linux/man-pages/man2/getrlimit.2.html.
+type ProcLimits struct {
+       // CPU time limit in seconds.
+       CPUTime int
+       // Maximum size of files that the process may create.
+       FileSize int
+       // Maximum size of the process's data segment (initialized data,
+       // uninitialized data, and heap).
+       DataSize int
+       // Maximum size of the process stack in bytes.
+       StackSize int
+       // Maximum size of a core file.
+       CoreFileSize int
+       // Limit of the process's resident set in pages.
+       ResidentSet int
+       // Maximum number of processes that can be created for the real user ID of
+       // the calling process.
+       Processes int
+       // Value one greater than the maximum file descriptor number that can be
+       // opened by this process.
+       OpenFiles int
+       // Maximum number of bytes of memory that may be locked into RAM.
+       LockedMemory int
+       // Maximum size of the process's virtual memory address space in bytes.
+       AddressSpace int
+       // Limit on the combined number of flock(2) locks and fcntl(2) leases that
+       // this process may establish.
+       FileLocks int
+       // Limit of signals that may be queued for the real user ID of the calling
+       // process.
+       PendingSignals int
+       // Limit on the number of bytes that can be allocated for POSIX message
+       // queues for the real user ID of the calling process.
+       MsqqueueSize int
+       // Limit of the nice priority set using setpriority(2) or nice(2).
+       NicePriority int
+       // Limit of the real-time priority set using sched_setscheduler(2) or
+       // sched_setparam(2).
+       RealtimePriority int
+       // Limit (in microseconds) on the amount of CPU time that a process
+       // scheduled under a real-time scheduling policy may consume without making
+       // a blocking system call.
+       RealtimeTimeout int
+}
+
+const (
+       limitsFields    = 3
+       limitsUnlimited = "unlimited"
+)
+
+var (
+       limitsDelimiter = regexp.MustCompile("  +")
+)
+
+// NewLimits returns the current soft limits of the process.
+func (p Proc) NewLimits() (ProcLimits, error) {
+       f, err := os.Open(p.path("limits"))
+       if err != nil {
+               return ProcLimits{}, err
+       }
+       defer f.Close()
+
+       var (
+               l = ProcLimits{}
+               s = bufio.NewScanner(f)
+       )
+       for s.Scan() {
+               fields := limitsDelimiter.Split(s.Text(), limitsFields)
+               if len(fields) != limitsFields {
+                       return ProcLimits{}, fmt.Errorf(
+                               "couldn't parse %s line %s", f.Name(), s.Text())
+               }
+
+               switch fields[0] {
+               case "Max cpu time":
+                       l.CPUTime, err = parseInt(fields[1])
+               case "Max file size":
+                       l.FileLocks, err = parseInt(fields[1])
+               case "Max data size":
+                       l.DataSize, err = parseInt(fields[1])
+               case "Max stack size":
+                       l.StackSize, err = parseInt(fields[1])
+               case "Max core file size":
+                       l.CoreFileSize, err = parseInt(fields[1])
+               case "Max resident set":
+                       l.ResidentSet, err = parseInt(fields[1])
+               case "Max processes":
+                       l.Processes, err = parseInt(fields[1])
+               case "Max open files":
+                       l.OpenFiles, err = parseInt(fields[1])
+               case "Max locked memory":
+                       l.LockedMemory, err = parseInt(fields[1])
+               case "Max address space":
+                       l.AddressSpace, err = parseInt(fields[1])
+               case "Max file locks":
+                       l.FileLocks, err = parseInt(fields[1])
+               case "Max pending signals":
+                       l.PendingSignals, err = parseInt(fields[1])
+               case "Max msgqueue size":
+                       l.MsqqueueSize, err = parseInt(fields[1])
+               case "Max nice priority":
+                       l.NicePriority, err = parseInt(fields[1])
+               case "Max realtime priority":
+                       l.RealtimePriority, err = parseInt(fields[1])
+               case "Max realtime timeout":
+                       l.RealtimeTimeout, err = parseInt(fields[1])
+               }
+               if err != nil {
+                       return ProcLimits{}, err
+               }
+       }
+
+       return l, s.Err()
+}
+
+func parseInt(s string) (int, error) {
+       if s == limitsUnlimited {
+               return -1, nil
+       }
+       i, err := strconv.ParseInt(s, 10, 32)
+       if err != nil {
+               return 0, fmt.Errorf("couldn't parse value %s: %s", s, err)
+       }
+       return int(i), nil
+}
diff --git a/vendor/github.com/prometheus/procfs/proc_stat.go b/vendor/github.com/prometheus/procfs/proc_stat.go
new file mode 100644 (file)
index 0000000..724e271
--- /dev/null
@@ -0,0 +1,175 @@
+package procfs
+
+import (
+       "bytes"
+       "fmt"
+       "io/ioutil"
+       "os"
+)
+
+// Originally, this USER_HZ value was dynamically retrieved via a sysconf call
+// which required cgo. However, that caused a lot of problems regarding
+// cross-compilation. Alternatives such as running a binary to determine the
+// value, or trying to derive it in some other way were all problematic.  After
+// much research it was determined that USER_HZ is actually hardcoded to 100 on
+// all Go-supported platforms as of the time of this writing. This is why we
+// decided to hardcode it here as well. It is not impossible that there could
+// be systems with exceptions, but they should be very exotic edge cases, and
+// in that case, the worst outcome will be two misreported metrics.
+//
+// See also the following discussions:
+//
+// - https://github.com/prometheus/node_exporter/issues/52
+// - https://github.com/prometheus/procfs/pull/2
+// - http://stackoverflow.com/questions/17410841/how-does-user-hz-solve-the-jiffy-scaling-issue
+const userHZ = 100
+
+// ProcStat provides status information about the process,
+// read from /proc/[pid]/stat.
+type ProcStat struct {
+       // The process ID.
+       PID int
+       // The filename of the executable.
+       Comm string
+       // The process state.
+       State string
+       // The PID of the parent of this process.
+       PPID int
+       // The process group ID of the process.
+       PGRP int
+       // The session ID of the process.
+       Session int
+       // The controlling terminal of the process.
+       TTY int
+       // The ID of the foreground process group of the controlling terminal of
+       // the process.
+       TPGID int
+       // The kernel flags word of the process.
+       Flags uint
+       // The number of minor faults the process has made which have not required
+       // loading a memory page from disk.
+       MinFlt uint
+       // The number of minor faults that the process's waited-for children have
+       // made.
+       CMinFlt uint
+       // The number of major faults the process has made which have required
+       // loading a memory page from disk.
+       MajFlt uint
+       // The number of major faults that the process's waited-for children have
+       // made.
+       CMajFlt uint
+       // Amount of time that this process has been scheduled in user mode,
+       // measured in clock ticks.
+       UTime uint
+       // Amount of time that this process has been scheduled in kernel mode,
+       // measured in clock ticks.
+       STime uint
+       // Amount of time that this process's waited-for children have been
+       // scheduled in user mode, measured in clock ticks.
+       CUTime uint
+       // Amount of time that this process's waited-for children have been
+       // scheduled in kernel mode, measured in clock ticks.
+       CSTime uint
+       // For processes running a real-time scheduling policy, this is the negated
+       // scheduling priority, minus one.
+       Priority int
+       // The nice value, a value in the range 19 (low priority) to -20 (high
+       // priority).
+       Nice int
+       // Number of threads in this process.
+       NumThreads int
+       // The time the process started after system boot, the value is expressed
+       // in clock ticks.
+       Starttime uint64
+       // Virtual memory size in bytes.
+       VSize int
+       // Resident set size in pages.
+       RSS int
+
+       fs FS
+}
+
+// NewStat returns the current status information of the process.
+func (p Proc) NewStat() (ProcStat, error) {
+       f, err := os.Open(p.path("stat"))
+       if err != nil {
+               return ProcStat{}, err
+       }
+       defer f.Close()
+
+       data, err := ioutil.ReadAll(f)
+       if err != nil {
+               return ProcStat{}, err
+       }
+
+       var (
+               ignore int
+
+               s = ProcStat{PID: p.PID, fs: p.fs}
+               l = bytes.Index(data, []byte("("))
+               r = bytes.LastIndex(data, []byte(")"))
+       )
+
+       if l < 0 || r < 0 {
+               return ProcStat{}, fmt.Errorf(
+                       "unexpected format, couldn't extract comm: %s",
+                       data,
+               )
+       }
+
+       s.Comm = string(data[l+1 : r])
+       _, err = fmt.Fscan(
+               bytes.NewBuffer(data[r+2:]),
+               &s.State,
+               &s.PPID,
+               &s.PGRP,
+               &s.Session,
+               &s.TTY,
+               &s.TPGID,
+               &s.Flags,
+               &s.MinFlt,
+               &s.CMinFlt,
+               &s.MajFlt,
+               &s.CMajFlt,
+               &s.UTime,
+               &s.STime,
+               &s.CUTime,
+               &s.CSTime,
+               &s.Priority,
+               &s.Nice,
+               &s.NumThreads,
+               &ignore,
+               &s.Starttime,
+               &s.VSize,
+               &s.RSS,
+       )
+       if err != nil {
+               return ProcStat{}, err
+       }
+
+       return s, nil
+}
+
+// VirtualMemory returns the virtual memory size in bytes.
+func (s ProcStat) VirtualMemory() int {
+       return s.VSize
+}
+
+// ResidentMemory returns the resident memory size in bytes.
+func (s ProcStat) ResidentMemory() int {
+       return s.RSS * os.Getpagesize()
+}
+
+// StartTime returns the unix timestamp of the process in seconds.
+func (s ProcStat) StartTime() (float64, error) {
+       stat, err := s.fs.NewStat()
+       if err != nil {
+               return 0, err
+       }
+       return float64(stat.BootTime) + (float64(s.Starttime) / userHZ), nil
+}
+
+// CPUTime returns the total CPU user and system time in seconds.
+func (s ProcStat) CPUTime() float64 {
+       return float64(s.UTime+s.STime) / userHZ
+}
diff --git a/vendor/github.com/prometheus/procfs/stat.go b/vendor/github.com/prometheus/procfs/stat.go
new file mode 100644 (file)
index 0000000..1ca217e
--- /dev/null
@@ -0,0 +1,56 @@
+package procfs
+
+import (
+       "bufio"
+       "fmt"
+       "os"
+       "strconv"
+       "strings"
+)
+
+// Stat represents kernel/system statistics.
+type Stat struct {
+       // Boot time in seconds since the Epoch.
+       BootTime int64
+}
+
+// NewStat returns kernel/system statistics read from /proc/stat.
+func NewStat() (Stat, error) {
+       fs, err := NewFS(DefaultMountPoint)
+       if err != nil {
+               return Stat{}, err
+       }
+
+       return fs.NewStat()
+}
+
+// NewStat returns an information about current kernel/system statistics.
+func (fs FS) NewStat() (Stat, error) {
+       f, err := os.Open(fs.Path("stat"))
+       if err != nil {
+               return Stat{}, err
+       }
+       defer f.Close()
+
+       s := bufio.NewScanner(f)
+       for s.Scan() {
+               line := s.Text()
+               if !strings.HasPrefix(line, "btime") {
+                       continue
+               }
+               fields := strings.Fields(line)
+               if len(fields) != 2 {
+                       return Stat{}, fmt.Errorf("couldn't parse %s line %s", f.Name(), line)
+               }
+               i, err := strconv.ParseInt(fields[1], 10, 32)
+               if err != nil {
+                       return Stat{}, fmt.Errorf("couldn't parse %s: %s", fields[1], err)
+               }
+               return Stat{BootTime: i}, nil
+       }
+       if err := s.Err(); err != nil {
+               return Stat{}, fmt.Errorf("couldn't parse %s: %s", f.Name(), err)
+       }
+
+       return Stat{}, fmt.Errorf("couldn't parse %s, missing btime", f.Name())
+}
diff --git a/vendor/golang.org/x/net/LICENSE b/vendor/golang.org/x/net/LICENSE
new file mode 100644 (file)
index 0000000..6a66aea
--- /dev/null
@@ -0,0 +1,27 @@
+Copyright (c) 2009 The Go Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+   * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+   * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/golang.org/x/net/PATENTS b/vendor/golang.org/x/net/PATENTS
new file mode 100644 (file)
index 0000000..7330990
--- /dev/null
@@ -0,0 +1,22 @@
+Additional IP Rights Grant (Patents)
+
+"This implementation" means the copyrightable works distributed by
+Google as part of the Go project.
+
+Google hereby grants to You a perpetual, worldwide, non-exclusive,
+no-charge, royalty-free, irrevocable (except as stated in this section)
+patent license to make, have made, use, offer to sell, sell, import,
+transfer and otherwise run, modify and propagate the contents of this
+implementation of Go, where such license applies only to those patent
+claims, both currently owned or controlled by Google and acquired in
+the future, licensable by Google that are necessarily infringed by this
+implementation of Go.  This grant does not include claims that would be
+infringed only as a consequence of further modification of this
+implementation.  If you or your agent or exclusive licensee institute or
+order or agree to the institution of patent litigation against any
+entity (including a cross-claim or counterclaim in a lawsuit) alleging
+that this implementation of Go or any code incorporated within this
+implementation of Go constitutes direct or contributory patent
+infringement, or inducement of patent infringement, then any patent
+rights granted to you under this License for this implementation of Go
+shall terminate as of the date such litigation is filed.
diff --git a/vendor/golang.org/x/net/icmp/dstunreach.go b/vendor/golang.org/x/net/icmp/dstunreach.go
new file mode 100644 (file)
index 0000000..75db991
--- /dev/null
@@ -0,0 +1,41 @@
+// Copyright 2014 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 icmp
+
+// A DstUnreach represents an ICMP destination unreachable message
+// body.
+type DstUnreach struct {
+       Data       []byte      // data, known as original datagram field
+       Extensions []Extension // extensions
+}
+
+// Len implements the Len method of MessageBody interface.
+func (p *DstUnreach) Len(proto int) int {
+       if p == nil {
+               return 0
+       }
+       l, _ := multipartMessageBodyDataLen(proto, p.Data, p.Extensions)
+       return 4 + l
+}
+
+// Marshal implements the Marshal method of MessageBody interface.
+func (p *DstUnreach) Marshal(proto int) ([]byte, error) {
+       return marshalMultipartMessageBody(proto, p.Data, p.Extensions)
+}
+
+// parseDstUnreach parses b as an ICMP destination unreachable message
+// body.
+func parseDstUnreach(proto int, b []byte) (MessageBody, error) {
+       if len(b) < 4 {
+               return nil, errMessageTooShort
+       }
+       p := &DstUnreach{}
+       var err error
+       p.Data, p.Extensions, err = parseMultipartMessageBody(proto, b)
+       if err != nil {
+               return nil, err
+       }
+       return p, nil
+}
diff --git a/vendor/golang.org/x/net/icmp/echo.go b/vendor/golang.org/x/net/icmp/echo.go
new file mode 100644 (file)
index 0000000..dd55181
--- /dev/null
@@ -0,0 +1,45 @@
+// Copyright 2012 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 icmp
+
+import "encoding/binary"
+
+// An Echo represents an ICMP echo request or reply message body.
+type Echo struct {
+       ID   int    // identifier
+       Seq  int    // sequence number
+       Data []byte // data
+}
+
+// Len implements the Len method of MessageBody interface.
+func (p *Echo) Len(proto int) int {
+       if p == nil {
+               return 0
+       }
+       return 4 + len(p.Data)
+}
+
+// Marshal implements the Marshal method of MessageBody interface.
+func (p *Echo) Marshal(proto int) ([]byte, error) {
+       b := make([]byte, 4+len(p.Data))
+       binary.BigEndian.PutUint16(b[:2], uint16(p.ID))
+       binary.BigEndian.PutUint16(b[2:4], uint16(p.Seq))
+       copy(b[4:], p.Data)
+       return b, nil
+}
+
+// parseEcho parses b as an ICMP echo request or reply message body.
+func parseEcho(proto int, b []byte) (MessageBody, error) {
+       bodyLen := len(b)
+       if bodyLen < 4 {
+               return nil, errMessageTooShort
+       }
+       p := &Echo{ID: int(binary.BigEndian.Uint16(b[:2])), Seq: int(binary.BigEndian.Uint16(b[2:4]))}
+       if bodyLen > 4 {
+               p.Data = make([]byte, bodyLen-4)
+               copy(p.Data, b[4:])
+       }
+       return p, nil
+}
diff --git a/vendor/golang.org/x/net/icmp/endpoint.go b/vendor/golang.org/x/net/icmp/endpoint.go
new file mode 100644 (file)
index 0000000..0213d1a
--- /dev/null
@@ -0,0 +1,113 @@
+// Copyright 2014 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 icmp
+
+import (
+       "net"
+       "runtime"
+       "syscall"
+       "time"
+
+       "golang.org/x/net/ipv4"
+       "golang.org/x/net/ipv6"
+)
+
+var _ net.PacketConn = &PacketConn{}
+
+// A PacketConn represents a packet network endpoint that uses either
+// ICMPv4 or ICMPv6.
+type PacketConn struct {
+       c  net.PacketConn
+       p4 *ipv4.PacketConn
+       p6 *ipv6.PacketConn
+}
+
+func (c *PacketConn) ok() bool { return c != nil && c.c != nil }
+
+// IPv4PacketConn returns the ipv4.PacketConn of c.
+// It returns nil when c is not created as the endpoint for ICMPv4.
+func (c *PacketConn) IPv4PacketConn() *ipv4.PacketConn {
+       if !c.ok() {
+               return nil
+       }
+       return c.p4
+}
+
+// IPv6PacketConn returns the ipv6.PacketConn of c.
+// It returns nil when c is not created as the endpoint for ICMPv6.
+func (c *PacketConn) IPv6PacketConn() *ipv6.PacketConn {
+       if !c.ok() {
+               return nil
+       }
+       return c.p6
+}
+
+// ReadFrom reads an ICMP message from the connection.
+func (c *PacketConn) ReadFrom(b []byte) (int, net.Addr, error) {
+       if !c.ok() {
+               return 0, nil, syscall.EINVAL
+       }
+       // Please be informed that ipv4.NewPacketConn enables
+       // IP_STRIPHDR option by default on Darwin.
+       // See golang.org/issue/9395 for futher information.
+       if runtime.GOOS == "darwin" && c.p4 != nil {
+               n, _, peer, err := c.p4.ReadFrom(b)
+               return n, peer, err
+       }
+       return c.c.ReadFrom(b)
+}
+
+// WriteTo writes the ICMP message b to dst.
+// Dst must be net.UDPAddr when c is a non-privileged
+// datagram-oriented ICMP endpoint. Otherwise it must be net.IPAddr.
+func (c *PacketConn) WriteTo(b []byte, dst net.Addr) (int, error) {
+       if !c.ok() {
+               return 0, syscall.EINVAL
+       }
+       return c.c.WriteTo(b, dst)
+}
+
+// Close closes the endpoint.
+func (c *PacketConn) Close() error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       return c.c.Close()
+}
+
+// LocalAddr returns the local network address.
+func (c *PacketConn) LocalAddr() net.Addr {
+       if !c.ok() {
+               return nil
+       }
+       return c.c.LocalAddr()
+}
+
+// SetDeadline sets the read and write deadlines associated with the
+// endpoint.
+func (c *PacketConn) SetDeadline(t time.Time) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       return c.c.SetDeadline(t)
+}
+
+// SetReadDeadline sets the read deadline associated with the
+// endpoint.
+func (c *PacketConn) SetReadDeadline(t time.Time) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       return c.c.SetReadDeadline(t)
+}
+
+// SetWriteDeadline sets the write deadline associated with the
+// endpoint.
+func (c *PacketConn) SetWriteDeadline(t time.Time) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       return c.c.SetWriteDeadline(t)
+}
diff --git a/vendor/golang.org/x/net/icmp/extension.go b/vendor/golang.org/x/net/icmp/extension.go
new file mode 100644 (file)
index 0000000..402a751
--- /dev/null
@@ -0,0 +1,89 @@
+// Copyright 2015 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 icmp
+
+import "encoding/binary"
+
+// An Extension represents an ICMP extension.
+type Extension interface {
+       // Len returns the length of ICMP extension.
+       // Proto must be either the ICMPv4 or ICMPv6 protocol number.
+       Len(proto int) int
+
+       // Marshal returns the binary encoding of ICMP extension.
+       // Proto must be either the ICMPv4 or ICMPv6 protocol number.
+       Marshal(proto int) ([]byte, error)
+}
+
+const extensionVersion = 2
+
+func validExtensionHeader(b []byte) bool {
+       v := int(b[0]&0xf0) >> 4
+       s := binary.BigEndian.Uint16(b[2:4])
+       if s != 0 {
+               s = checksum(b)
+       }
+       if v != extensionVersion || s != 0 {
+               return false
+       }
+       return true
+}
+
+// parseExtensions parses b as a list of ICMP extensions.
+// The length attribute l must be the length attribute field in
+// received icmp messages.
+//
+// It will return a list of ICMP extensions and an adjusted length
+// attribute that represents the length of the padded original
+// datagram field. Otherwise, it returns an error.
+func parseExtensions(b []byte, l int) ([]Extension, int, error) {
+       // Still a lot of non-RFC 4884 compliant implementations are
+       // out there. Set the length attribute l to 128 when it looks
+       // inappropriate for backwards compatibility.
+       //
+       // A minimal extension at least requires 8 octets; 4 octets
+       // for an extension header, and 4 octets for a single object
+       // header.
+       //
+       // See RFC 4884 for further information.
+       if 128 > l || l+8 > len(b) {
+               l = 128
+       }
+       if l+8 > len(b) {
+               return nil, -1, errNoExtension
+       }
+       if !validExtensionHeader(b[l:]) {
+               if l == 128 {
+                       return nil, -1, errNoExtension
+               }
+               l = 128
+               if !validExtensionHeader(b[l:]) {
+                       return nil, -1, errNoExtension
+               }
+       }
+       var exts []Extension
+       for b = b[l+4:]; len(b) >= 4; {
+               ol := int(binary.BigEndian.Uint16(b[:2]))
+               if 4 > ol || ol > len(b) {
+                       break
+               }
+               switch b[2] {
+               case classMPLSLabelStack:
+                       ext, err := parseMPLSLabelStack(b[:ol])
+                       if err != nil {
+                               return nil, -1, err
+                       }
+                       exts = append(exts, ext)
+               case classInterfaceInfo:
+                       ext, err := parseInterfaceInfo(b[:ol])
+                       if err != nil {
+                               return nil, -1, err
+                       }
+                       exts = append(exts, ext)
+               }
+               b = b[ol:]
+       }
+       return exts, l, nil
+}
diff --git a/vendor/golang.org/x/net/icmp/helper.go b/vendor/golang.org/x/net/icmp/helper.go
new file mode 100644 (file)
index 0000000..6c4e633
--- /dev/null
@@ -0,0 +1,27 @@
+// Copyright 2016 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 icmp
+
+import (
+       "encoding/binary"
+       "unsafe"
+)
+
+var (
+       // See http://www.freebsd.org/doc/en/books/porters-handbook/freebsd-versions.html.
+       freebsdVersion uint32
+
+       nativeEndian binary.ByteOrder
+)
+
+func init() {
+       i := uint32(1)
+       b := (*[4]byte)(unsafe.Pointer(&i))
+       if b[0] == 1 {
+               nativeEndian = binary.LittleEndian
+       } else {
+               nativeEndian = binary.BigEndian
+       }
+}
diff --git a/vendor/golang.org/x/net/icmp/helper_posix.go b/vendor/golang.org/x/net/icmp/helper_posix.go
new file mode 100644 (file)
index 0000000..398fd38
--- /dev/null
@@ -0,0 +1,75 @@
+// Copyright 2014 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.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows
+
+package icmp
+
+import (
+       "net"
+       "strconv"
+       "syscall"
+)
+
+func sockaddr(family int, address string) (syscall.Sockaddr, error) {
+       switch family {
+       case syscall.AF_INET:
+               a, err := net.ResolveIPAddr("ip4", address)
+               if err != nil {
+                       return nil, err
+               }
+               if len(a.IP) == 0 {
+                       a.IP = net.IPv4zero
+               }
+               if a.IP = a.IP.To4(); a.IP == nil {
+                       return nil, net.InvalidAddrError("non-ipv4 address")
+               }
+               sa := &syscall.SockaddrInet4{}
+               copy(sa.Addr[:], a.IP)
+               return sa, nil
+       case syscall.AF_INET6:
+               a, err := net.ResolveIPAddr("ip6", address)
+               if err != nil {
+                       return nil, err
+               }
+               if len(a.IP) == 0 {
+                       a.IP = net.IPv6unspecified
+               }
+               if a.IP.Equal(net.IPv4zero) {
+                       a.IP = net.IPv6unspecified
+               }
+               if a.IP = a.IP.To16(); a.IP == nil || a.IP.To4() != nil {
+                       return nil, net.InvalidAddrError("non-ipv6 address")
+               }
+               sa := &syscall.SockaddrInet6{ZoneId: zoneToUint32(a.Zone)}
+               copy(sa.Addr[:], a.IP)
+               return sa, nil
+       default:
+               return nil, net.InvalidAddrError("unexpected family")
+       }
+}
+
+func zoneToUint32(zone string) uint32 {
+       if zone == "" {
+               return 0
+       }
+       if ifi, err := net.InterfaceByName(zone); err == nil {
+               return uint32(ifi.Index)
+       }
+       n, err := strconv.Atoi(zone)
+       if err != nil {
+               return 0
+       }
+       return uint32(n)
+}
+
+func last(s string, b byte) int {
+       i := len(s)
+       for i--; i >= 0; i-- {
+               if s[i] == b {
+                       break
+               }
+       }
+       return i
+}
diff --git a/vendor/golang.org/x/net/icmp/interface.go b/vendor/golang.org/x/net/icmp/interface.go
new file mode 100644 (file)
index 0000000..78b5b98
--- /dev/null
@@ -0,0 +1,236 @@
+// Copyright 2015 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 icmp
+
+import (
+       "encoding/binary"
+       "net"
+       "strings"
+
+       "golang.org/x/net/internal/iana"
+)
+
+const (
+       classInterfaceInfo = 2
+
+       afiIPv4 = 1
+       afiIPv6 = 2
+)
+
+const (
+       attrMTU = 1 << iota
+       attrName
+       attrIPAddr
+       attrIfIndex
+)
+
+// An InterfaceInfo represents interface and next-hop identification.
+type InterfaceInfo struct {
+       Class     int // extension object class number
+       Type      int // extension object sub-type
+       Interface *net.Interface
+       Addr      *net.IPAddr
+}
+
+func (ifi *InterfaceInfo) nameLen() int {
+       if len(ifi.Interface.Name) > 63 {
+               return 64
+       }
+       l := 1 + len(ifi.Interface.Name)
+       return (l + 3) &^ 3
+}
+
+func (ifi *InterfaceInfo) attrsAndLen(proto int) (attrs, l int) {
+       l = 4
+       if ifi.Interface != nil && ifi.Interface.Index > 0 {
+               attrs |= attrIfIndex
+               l += 4
+               if len(ifi.Interface.Name) > 0 {
+                       attrs |= attrName
+                       l += ifi.nameLen()
+               }
+               if ifi.Interface.MTU > 0 {
+                       attrs |= attrMTU
+                       l += 4
+               }
+       }
+       if ifi.Addr != nil {
+               switch proto {
+               case iana.ProtocolICMP:
+                       if ifi.Addr.IP.To4() != nil {
+                               attrs |= attrIPAddr
+                               l += 4 + net.IPv4len
+                       }
+               case iana.ProtocolIPv6ICMP:
+                       if ifi.Addr.IP.To16() != nil && ifi.Addr.IP.To4() == nil {
+                               attrs |= attrIPAddr
+                               l += 4 + net.IPv6len
+                       }
+               }
+       }
+       return
+}
+
+// Len implements the Len method of Extension interface.
+func (ifi *InterfaceInfo) Len(proto int) int {
+       _, l := ifi.attrsAndLen(proto)
+       return l
+}
+
+// Marshal implements the Marshal method of Extension interface.
+func (ifi *InterfaceInfo) Marshal(proto int) ([]byte, error) {
+       attrs, l := ifi.attrsAndLen(proto)
+       b := make([]byte, l)
+       if err := ifi.marshal(proto, b, attrs, l); err != nil {
+               return nil, err
+       }
+       return b, nil
+}
+
+func (ifi *InterfaceInfo) marshal(proto int, b []byte, attrs, l int) error {
+       binary.BigEndian.PutUint16(b[:2], uint16(l))
+       b[2], b[3] = classInterfaceInfo, byte(ifi.Type)
+       for b = b[4:]; len(b) > 0 && attrs != 0; {
+               switch {
+               case attrs&attrIfIndex != 0:
+                       b = ifi.marshalIfIndex(proto, b)
+                       attrs &^= attrIfIndex
+               case attrs&attrIPAddr != 0:
+                       b = ifi.marshalIPAddr(proto, b)
+                       attrs &^= attrIPAddr
+               case attrs&attrName != 0:
+                       b = ifi.marshalName(proto, b)
+                       attrs &^= attrName
+               case attrs&attrMTU != 0:
+                       b = ifi.marshalMTU(proto, b)
+                       attrs &^= attrMTU
+               }
+       }
+       return nil
+}
+
+func (ifi *InterfaceInfo) marshalIfIndex(proto int, b []byte) []byte {
+       binary.BigEndian.PutUint32(b[:4], uint32(ifi.Interface.Index))
+       return b[4:]
+}
+
+func (ifi *InterfaceInfo) parseIfIndex(b []byte) ([]byte, error) {
+       if len(b) < 4 {
+               return nil, errMessageTooShort
+       }
+       ifi.Interface.Index = int(binary.BigEndian.Uint32(b[:4]))
+       return b[4:], nil
+}
+
+func (ifi *InterfaceInfo) marshalIPAddr(proto int, b []byte) []byte {
+       switch proto {
+       case iana.ProtocolICMP:
+               binary.BigEndian.PutUint16(b[:2], uint16(afiIPv4))
+               copy(b[4:4+net.IPv4len], ifi.Addr.IP.To4())
+               b = b[4+net.IPv4len:]
+       case iana.ProtocolIPv6ICMP:
+               binary.BigEndian.PutUint16(b[:2], uint16(afiIPv6))
+               copy(b[4:4+net.IPv6len], ifi.Addr.IP.To16())
+               b = b[4+net.IPv6len:]
+       }
+       return b
+}
+
+func (ifi *InterfaceInfo) parseIPAddr(b []byte) ([]byte, error) {
+       if len(b) < 4 {
+               return nil, errMessageTooShort
+       }
+       afi := int(binary.BigEndian.Uint16(b[:2]))
+       b = b[4:]
+       switch afi {
+       case afiIPv4:
+               if len(b) < net.IPv4len {
+                       return nil, errMessageTooShort
+               }
+               ifi.Addr.IP = make(net.IP, net.IPv4len)
+               copy(ifi.Addr.IP, b[:net.IPv4len])
+               b = b[net.IPv4len:]
+       case afiIPv6:
+               if len(b) < net.IPv6len {
+                       return nil, errMessageTooShort
+               }
+               ifi.Addr.IP = make(net.IP, net.IPv6len)
+               copy(ifi.Addr.IP, b[:net.IPv6len])
+               b = b[net.IPv6len:]
+       }
+       return b, nil
+}
+
+func (ifi *InterfaceInfo) marshalName(proto int, b []byte) []byte {
+       l := byte(ifi.nameLen())
+       b[0] = l
+       copy(b[1:], []byte(ifi.Interface.Name))
+       return b[l:]
+}
+
+func (ifi *InterfaceInfo) parseName(b []byte) ([]byte, error) {
+       if 4 > len(b) || len(b) < int(b[0]) {
+               return nil, errMessageTooShort
+       }
+       l := int(b[0])
+       if l%4 != 0 || 4 > l || l > 64 {
+               return nil, errInvalidExtension
+       }
+       var name [63]byte
+       copy(name[:], b[1:l])
+       ifi.Interface.Name = strings.Trim(string(name[:]), "\000")
+       return b[l:], nil
+}
+
+func (ifi *InterfaceInfo) marshalMTU(proto int, b []byte) []byte {
+       binary.BigEndian.PutUint32(b[:4], uint32(ifi.Interface.MTU))
+       return b[4:]
+}
+
+func (ifi *InterfaceInfo) parseMTU(b []byte) ([]byte, error) {
+       if len(b) < 4 {
+               return nil, errMessageTooShort
+       }
+       ifi.Interface.MTU = int(binary.BigEndian.Uint32(b[:4]))
+       return b[4:], nil
+}
+
+func parseInterfaceInfo(b []byte) (Extension, error) {
+       ifi := &InterfaceInfo{
+               Class: int(b[2]),
+               Type:  int(b[3]),
+       }
+       if ifi.Type&(attrIfIndex|attrName|attrMTU) != 0 {
+               ifi.Interface = &net.Interface{}
+       }
+       if ifi.Type&attrIPAddr != 0 {
+               ifi.Addr = &net.IPAddr{}
+       }
+       attrs := ifi.Type & (attrIfIndex | attrIPAddr | attrName | attrMTU)
+       for b = b[4:]; len(b) > 0 && attrs != 0; {
+               var err error
+               switch {
+               case attrs&attrIfIndex != 0:
+                       b, err = ifi.parseIfIndex(b)
+                       attrs &^= attrIfIndex
+               case attrs&attrIPAddr != 0:
+                       b, err = ifi.parseIPAddr(b)
+                       attrs &^= attrIPAddr
+               case attrs&attrName != 0:
+                       b, err = ifi.parseName(b)
+                       attrs &^= attrName
+               case attrs&attrMTU != 0:
+                       b, err = ifi.parseMTU(b)
+                       attrs &^= attrMTU
+               }
+               if err != nil {
+                       return nil, err
+               }
+       }
+       if ifi.Interface != nil && ifi.Interface.Name != "" && ifi.Addr != nil && ifi.Addr.IP.To16() != nil && ifi.Addr.IP.To4() == nil {
+               ifi.Addr.Zone = ifi.Interface.Name
+       }
+       return ifi, nil
+}
diff --git a/vendor/golang.org/x/net/icmp/ipv4.go b/vendor/golang.org/x/net/icmp/ipv4.go
new file mode 100644 (file)
index 0000000..729ddc9
--- /dev/null
@@ -0,0 +1,56 @@
+// Copyright 2014 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 icmp
+
+import (
+       "encoding/binary"
+       "net"
+       "runtime"
+
+       "golang.org/x/net/ipv4"
+)
+
+// ParseIPv4Header parses b as an IPv4 header of ICMP error message
+// invoking packet, which is contained in ICMP error message.
+func ParseIPv4Header(b []byte) (*ipv4.Header, error) {
+       if len(b) < ipv4.HeaderLen {
+               return nil, errHeaderTooShort
+       }
+       hdrlen := int(b[0]&0x0f) << 2
+       if hdrlen > len(b) {
+               return nil, errBufferTooShort
+       }
+       h := &ipv4.Header{
+               Version:  int(b[0] >> 4),
+               Len:      hdrlen,
+               TOS:      int(b[1]),
+               ID:       int(binary.BigEndian.Uint16(b[4:6])),
+               FragOff:  int(binary.BigEndian.Uint16(b[6:8])),
+               TTL:      int(b[8]),
+               Protocol: int(b[9]),
+               Checksum: int(binary.BigEndian.Uint16(b[10:12])),
+               Src:      net.IPv4(b[12], b[13], b[14], b[15]),
+               Dst:      net.IPv4(b[16], b[17], b[18], b[19]),
+       }
+       switch runtime.GOOS {
+       case "darwin":
+               h.TotalLen = int(nativeEndian.Uint16(b[2:4]))
+       case "freebsd":
+               if freebsdVersion >= 1000000 {
+                       h.TotalLen = int(binary.BigEndian.Uint16(b[2:4]))
+               } else {
+                       h.TotalLen = int(nativeEndian.Uint16(b[2:4]))
+               }
+       default:
+               h.TotalLen = int(binary.BigEndian.Uint16(b[2:4]))
+       }
+       h.Flags = ipv4.HeaderFlags(h.FragOff&0xe000) >> 13
+       h.FragOff = h.FragOff & 0x1fff
+       if hdrlen-ipv4.HeaderLen > 0 {
+               h.Options = make([]byte, hdrlen-ipv4.HeaderLen)
+               copy(h.Options, b[ipv4.HeaderLen:])
+       }
+       return h, nil
+}
diff --git a/vendor/golang.org/x/net/icmp/ipv6.go b/vendor/golang.org/x/net/icmp/ipv6.go
new file mode 100644 (file)
index 0000000..58eaa77
--- /dev/null
@@ -0,0 +1,23 @@
+// Copyright 2013 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 icmp
+
+import (
+       "net"
+
+       "golang.org/x/net/internal/iana"
+)
+
+const ipv6PseudoHeaderLen = 2*net.IPv6len + 8
+
+// IPv6PseudoHeader returns an IPv6 pseudo header for checksum
+// calculation.
+func IPv6PseudoHeader(src, dst net.IP) []byte {
+       b := make([]byte, ipv6PseudoHeaderLen)
+       copy(b, src.To16())
+       copy(b[net.IPv6len:], dst.To16())
+       b[len(b)-1] = byte(iana.ProtocolIPv6ICMP)
+       return b
+}
diff --git a/vendor/golang.org/x/net/icmp/listen_posix.go b/vendor/golang.org/x/net/icmp/listen_posix.go
new file mode 100644 (file)
index 0000000..b9f2607
--- /dev/null
@@ -0,0 +1,98 @@
+// Copyright 2014 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.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd solaris windows
+
+package icmp
+
+import (
+       "net"
+       "os"
+       "runtime"
+       "syscall"
+
+       "golang.org/x/net/internal/iana"
+       "golang.org/x/net/ipv4"
+       "golang.org/x/net/ipv6"
+)
+
+const sysIP_STRIPHDR = 0x17 // for now only darwin supports this option
+
+// ListenPacket listens for incoming ICMP packets addressed to
+// address. See net.Dial for the syntax of address.
+//
+// For non-privileged datagram-oriented ICMP endpoints, network must
+// be "udp4" or "udp6". The endpoint allows to read, write a few
+// limited ICMP messages such as echo request and echo reply.
+// Currently only Darwin and Linux support this.
+//
+// Examples:
+//     ListenPacket("udp4", "192.168.0.1")
+//     ListenPacket("udp4", "0.0.0.0")
+//     ListenPacket("udp6", "fe80::1%en0")
+//     ListenPacket("udp6", "::")
+//
+// For privileged raw ICMP endpoints, network must be "ip4" or "ip6"
+// followed by a colon and an ICMP protocol number or name.
+//
+// Examples:
+//     ListenPacket("ip4:icmp", "192.168.0.1")
+//     ListenPacket("ip4:1", "0.0.0.0")
+//     ListenPacket("ip6:ipv6-icmp", "fe80::1%en0")
+//     ListenPacket("ip6:58", "::")
+func ListenPacket(network, address string) (*PacketConn, error) {
+       var family, proto int
+       switch network {
+       case "udp4":
+               family, proto = syscall.AF_INET, iana.ProtocolICMP
+       case "udp6":
+               family, proto = syscall.AF_INET6, iana.ProtocolIPv6ICMP
+       default:
+               i := last(network, ':')
+               switch network[:i] {
+               case "ip4":
+                       proto = iana.ProtocolICMP
+               case "ip6":
+                       proto = iana.ProtocolIPv6ICMP
+               }
+       }
+       var cerr error
+       var c net.PacketConn
+       switch family {
+       case syscall.AF_INET, syscall.AF_INET6:
+               s, err := syscall.Socket(family, syscall.SOCK_DGRAM, proto)
+               if err != nil {
+                       return nil, os.NewSyscallError("socket", err)
+               }
+               defer syscall.Close(s)
+               if runtime.GOOS == "darwin" && family == syscall.AF_INET {
+                       if err := syscall.SetsockoptInt(s, iana.ProtocolIP, sysIP_STRIPHDR, 1); err != nil {
+                               return nil, os.NewSyscallError("setsockopt", err)
+                       }
+               }
+               sa, err := sockaddr(family, address)
+               if err != nil {
+                       return nil, err
+               }
+               if err := syscall.Bind(s, sa); err != nil {
+                       return nil, os.NewSyscallError("bind", err)
+               }
+               f := os.NewFile(uintptr(s), "datagram-oriented icmp")
+               defer f.Close()
+               c, cerr = net.FilePacketConn(f)
+       default:
+               c, cerr = net.ListenPacket(network, address)
+       }
+       if cerr != nil {
+               return nil, cerr
+       }
+       switch proto {
+       case iana.ProtocolICMP:
+               return &PacketConn{c: c, p4: ipv4.NewPacketConn(c)}, nil
+       case iana.ProtocolIPv6ICMP:
+               return &PacketConn{c: c, p6: ipv6.NewPacketConn(c)}, nil
+       default:
+               return &PacketConn{c: c}, nil
+       }
+}
diff --git a/vendor/golang.org/x/net/icmp/listen_stub.go b/vendor/golang.org/x/net/icmp/listen_stub.go
new file mode 100644 (file)
index 0000000..668728d
--- /dev/null
@@ -0,0 +1,33 @@
+// Copyright 2014 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.
+
+// +build nacl plan9
+
+package icmp
+
+// ListenPacket listens for incoming ICMP packets addressed to
+// address. See net.Dial for the syntax of address.
+//
+// For non-privileged datagram-oriented ICMP endpoints, network must
+// be "udp4" or "udp6". The endpoint allows to read, write a few
+// limited ICMP messages such as echo request and echo reply.
+// Currently only Darwin and Linux support this.
+//
+// Examples:
+//     ListenPacket("udp4", "192.168.0.1")
+//     ListenPacket("udp4", "0.0.0.0")
+//     ListenPacket("udp6", "fe80::1%en0")
+//     ListenPacket("udp6", "::")
+//
+// For privileged raw ICMP endpoints, network must be "ip4" or "ip6"
+// followed by a colon and an ICMP protocol number or name.
+//
+// Examples:
+//     ListenPacket("ip4:icmp", "192.168.0.1")
+//     ListenPacket("ip4:1", "0.0.0.0")
+//     ListenPacket("ip6:ipv6-icmp", "fe80::1%en0")
+//     ListenPacket("ip6:58", "::")
+func ListenPacket(network, address string) (*PacketConn, error) {
+       return nil, errOpNoSupport
+}
diff --git a/vendor/golang.org/x/net/icmp/message.go b/vendor/golang.org/x/net/icmp/message.go
new file mode 100644 (file)
index 0000000..42d6df2
--- /dev/null
@@ -0,0 +1,150 @@
+// Copyright 2012 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 icmp provides basic functions for the manipulation of
+// messages used in the Internet Control Message Protocols,
+// ICMPv4 and ICMPv6.
+//
+// ICMPv4 and ICMPv6 are defined in RFC 792 and RFC 4443.
+// Multi-part message support for ICMP is defined in RFC 4884.
+// ICMP extensions for MPLS are defined in RFC 4950.
+// ICMP extensions for interface and next-hop identification are
+// defined in RFC 5837.
+package icmp // import "golang.org/x/net/icmp"
+
+import (
+       "encoding/binary"
+       "errors"
+       "net"
+       "syscall"
+
+       "golang.org/x/net/internal/iana"
+       "golang.org/x/net/ipv4"
+       "golang.org/x/net/ipv6"
+)
+
+var (
+       errMessageTooShort  = errors.New("message too short")
+       errHeaderTooShort   = errors.New("header too short")
+       errBufferTooShort   = errors.New("buffer too short")
+       errOpNoSupport      = errors.New("operation not supported")
+       errNoExtension      = errors.New("no extension")
+       errInvalidExtension = errors.New("invalid extension")
+)
+
+func checksum(b []byte) uint16 {
+       csumcv := len(b) - 1 // checksum coverage
+       s := uint32(0)
+       for i := 0; i < csumcv; i += 2 {
+               s += uint32(b[i+1])<<8 | uint32(b[i])
+       }
+       if csumcv&1 == 0 {
+               s += uint32(b[csumcv])
+       }
+       s = s>>16 + s&0xffff
+       s = s + s>>16
+       return ^uint16(s)
+}
+
+// A Type represents an ICMP message type.
+type Type interface {
+       Protocol() int
+}
+
+// A Message represents an ICMP message.
+type Message struct {
+       Type     Type        // type, either ipv4.ICMPType or ipv6.ICMPType
+       Code     int         // code
+       Checksum int         // checksum
+       Body     MessageBody // body
+}
+
+// Marshal returns the binary encoding of the ICMP message m.
+//
+// For an ICMPv4 message, the returned message always contains the
+// calculated checksum field.
+//
+// For an ICMPv6 message, the returned message contains the calculated
+// checksum field when psh is not nil, otherwise the kernel will
+// compute the checksum field during the message transmission.
+// When psh is not nil, it must be the pseudo header for IPv6.
+func (m *Message) Marshal(psh []byte) ([]byte, error) {
+       var mtype int
+       switch typ := m.Type.(type) {
+       case ipv4.ICMPType:
+               mtype = int(typ)
+       case ipv6.ICMPType:
+               mtype = int(typ)
+       default:
+               return nil, syscall.EINVAL
+       }
+       b := []byte{byte(mtype), byte(m.Code), 0, 0}
+       if m.Type.Protocol() == iana.ProtocolIPv6ICMP && psh != nil {
+               b = append(psh, b...)
+       }
+       if m.Body != nil && m.Body.Len(m.Type.Protocol()) != 0 {
+               mb, err := m.Body.Marshal(m.Type.Protocol())
+               if err != nil {
+                       return nil, err
+               }
+               b = append(b, mb...)
+       }
+       if m.Type.Protocol() == iana.ProtocolIPv6ICMP {
+               if psh == nil { // cannot calculate checksum here
+                       return b, nil
+               }
+               off, l := 2*net.IPv6len, len(b)-len(psh)
+               binary.BigEndian.PutUint32(b[off:off+4], uint32(l))
+       }
+       s := checksum(b)
+       // Place checksum back in header; using ^= avoids the
+       // assumption the checksum bytes are zero.
+       b[len(psh)+2] ^= byte(s)
+       b[len(psh)+3] ^= byte(s >> 8)
+       return b[len(psh):], nil
+}
+
+var parseFns = map[Type]func(int, []byte) (MessageBody, error){
+       ipv4.ICMPTypeDestinationUnreachable: parseDstUnreach,
+       ipv4.ICMPTypeTimeExceeded:           parseTimeExceeded,
+       ipv4.ICMPTypeParameterProblem:       parseParamProb,
+
+       ipv4.ICMPTypeEcho:      parseEcho,
+       ipv4.ICMPTypeEchoReply: parseEcho,
+
+       ipv6.ICMPTypeDestinationUnreachable: parseDstUnreach,
+       ipv6.ICMPTypePacketTooBig:           parsePacketTooBig,
+       ipv6.ICMPTypeTimeExceeded:           parseTimeExceeded,
+       ipv6.ICMPTypeParameterProblem:       parseParamProb,
+
+       ipv6.ICMPTypeEchoRequest: parseEcho,
+       ipv6.ICMPTypeEchoReply:   parseEcho,
+}
+
+// ParseMessage parses b as an ICMP message.
+// Proto must be either the ICMPv4 or ICMPv6 protocol number.
+func ParseMessage(proto int, b []byte) (*Message, error) {
+       if len(b) < 4 {
+               return nil, errMessageTooShort
+       }
+       var err error
+       m := &Message{Code: int(b[1]), Checksum: int(binary.BigEndian.Uint16(b[2:4]))}
+       switch proto {
+       case iana.ProtocolICMP:
+               m.Type = ipv4.ICMPType(b[0])
+       case iana.ProtocolIPv6ICMP:
+               m.Type = ipv6.ICMPType(b[0])
+       default:
+               return nil, syscall.EINVAL
+       }
+       if fn, ok := parseFns[m.Type]; !ok {
+               m.Body, err = parseDefaultMessageBody(proto, b[4:])
+       } else {
+               m.Body, err = fn(proto, b[4:])
+       }
+       if err != nil {
+               return nil, err
+       }
+       return m, nil
+}
diff --git a/vendor/golang.org/x/net/icmp/messagebody.go b/vendor/golang.org/x/net/icmp/messagebody.go
new file mode 100644 (file)
index 0000000..2121a17
--- /dev/null
@@ -0,0 +1,41 @@
+// Copyright 2012 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 icmp
+
+// A MessageBody represents an ICMP message body.
+type MessageBody interface {
+       // Len returns the length of ICMP message body.
+       // Proto must be either the ICMPv4 or ICMPv6 protocol number.
+       Len(proto int) int
+
+       // Marshal returns the binary encoding of ICMP message body.
+       // Proto must be either the ICMPv4 or ICMPv6 protocol number.
+       Marshal(proto int) ([]byte, error)
+}
+
+// A DefaultMessageBody represents the default message body.
+type DefaultMessageBody struct {
+       Data []byte // data
+}
+
+// Len implements the Len method of MessageBody interface.
+func (p *DefaultMessageBody) Len(proto int) int {
+       if p == nil {
+               return 0
+       }
+       return len(p.Data)
+}
+
+// Marshal implements the Marshal method of MessageBody interface.
+func (p *DefaultMessageBody) Marshal(proto int) ([]byte, error) {
+       return p.Data, nil
+}
+
+// parseDefaultMessageBody parses b as an ICMP message body.
+func parseDefaultMessageBody(proto int, b []byte) (MessageBody, error) {
+       p := &DefaultMessageBody{Data: make([]byte, len(b))}
+       copy(p.Data, b)
+       return p, nil
+}
diff --git a/vendor/golang.org/x/net/icmp/mpls.go b/vendor/golang.org/x/net/icmp/mpls.go
new file mode 100644 (file)
index 0000000..c314917
--- /dev/null
@@ -0,0 +1,77 @@
+// Copyright 2015 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 icmp
+
+import "encoding/binary"
+
+// A MPLSLabel represents a MPLS label stack entry.
+type MPLSLabel struct {
+       Label int  // label value
+       TC    int  // traffic class; formerly experimental use
+       S     bool // bottom of stack
+       TTL   int  // time to live
+}
+
+const (
+       classMPLSLabelStack        = 1
+       typeIncomingMPLSLabelStack = 1
+)
+
+// A MPLSLabelStack represents a MPLS label stack.
+type MPLSLabelStack struct {
+       Class  int // extension object class number
+       Type   int // extension object sub-type
+       Labels []MPLSLabel
+}
+
+// Len implements the Len method of Extension interface.
+func (ls *MPLSLabelStack) Len(proto int) int {
+       return 4 + (4 * len(ls.Labels))
+}
+
+// Marshal implements the Marshal method of Extension interface.
+func (ls *MPLSLabelStack) Marshal(proto int) ([]byte, error) {
+       b := make([]byte, ls.Len(proto))
+       if err := ls.marshal(proto, b); err != nil {
+               return nil, err
+       }
+       return b, nil
+}
+
+func (ls *MPLSLabelStack) marshal(proto int, b []byte) error {
+       l := ls.Len(proto)
+       binary.BigEndian.PutUint16(b[:2], uint16(l))
+       b[2], b[3] = classMPLSLabelStack, typeIncomingMPLSLabelStack
+       off := 4
+       for _, ll := range ls.Labels {
+               b[off], b[off+1], b[off+2] = byte(ll.Label>>12), byte(ll.Label>>4&0xff), byte(ll.Label<<4&0xf0)
+               b[off+2] |= byte(ll.TC << 1 & 0x0e)
+               if ll.S {
+                       b[off+2] |= 0x1
+               }
+               b[off+3] = byte(ll.TTL)
+               off += 4
+       }
+       return nil
+}
+
+func parseMPLSLabelStack(b []byte) (Extension, error) {
+       ls := &MPLSLabelStack{
+               Class: int(b[2]),
+               Type:  int(b[3]),
+       }
+       for b = b[4:]; len(b) >= 4; b = b[4:] {
+               ll := MPLSLabel{
+                       Label: int(b[0])<<12 | int(b[1])<<4 | int(b[2])>>4,
+                       TC:    int(b[2]&0x0e) >> 1,
+                       TTL:   int(b[3]),
+               }
+               if b[2]&0x1 != 0 {
+                       ll.S = true
+               }
+               ls.Labels = append(ls.Labels, ll)
+       }
+       return ls, nil
+}
diff --git a/vendor/golang.org/x/net/icmp/multipart.go b/vendor/golang.org/x/net/icmp/multipart.go
new file mode 100644 (file)
index 0000000..f271356
--- /dev/null
@@ -0,0 +1,109 @@
+// Copyright 2015 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 icmp
+
+import "golang.org/x/net/internal/iana"
+
+// multipartMessageBodyDataLen takes b as an original datagram and
+// exts as extensions, and returns a required length for message body
+// and a required length for a padded original datagram in wire
+// format.
+func multipartMessageBodyDataLen(proto int, b []byte, exts []Extension) (bodyLen, dataLen int) {
+       for _, ext := range exts {
+               bodyLen += ext.Len(proto)
+       }
+       if bodyLen > 0 {
+               dataLen = multipartMessageOrigDatagramLen(proto, b)
+               bodyLen += 4 // length of extension header
+       } else {
+               dataLen = len(b)
+       }
+       bodyLen += dataLen
+       return bodyLen, dataLen
+}
+
+// multipartMessageOrigDatagramLen takes b as an original datagram,
+// and returns a required length for a padded orignal datagram in wire
+// format.
+func multipartMessageOrigDatagramLen(proto int, b []byte) int {
+       roundup := func(b []byte, align int) int {
+               // According to RFC 4884, the padded original datagram
+               // field must contain at least 128 octets.
+               if len(b) < 128 {
+                       return 128
+               }
+               r := len(b)
+               return (r + align - 1) & ^(align - 1)
+       }
+       switch proto {
+       case iana.ProtocolICMP:
+               return roundup(b, 4)
+       case iana.ProtocolIPv6ICMP:
+               return roundup(b, 8)
+       default:
+               return len(b)
+       }
+}
+
+// marshalMultipartMessageBody takes data as an original datagram and
+// exts as extesnsions, and returns a binary encoding of message body.
+// It can be used for non-multipart message bodies when exts is nil.
+func marshalMultipartMessageBody(proto int, data []byte, exts []Extension) ([]byte, error) {
+       bodyLen, dataLen := multipartMessageBodyDataLen(proto, data, exts)
+       b := make([]byte, 4+bodyLen)
+       copy(b[4:], data)
+       off := dataLen + 4
+       if len(exts) > 0 {
+               b[dataLen+4] = byte(extensionVersion << 4)
+               off += 4 // length of object header
+               for _, ext := range exts {
+                       switch ext := ext.(type) {
+                       case *MPLSLabelStack:
+                               if err := ext.marshal(proto, b[off:]); err != nil {
+                                       return nil, err
+                               }
+                               off += ext.Len(proto)
+                       case *InterfaceInfo:
+                               attrs, l := ext.attrsAndLen(proto)
+                               if err := ext.marshal(proto, b[off:], attrs, l); err != nil {
+                                       return nil, err
+                               }
+                               off += ext.Len(proto)
+                       }
+               }
+               s := checksum(b[dataLen+4:])
+               b[dataLen+4+2] ^= byte(s)
+               b[dataLen+4+3] ^= byte(s >> 8)
+               switch proto {
+               case iana.ProtocolICMP:
+                       b[1] = byte(dataLen / 4)
+               case iana.ProtocolIPv6ICMP:
+                       b[0] = byte(dataLen / 8)
+               }
+       }
+       return b, nil
+}
+
+// parseMultipartMessageBody parses b as either a non-multipart
+// message body or a multipart message body.
+func parseMultipartMessageBody(proto int, b []byte) ([]byte, []Extension, error) {
+       var l int
+       switch proto {
+       case iana.ProtocolICMP:
+               l = 4 * int(b[1])
+       case iana.ProtocolIPv6ICMP:
+               l = 8 * int(b[0])
+       }
+       if len(b) == 4 {
+               return nil, nil, nil
+       }
+       exts, l, err := parseExtensions(b[4:], l)
+       if err != nil {
+               l = len(b) - 4
+       }
+       data := make([]byte, l)
+       copy(data, b[4:])
+       return data, exts, nil
+}
diff --git a/vendor/golang.org/x/net/icmp/packettoobig.go b/vendor/golang.org/x/net/icmp/packettoobig.go
new file mode 100644 (file)
index 0000000..a1c9df7
--- /dev/null
@@ -0,0 +1,43 @@
+// Copyright 2014 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 icmp
+
+import "encoding/binary"
+
+// A PacketTooBig represents an ICMP packet too big message body.
+type PacketTooBig struct {
+       MTU  int    // maximum transmission unit of the nexthop link
+       Data []byte // data, known as original datagram field
+}
+
+// Len implements the Len method of MessageBody interface.
+func (p *PacketTooBig) Len(proto int) int {
+       if p == nil {
+               return 0
+       }
+       return 4 + len(p.Data)
+}
+
+// Marshal implements the Marshal method of MessageBody interface.
+func (p *PacketTooBig) Marshal(proto int) ([]byte, error) {
+       b := make([]byte, 4+len(p.Data))
+       binary.BigEndian.PutUint32(b[:4], uint32(p.MTU))
+       copy(b[4:], p.Data)
+       return b, nil
+}
+
+// parsePacketTooBig parses b as an ICMP packet too big message body.
+func parsePacketTooBig(proto int, b []byte) (MessageBody, error) {
+       bodyLen := len(b)
+       if bodyLen < 4 {
+               return nil, errMessageTooShort
+       }
+       p := &PacketTooBig{MTU: int(binary.BigEndian.Uint32(b[:4]))}
+       if bodyLen > 4 {
+               p.Data = make([]byte, bodyLen-4)
+               copy(p.Data, b[4:])
+       }
+       return p, nil
+}
diff --git a/vendor/golang.org/x/net/icmp/paramprob.go b/vendor/golang.org/x/net/icmp/paramprob.go
new file mode 100644 (file)
index 0000000..0a2548d
--- /dev/null
@@ -0,0 +1,63 @@
+// Copyright 2014 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 icmp
+
+import (
+       "encoding/binary"
+       "golang.org/x/net/internal/iana"
+)
+
+// A ParamProb represents an ICMP parameter problem message body.
+type ParamProb struct {
+       Pointer    uintptr     // offset within the data where the error was detected
+       Data       []byte      // data, known as original datagram field
+       Extensions []Extension // extensions
+}
+
+// Len implements the Len method of MessageBody interface.
+func (p *ParamProb) Len(proto int) int {
+       if p == nil {
+               return 0
+       }
+       l, _ := multipartMessageBodyDataLen(proto, p.Data, p.Extensions)
+       return 4 + l
+}
+
+// Marshal implements the Marshal method of MessageBody interface.
+func (p *ParamProb) Marshal(proto int) ([]byte, error) {
+       if proto == iana.ProtocolIPv6ICMP {
+               b := make([]byte, p.Len(proto))
+               binary.BigEndian.PutUint32(b[:4], uint32(p.Pointer))
+               copy(b[4:], p.Data)
+               return b, nil
+       }
+       b, err := marshalMultipartMessageBody(proto, p.Data, p.Extensions)
+       if err != nil {
+               return nil, err
+       }
+       b[0] = byte(p.Pointer)
+       return b, nil
+}
+
+// parseParamProb parses b as an ICMP parameter problem message body.
+func parseParamProb(proto int, b []byte) (MessageBody, error) {
+       if len(b) < 4 {
+               return nil, errMessageTooShort
+       }
+       p := &ParamProb{}
+       if proto == iana.ProtocolIPv6ICMP {
+               p.Pointer = uintptr(binary.BigEndian.Uint32(b[:4]))
+               p.Data = make([]byte, len(b)-4)
+               copy(p.Data, b[4:])
+               return p, nil
+       }
+       p.Pointer = uintptr(b[0])
+       var err error
+       p.Data, p.Extensions, err = parseMultipartMessageBody(proto, b)
+       if err != nil {
+               return nil, err
+       }
+       return p, nil
+}
diff --git a/vendor/golang.org/x/net/icmp/sys_freebsd.go b/vendor/golang.org/x/net/icmp/sys_freebsd.go
new file mode 100644 (file)
index 0000000..c75f3dd
--- /dev/null
@@ -0,0 +1,11 @@
+// Copyright 2014 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 icmp
+
+import "syscall"
+
+func init() {
+       freebsdVersion, _ = syscall.SysctlUint32("kern.osreldate")
+}
diff --git a/vendor/golang.org/x/net/icmp/timeexceeded.go b/vendor/golang.org/x/net/icmp/timeexceeded.go
new file mode 100644 (file)
index 0000000..344e158
--- /dev/null
@@ -0,0 +1,39 @@
+// Copyright 2014 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 icmp
+
+// A TimeExceeded represents an ICMP time exceeded message body.
+type TimeExceeded struct {
+       Data       []byte      // data, known as original datagram field
+       Extensions []Extension // extensions
+}
+
+// Len implements the Len method of MessageBody interface.
+func (p *TimeExceeded) Len(proto int) int {
+       if p == nil {
+               return 0
+       }
+       l, _ := multipartMessageBodyDataLen(proto, p.Data, p.Extensions)
+       return 4 + l
+}
+
+// Marshal implements the Marshal method of MessageBody interface.
+func (p *TimeExceeded) Marshal(proto int) ([]byte, error) {
+       return marshalMultipartMessageBody(proto, p.Data, p.Extensions)
+}
+
+// parseTimeExceeded parses b as an ICMP time exceeded message body.
+func parseTimeExceeded(proto int, b []byte) (MessageBody, error) {
+       if len(b) < 4 {
+               return nil, errMessageTooShort
+       }
+       p := &TimeExceeded{}
+       var err error
+       p.Data, p.Extensions, err = parseMultipartMessageBody(proto, b)
+       if err != nil {
+               return nil, err
+       }
+       return p, nil
+}
diff --git a/vendor/golang.org/x/net/internal/iana/const.go b/vendor/golang.org/x/net/internal/iana/const.go
new file mode 100644 (file)
index 0000000..3438a27
--- /dev/null
@@ -0,0 +1,180 @@
+// go generate gen.go
+// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// Package iana provides protocol number resources managed by the Internet Assigned Numbers Authority (IANA).
+package iana // import "golang.org/x/net/internal/iana"
+
+// Differentiated Services Field Codepoints (DSCP), Updated: 2013-06-25
+const (
+       DiffServCS0        = 0x0  // CS0
+       DiffServCS1        = 0x20 // CS1
+       DiffServCS2        = 0x40 // CS2
+       DiffServCS3        = 0x60 // CS3
+       DiffServCS4        = 0x80 // CS4
+       DiffServCS5        = 0xa0 // CS5
+       DiffServCS6        = 0xc0 // CS6
+       DiffServCS7        = 0xe0 // CS7
+       DiffServAF11       = 0x28 // AF11
+       DiffServAF12       = 0x30 // AF12
+       DiffServAF13       = 0x38 // AF13
+       DiffServAF21       = 0x48 // AF21
+       DiffServAF22       = 0x50 // AF22
+       DiffServAF23       = 0x58 // AF23
+       DiffServAF31       = 0x68 // AF31
+       DiffServAF32       = 0x70 // AF32
+       DiffServAF33       = 0x78 // AF33
+       DiffServAF41       = 0x88 // AF41
+       DiffServAF42       = 0x90 // AF42
+       DiffServAF43       = 0x98 // AF43
+       DiffServEFPHB      = 0xb8 // EF PHB
+       DiffServVOICEADMIT = 0xb0 // VOICE-ADMIT
+)
+
+// IPv4 TOS Byte and IPv6 Traffic Class Octet, Updated: 2001-09-06
+const (
+       NotECNTransport       = 0x0 // Not-ECT (Not ECN-Capable Transport)
+       ECNTransport1         = 0x1 // ECT(1) (ECN-Capable Transport(1))
+       ECNTransport0         = 0x2 // ECT(0) (ECN-Capable Transport(0))
+       CongestionExperienced = 0x3 // CE (Congestion Experienced)
+)
+
+// Protocol Numbers, Updated: 2015-10-06
+const (
+       ProtocolIP             = 0   // IPv4 encapsulation, pseudo protocol number
+       ProtocolHOPOPT         = 0   // IPv6 Hop-by-Hop Option
+       ProtocolICMP           = 1   // Internet Control Message
+       ProtocolIGMP           = 2   // Internet Group Management
+       ProtocolGGP            = 3   // Gateway-to-Gateway
+       ProtocolIPv4           = 4   // IPv4 encapsulation
+       ProtocolST             = 5   // Stream
+       ProtocolTCP            = 6   // Transmission Control
+       ProtocolCBT            = 7   // CBT
+       ProtocolEGP            = 8   // Exterior Gateway Protocol
+       ProtocolIGP            = 9   // any private interior gateway (used by Cisco for their IGRP)
+       ProtocolBBNRCCMON      = 10  // BBN RCC Monitoring
+       ProtocolNVPII          = 11  // Network Voice Protocol
+       ProtocolPUP            = 12  // PUP
+       ProtocolEMCON          = 14  // EMCON
+       ProtocolXNET           = 15  // Cross Net Debugger
+       ProtocolCHAOS          = 16  // Chaos
+       ProtocolUDP            = 17  // User Datagram
+       ProtocolMUX            = 18  // Multiplexing
+       ProtocolDCNMEAS        = 19  // DCN Measurement Subsystems
+       ProtocolHMP            = 20  // Host Monitoring
+       ProtocolPRM            = 21  // Packet Radio Measurement
+       ProtocolXNSIDP         = 22  // XEROX NS IDP
+       ProtocolTRUNK1         = 23  // Trunk-1
+       ProtocolTRUNK2         = 24  // Trunk-2
+       ProtocolLEAF1          = 25  // Leaf-1
+       ProtocolLEAF2          = 26  // Leaf-2
+       ProtocolRDP            = 27  // Reliable Data Protocol
+       ProtocolIRTP           = 28  // Internet Reliable Transaction
+       ProtocolISOTP4         = 29  // ISO Transport Protocol Class 4
+       ProtocolNETBLT         = 30  // Bulk Data Transfer Protocol
+       ProtocolMFENSP         = 31  // MFE Network Services Protocol
+       ProtocolMERITINP       = 32  // MERIT Internodal Protocol
+       ProtocolDCCP           = 33  // Datagram Congestion Control Protocol
+       Protocol3PC            = 34  // Third Party Connect Protocol
+       ProtocolIDPR           = 35  // Inter-Domain Policy Routing Protocol
+       ProtocolXTP            = 36  // XTP
+       ProtocolDDP            = 37  // Datagram Delivery Protocol
+       ProtocolIDPRCMTP       = 38  // IDPR Control Message Transport Proto
+       ProtocolTPPP           = 39  // TP++ Transport Protocol
+       ProtocolIL             = 40  // IL Transport Protocol
+       ProtocolIPv6           = 41  // IPv6 encapsulation
+       ProtocolSDRP           = 42  // Source Demand Routing Protocol
+       ProtocolIPv6Route      = 43  // Routing Header for IPv6
+       ProtocolIPv6Frag       = 44  // Fragment Header for IPv6
+       ProtocolIDRP           = 45  // Inter-Domain Routing Protocol
+       ProtocolRSVP           = 46  // Reservation Protocol
+       ProtocolGRE            = 47  // Generic Routing Encapsulation
+       ProtocolDSR            = 48  // Dynamic Source Routing Protocol
+       ProtocolBNA            = 49  // BNA
+       ProtocolESP            = 50  // Encap Security Payload
+       ProtocolAH             = 51  // Authentication Header
+       ProtocolINLSP          = 52  // Integrated Net Layer Security  TUBA
+       ProtocolNARP           = 54  // NBMA Address Resolution Protocol
+       ProtocolMOBILE         = 55  // IP Mobility
+       ProtocolTLSP           = 56  // Transport Layer Security Protocol using Kryptonet key management
+       ProtocolSKIP           = 57  // SKIP
+       ProtocolIPv6ICMP       = 58  // ICMP for IPv6
+       ProtocolIPv6NoNxt      = 59  // No Next Header for IPv6
+       ProtocolIPv6Opts       = 60  // Destination Options for IPv6
+       ProtocolCFTP           = 62  // CFTP
+       ProtocolSATEXPAK       = 64  // SATNET and Backroom EXPAK
+       ProtocolKRYPTOLAN      = 65  // Kryptolan
+       ProtocolRVD            = 66  // MIT Remote Virtual Disk Protocol
+       ProtocolIPPC           = 67  // Internet Pluribus Packet Core
+       ProtocolSATMON         = 69  // SATNET Monitoring
+       ProtocolVISA           = 70  // VISA Protocol
+       ProtocolIPCV           = 71  // Internet Packet Core Utility
+       ProtocolCPNX           = 72  // Computer Protocol Network Executive
+       ProtocolCPHB           = 73  // Computer Protocol Heart Beat
+       ProtocolWSN            = 74  // Wang Span Network
+       ProtocolPVP            = 75  // Packet Video Protocol
+       ProtocolBRSATMON       = 76  // Backroom SATNET Monitoring
+       ProtocolSUNND          = 77  // SUN ND PROTOCOL-Temporary
+       ProtocolWBMON          = 78  // WIDEBAND Monitoring
+       ProtocolWBEXPAK        = 79  // WIDEBAND EXPAK
+       ProtocolISOIP          = 80  // ISO Internet Protocol
+       ProtocolVMTP           = 81  // VMTP
+       ProtocolSECUREVMTP     = 82  // SECURE-VMTP
+       ProtocolVINES          = 83  // VINES
+       ProtocolTTP            = 84  // Transaction Transport Protocol
+       ProtocolIPTM           = 84  // Internet Protocol Traffic Manager
+       ProtocolNSFNETIGP      = 85  // NSFNET-IGP
+       ProtocolDGP            = 86  // Dissimilar Gateway Protocol
+       ProtocolTCF            = 87  // TCF
+       ProtocolEIGRP          = 88  // EIGRP
+       ProtocolOSPFIGP        = 89  // OSPFIGP
+       ProtocolSpriteRPC      = 90  // Sprite RPC Protocol
+       ProtocolLARP           = 91  // Locus Address Resolution Protocol
+       ProtocolMTP            = 92  // Multicast Transport Protocol
+       ProtocolAX25           = 93  // AX.25 Frames
+       ProtocolIPIP           = 94  // IP-within-IP Encapsulation Protocol
+       ProtocolSCCSP          = 96  // Semaphore Communications Sec. Pro.
+       ProtocolETHERIP        = 97  // Ethernet-within-IP Encapsulation
+       ProtocolENCAP          = 98  // Encapsulation Header
+       ProtocolGMTP           = 100 // GMTP
+       ProtocolIFMP           = 101 // Ipsilon Flow Management Protocol
+       ProtocolPNNI           = 102 // PNNI over IP
+       ProtocolPIM            = 103 // Protocol Independent Multicast
+       ProtocolARIS           = 104 // ARIS
+       ProtocolSCPS           = 105 // SCPS
+       ProtocolQNX            = 106 // QNX
+       ProtocolAN             = 107 // Active Networks
+       ProtocolIPComp         = 108 // IP Payload Compression Protocol
+       ProtocolSNP            = 109 // Sitara Networks Protocol
+       ProtocolCompaqPeer     = 110 // Compaq Peer Protocol
+       ProtocolIPXinIP        = 111 // IPX in IP
+       ProtocolVRRP           = 112 // Virtual Router Redundancy Protocol
+       ProtocolPGM            = 113 // PGM Reliable Transport Protocol
+       ProtocolL2TP           = 115 // Layer Two Tunneling Protocol
+       ProtocolDDX            = 116 // D-II Data Exchange (DDX)
+       ProtocolIATP           = 117 // Interactive Agent Transfer Protocol
+       ProtocolSTP            = 118 // Schedule Transfer Protocol
+       ProtocolSRP            = 119 // SpectraLink Radio Protocol
+       ProtocolUTI            = 120 // UTI
+       ProtocolSMP            = 121 // Simple Message Protocol
+       ProtocolPTP            = 123 // Performance Transparency Protocol
+       ProtocolISIS           = 124 // ISIS over IPv4
+       ProtocolFIRE           = 125 // FIRE
+       ProtocolCRTP           = 126 // Combat Radio Transport Protocol
+       ProtocolCRUDP          = 127 // Combat Radio User Datagram
+       ProtocolSSCOPMCE       = 128 // SSCOPMCE
+       ProtocolIPLT           = 129 // IPLT
+       ProtocolSPS            = 130 // Secure Packet Shield
+       ProtocolPIPE           = 131 // Private IP Encapsulation within IP
+       ProtocolSCTP           = 132 // Stream Control Transmission Protocol
+       ProtocolFC             = 133 // Fibre Channel
+       ProtocolRSVPE2EIGNORE  = 134 // RSVP-E2E-IGNORE
+       ProtocolMobilityHeader = 135 // Mobility Header
+       ProtocolUDPLite        = 136 // UDPLite
+       ProtocolMPLSinIP       = 137 // MPLS-in-IP
+       ProtocolMANET          = 138 // MANET Protocols
+       ProtocolHIP            = 139 // Host Identity Protocol
+       ProtocolShim6          = 140 // Shim6 Protocol
+       ProtocolWESP           = 141 // Wrapped Encapsulating Security Payload
+       ProtocolROHC           = 142 // Robust Header Compression
+       ProtocolReserved       = 255 // Reserved
+)
diff --git a/vendor/golang.org/x/net/internal/iana/gen.go b/vendor/golang.org/x/net/internal/iana/gen.go
new file mode 100644 (file)
index 0000000..2d8c07c
--- /dev/null
@@ -0,0 +1,293 @@
+// Copyright 2013 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.
+
+// +build ignore
+
+//go:generate go run gen.go
+
+// This program generates internet protocol constants and tables by
+// reading IANA protocol registries.
+package main
+
+import (
+       "bytes"
+       "encoding/xml"
+       "fmt"
+       "go/format"
+       "io"
+       "io/ioutil"
+       "net/http"
+       "os"
+       "strconv"
+       "strings"
+)
+
+var registries = []struct {
+       url   string
+       parse func(io.Writer, io.Reader) error
+}{
+       {
+               "http://www.iana.org/assignments/dscp-registry/dscp-registry.xml",
+               parseDSCPRegistry,
+       },
+       {
+               "http://www.iana.org/assignments/ipv4-tos-byte/ipv4-tos-byte.xml",
+               parseTOSTCByte,
+       },
+       {
+               "http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml",
+               parseProtocolNumbers,
+       },
+}
+
+func main() {
+       var bb bytes.Buffer
+       fmt.Fprintf(&bb, "// go generate gen.go\n")
+       fmt.Fprintf(&bb, "// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT\n\n")
+       fmt.Fprintf(&bb, "// Package iana provides protocol number resources managed by the Internet Assigned Numbers Authority (IANA).\n")
+       fmt.Fprintf(&bb, `package iana // import "golang.org/x/net/internal/iana"`+"\n\n")
+       for _, r := range registries {
+               resp, err := http.Get(r.url)
+               if err != nil {
+                       fmt.Fprintln(os.Stderr, err)
+                       os.Exit(1)
+               }
+               defer resp.Body.Close()
+               if resp.StatusCode != http.StatusOK {
+                       fmt.Fprintf(os.Stderr, "got HTTP status code %v for %v\n", resp.StatusCode, r.url)
+                       os.Exit(1)
+               }
+               if err := r.parse(&bb, resp.Body); err != nil {
+                       fmt.Fprintln(os.Stderr, err)
+                       os.Exit(1)
+               }
+               fmt.Fprintf(&bb, "\n")
+       }
+       b, err := format.Source(bb.Bytes())
+       if err != nil {
+               fmt.Fprintln(os.Stderr, err)
+               os.Exit(1)
+       }
+       if err := ioutil.WriteFile("const.go", b, 0644); err != nil {
+               fmt.Fprintln(os.Stderr, err)
+               os.Exit(1)
+       }
+}
+
+func parseDSCPRegistry(w io.Writer, r io.Reader) error {
+       dec := xml.NewDecoder(r)
+       var dr dscpRegistry
+       if err := dec.Decode(&dr); err != nil {
+               return err
+       }
+       drs := dr.escape()
+       fmt.Fprintf(w, "// %s, Updated: %s\n", dr.Title, dr.Updated)
+       fmt.Fprintf(w, "const (\n")
+       for _, dr := range drs {
+               fmt.Fprintf(w, "DiffServ%s = %#x", dr.Name, dr.Value)
+               fmt.Fprintf(w, "// %s\n", dr.OrigName)
+       }
+       fmt.Fprintf(w, ")\n")
+       return nil
+}
+
+type dscpRegistry struct {
+       XMLName     xml.Name `xml:"registry"`
+       Title       string   `xml:"title"`
+       Updated     string   `xml:"updated"`
+       Note        string   `xml:"note"`
+       RegTitle    string   `xml:"registry>title"`
+       PoolRecords []struct {
+               Name  string `xml:"name"`
+               Space string `xml:"space"`
+       } `xml:"registry>record"`
+       Records []struct {
+               Name  string `xml:"name"`
+               Space string `xml:"space"`
+       } `xml:"registry>registry>record"`
+}
+
+type canonDSCPRecord struct {
+       OrigName string
+       Name     string
+       Value    int
+}
+
+func (drr *dscpRegistry) escape() []canonDSCPRecord {
+       drs := make([]canonDSCPRecord, len(drr.Records))
+       sr := strings.NewReplacer(
+               "+", "",
+               "-", "",
+               "/", "",
+               ".", "",
+               " ", "",
+       )
+       for i, dr := range drr.Records {
+               s := strings.TrimSpace(dr.Name)
+               drs[i].OrigName = s
+               drs[i].Name = sr.Replace(s)
+               n, err := strconv.ParseUint(dr.Space, 2, 8)
+               if err != nil {
+                       continue
+               }
+               drs[i].Value = int(n) << 2
+       }
+       return drs
+}
+
+func parseTOSTCByte(w io.Writer, r io.Reader) error {
+       dec := xml.NewDecoder(r)
+       var ttb tosTCByte
+       if err := dec.Decode(&ttb); err != nil {
+               return err
+       }
+       trs := ttb.escape()
+       fmt.Fprintf(w, "// %s, Updated: %s\n", ttb.Title, ttb.Updated)
+       fmt.Fprintf(w, "const (\n")
+       for _, tr := range trs {
+               fmt.Fprintf(w, "%s = %#x", tr.Keyword, tr.Value)
+               fmt.Fprintf(w, "// %s\n", tr.OrigKeyword)
+       }
+       fmt.Fprintf(w, ")\n")
+       return nil
+}
+
+type tosTCByte struct {
+       XMLName  xml.Name `xml:"registry"`
+       Title    string   `xml:"title"`
+       Updated  string   `xml:"updated"`
+       Note     string   `xml:"note"`
+       RegTitle string   `xml:"registry>title"`
+       Records  []struct {
+               Binary  string `xml:"binary"`
+               Keyword string `xml:"keyword"`
+       } `xml:"registry>record"`
+}
+
+type canonTOSTCByteRecord struct {
+       OrigKeyword string
+       Keyword     string
+       Value       int
+}
+
+func (ttb *tosTCByte) escape() []canonTOSTCByteRecord {
+       trs := make([]canonTOSTCByteRecord, len(ttb.Records))
+       sr := strings.NewReplacer(
+               "Capable", "",
+               "(", "",
+               ")", "",
+               "+", "",
+               "-", "",
+               "/", "",
+               ".", "",
+               " ", "",
+       )
+       for i, tr := range ttb.Records {
+               s := strings.TrimSpace(tr.Keyword)
+               trs[i].OrigKeyword = s
+               ss := strings.Split(s, " ")
+               if len(ss) > 1 {
+                       trs[i].Keyword = strings.Join(ss[1:], " ")
+               } else {
+                       trs[i].Keyword = ss[0]
+               }
+               trs[i].Keyword = sr.Replace(trs[i].Keyword)
+               n, err := strconv.ParseUint(tr.Binary, 2, 8)
+               if err != nil {
+                       continue
+               }
+               trs[i].Value = int(n)
+       }
+       return trs
+}
+
+func parseProtocolNumbers(w io.Writer, r io.Reader) error {
+       dec := xml.NewDecoder(r)
+       var pn protocolNumbers
+       if err := dec.Decode(&pn); err != nil {
+               return err
+       }
+       prs := pn.escape()
+       prs = append([]canonProtocolRecord{{
+               Name:  "IP",
+               Descr: "IPv4 encapsulation, pseudo protocol number",
+               Value: 0,
+       }}, prs...)
+       fmt.Fprintf(w, "// %s, Updated: %s\n", pn.Title, pn.Updated)
+       fmt.Fprintf(w, "const (\n")
+       for _, pr := range prs {
+               if pr.Name == "" {
+                       continue
+               }
+               fmt.Fprintf(w, "Protocol%s = %d", pr.Name, pr.Value)
+               s := pr.Descr
+               if s == "" {
+                       s = pr.OrigName
+               }
+               fmt.Fprintf(w, "// %s\n", s)
+       }
+       fmt.Fprintf(w, ")\n")
+       return nil
+}
+
+type protocolNumbers struct {
+       XMLName  xml.Name `xml:"registry"`
+       Title    string   `xml:"title"`
+       Updated  string   `xml:"updated"`
+       RegTitle string   `xml:"registry>title"`
+       Note     string   `xml:"registry>note"`
+       Records  []struct {
+               Value string `xml:"value"`
+               Name  string `xml:"name"`
+               Descr string `xml:"description"`
+       } `xml:"registry>record"`
+}
+
+type canonProtocolRecord struct {
+       OrigName string
+       Name     string
+       Descr    string
+       Value    int
+}
+
+func (pn *protocolNumbers) escape() []canonProtocolRecord {
+       prs := make([]canonProtocolRecord, len(pn.Records))
+       sr := strings.NewReplacer(
+               "-in-", "in",
+               "-within-", "within",
+               "-over-", "over",
+               "+", "P",
+               "-", "",
+               "/", "",
+               ".", "",
+               " ", "",
+       )
+       for i, pr := range pn.Records {
+               if strings.Contains(pr.Name, "Deprecated") ||
+                       strings.Contains(pr.Name, "deprecated") {
+                       continue
+               }
+               prs[i].OrigName = pr.Name
+               s := strings.TrimSpace(pr.Name)
+               switch pr.Name {
+               case "ISIS over IPv4":
+                       prs[i].Name = "ISIS"
+               case "manet":
+                       prs[i].Name = "MANET"
+               default:
+                       prs[i].Name = sr.Replace(s)
+               }
+               ss := strings.Split(pr.Descr, "\n")
+               for i := range ss {
+                       ss[i] = strings.TrimSpace(ss[i])
+               }
+               if len(ss) > 1 {
+                       prs[i].Descr = strings.Join(ss, " ")
+               } else {
+                       prs[i].Descr = ss[0]
+               }
+               prs[i].Value, _ = strconv.Atoi(pr.Value)
+       }
+       return prs
+}
diff --git a/vendor/golang.org/x/net/ipv4/control.go b/vendor/golang.org/x/net/ipv4/control.go
new file mode 100644 (file)
index 0000000..8cadfd7
--- /dev/null
@@ -0,0 +1,70 @@
+// Copyright 2012 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 ipv4
+
+import (
+       "fmt"
+       "net"
+       "sync"
+)
+
+type rawOpt struct {
+       sync.RWMutex
+       cflags ControlFlags
+}
+
+func (c *rawOpt) set(f ControlFlags)        { c.cflags |= f }
+func (c *rawOpt) clear(f ControlFlags)      { c.cflags &^= f }
+func (c *rawOpt) isset(f ControlFlags) bool { return c.cflags&f != 0 }
+
+type ControlFlags uint
+
+const (
+       FlagTTL       ControlFlags = 1 << iota // pass the TTL on the received packet
+       FlagSrc                                // pass the source address on the received packet
+       FlagDst                                // pass the destination address on the received packet
+       FlagInterface                          // pass the interface index on the received packet
+)
+
+// A ControlMessage represents per packet basis IP-level socket options.
+type ControlMessage struct {
+       // Receiving socket options: SetControlMessage allows to
+       // receive the options from the protocol stack using ReadFrom
+       // method of PacketConn or RawConn.
+       //
+       // Specifying socket options: ControlMessage for WriteTo
+       // method of PacketConn or RawConn allows to send the options
+       // to the protocol stack.
+       //
+       TTL     int    // time-to-live, receiving only
+       Src     net.IP // source address, specifying only
+       Dst     net.IP // destination address, receiving only
+       IfIndex int    // interface index, must be 1 <= value when specifying
+}
+
+func (cm *ControlMessage) String() string {
+       if cm == nil {
+               return "<nil>"
+       }
+       return fmt.Sprintf("ttl=%d src=%v dst=%v ifindex=%d", cm.TTL, cm.Src, cm.Dst, cm.IfIndex)
+}
+
+// Ancillary data socket options
+const (
+       ctlTTL        = iota // header field
+       ctlSrc               // header field
+       ctlDst               // header field
+       ctlInterface         // inbound or outbound interface
+       ctlPacketInfo        // inbound or outbound packet path
+       ctlMax
+)
+
+// A ctlOpt represents a binding for ancillary data socket option.
+type ctlOpt struct {
+       name    int // option name, must be equal or greater than 1
+       length  int // option length
+       marshal func([]byte, *ControlMessage) []byte
+       parse   func(*ControlMessage, []byte)
+}
diff --git a/vendor/golang.org/x/net/ipv4/control_bsd.go b/vendor/golang.org/x/net/ipv4/control_bsd.go
new file mode 100644 (file)
index 0000000..33d8bc8
--- /dev/null
@@ -0,0 +1,40 @@
+// Copyright 2012 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.
+
+// +build darwin dragonfly freebsd netbsd openbsd
+
+package ipv4
+
+import (
+       "net"
+       "syscall"
+       "unsafe"
+
+       "golang.org/x/net/internal/iana"
+)
+
+func marshalDst(b []byte, cm *ControlMessage) []byte {
+       m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0]))
+       m.Level = iana.ProtocolIP
+       m.Type = sysIP_RECVDSTADDR
+       m.SetLen(syscall.CmsgLen(net.IPv4len))
+       return b[syscall.CmsgSpace(net.IPv4len):]
+}
+
+func parseDst(cm *ControlMessage, b []byte) {
+       cm.Dst = b[:net.IPv4len]
+}
+
+func marshalInterface(b []byte, cm *ControlMessage) []byte {
+       m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0]))
+       m.Level = iana.ProtocolIP
+       m.Type = sysIP_RECVIF
+       m.SetLen(syscall.CmsgLen(syscall.SizeofSockaddrDatalink))
+       return b[syscall.CmsgSpace(syscall.SizeofSockaddrDatalink):]
+}
+
+func parseInterface(cm *ControlMessage, b []byte) {
+       sadl := (*syscall.SockaddrDatalink)(unsafe.Pointer(&b[0]))
+       cm.IfIndex = int(sadl.Index)
+}
diff --git a/vendor/golang.org/x/net/ipv4/control_pktinfo.go b/vendor/golang.org/x/net/ipv4/control_pktinfo.go
new file mode 100644 (file)
index 0000000..444782f
--- /dev/null
@@ -0,0 +1,37 @@
+// Copyright 2014 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.
+
+// +build darwin linux
+
+package ipv4
+
+import (
+       "syscall"
+       "unsafe"
+
+       "golang.org/x/net/internal/iana"
+)
+
+func marshalPacketInfo(b []byte, cm *ControlMessage) []byte {
+       m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0]))
+       m.Level = iana.ProtocolIP
+       m.Type = sysIP_PKTINFO
+       m.SetLen(syscall.CmsgLen(sysSizeofInetPktinfo))
+       if cm != nil {
+               pi := (*sysInetPktinfo)(unsafe.Pointer(&b[syscall.CmsgLen(0)]))
+               if ip := cm.Src.To4(); ip != nil {
+                       copy(pi.Spec_dst[:], ip)
+               }
+               if cm.IfIndex > 0 {
+                       pi.setIfindex(cm.IfIndex)
+               }
+       }
+       return b[syscall.CmsgSpace(sysSizeofInetPktinfo):]
+}
+
+func parsePacketInfo(cm *ControlMessage, b []byte) {
+       pi := (*sysInetPktinfo)(unsafe.Pointer(&b[0]))
+       cm.IfIndex = int(pi.Ifindex)
+       cm.Dst = pi.Addr[:]
+}
diff --git a/vendor/golang.org/x/net/ipv4/control_stub.go b/vendor/golang.org/x/net/ipv4/control_stub.go
new file mode 100644 (file)
index 0000000..4d85071
--- /dev/null
@@ -0,0 +1,23 @@
+// Copyright 2012 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.
+
+// +build nacl plan9 solaris
+
+package ipv4
+
+func setControlMessage(fd int, opt *rawOpt, cf ControlFlags, on bool) error {
+       return errOpNoSupport
+}
+
+func newControlMessage(opt *rawOpt) []byte {
+       return nil
+}
+
+func parseControlMessage(b []byte) (*ControlMessage, error) {
+       return nil, errOpNoSupport
+}
+
+func marshalControlMessage(cm *ControlMessage) []byte {
+       return nil
+}
diff --git a/vendor/golang.org/x/net/ipv4/control_unix.go b/vendor/golang.org/x/net/ipv4/control_unix.go
new file mode 100644 (file)
index 0000000..3000c52
--- /dev/null
@@ -0,0 +1,164 @@
+// Copyright 2012 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.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd
+
+package ipv4
+
+import (
+       "os"
+       "syscall"
+       "unsafe"
+
+       "golang.org/x/net/internal/iana"
+)
+
+func setControlMessage(fd int, opt *rawOpt, cf ControlFlags, on bool) error {
+       opt.Lock()
+       defer opt.Unlock()
+       if cf&FlagTTL != 0 && sockOpts[ssoReceiveTTL].name > 0 {
+               if err := setInt(fd, &sockOpts[ssoReceiveTTL], boolint(on)); err != nil {
+                       return err
+               }
+               if on {
+                       opt.set(FlagTTL)
+               } else {
+                       opt.clear(FlagTTL)
+               }
+       }
+       if sockOpts[ssoPacketInfo].name > 0 {
+               if cf&(FlagSrc|FlagDst|FlagInterface) != 0 {
+                       if err := setInt(fd, &sockOpts[ssoPacketInfo], boolint(on)); err != nil {
+                               return err
+                       }
+                       if on {
+                               opt.set(cf & (FlagSrc | FlagDst | FlagInterface))
+                       } else {
+                               opt.clear(cf & (FlagSrc | FlagDst | FlagInterface))
+                       }
+               }
+       } else {
+               if cf&FlagDst != 0 && sockOpts[ssoReceiveDst].name > 0 {
+                       if err := setInt(fd, &sockOpts[ssoReceiveDst], boolint(on)); err != nil {
+                               return err
+                       }
+                       if on {
+                               opt.set(FlagDst)
+                       } else {
+                               opt.clear(FlagDst)
+                       }
+               }
+               if cf&FlagInterface != 0 && sockOpts[ssoReceiveInterface].name > 0 {
+                       if err := setInt(fd, &sockOpts[ssoReceiveInterface], boolint(on)); err != nil {
+                               return err
+                       }
+                       if on {
+                               opt.set(FlagInterface)
+                       } else {
+                               opt.clear(FlagInterface)
+                       }
+               }
+       }
+       return nil
+}
+
+func newControlMessage(opt *rawOpt) (oob []byte) {
+       opt.RLock()
+       var l int
+       if opt.isset(FlagTTL) && ctlOpts[ctlTTL].name > 0 {
+               l += syscall.CmsgSpace(ctlOpts[ctlTTL].length)
+       }
+       if ctlOpts[ctlPacketInfo].name > 0 {
+               if opt.isset(FlagSrc | FlagDst | FlagInterface) {
+                       l += syscall.CmsgSpace(ctlOpts[ctlPacketInfo].length)
+               }
+       } else {
+               if opt.isset(FlagDst) && ctlOpts[ctlDst].name > 0 {
+                       l += syscall.CmsgSpace(ctlOpts[ctlDst].length)
+               }
+               if opt.isset(FlagInterface) && ctlOpts[ctlInterface].name > 0 {
+                       l += syscall.CmsgSpace(ctlOpts[ctlInterface].length)
+               }
+       }
+       if l > 0 {
+               oob = make([]byte, l)
+               b := oob
+               if opt.isset(FlagTTL) && ctlOpts[ctlTTL].name > 0 {
+                       b = ctlOpts[ctlTTL].marshal(b, nil)
+               }
+               if ctlOpts[ctlPacketInfo].name > 0 {
+                       if opt.isset(FlagSrc | FlagDst | FlagInterface) {
+                               b = ctlOpts[ctlPacketInfo].marshal(b, nil)
+                       }
+               } else {
+                       if opt.isset(FlagDst) && ctlOpts[ctlDst].name > 0 {
+                               b = ctlOpts[ctlDst].marshal(b, nil)
+                       }
+                       if opt.isset(FlagInterface) && ctlOpts[ctlInterface].name > 0 {
+                               b = ctlOpts[ctlInterface].marshal(b, nil)
+                       }
+               }
+       }
+       opt.RUnlock()
+       return
+}
+
+func parseControlMessage(b []byte) (*ControlMessage, error) {
+       if len(b) == 0 {
+               return nil, nil
+       }
+       cmsgs, err := syscall.ParseSocketControlMessage(b)
+       if err != nil {
+               return nil, os.NewSyscallError("parse socket control message", err)
+       }
+       cm := &ControlMessage{}
+       for _, m := range cmsgs {
+               if m.Header.Level != iana.ProtocolIP {
+                       continue
+               }
+               switch int(m.Header.Type) {
+               case ctlOpts[ctlTTL].name:
+                       ctlOpts[ctlTTL].parse(cm, m.Data[:])
+               case ctlOpts[ctlDst].name:
+                       ctlOpts[ctlDst].parse(cm, m.Data[:])
+               case ctlOpts[ctlInterface].name:
+                       ctlOpts[ctlInterface].parse(cm, m.Data[:])
+               case ctlOpts[ctlPacketInfo].name:
+                       ctlOpts[ctlPacketInfo].parse(cm, m.Data[:])
+               }
+       }
+       return cm, nil
+}
+
+func marshalControlMessage(cm *ControlMessage) (oob []byte) {
+       if cm == nil {
+               return nil
+       }
+       var l int
+       pktinfo := false
+       if ctlOpts[ctlPacketInfo].name > 0 && (cm.Src.To4() != nil || cm.IfIndex > 0) {
+               pktinfo = true
+               l += syscall.CmsgSpace(ctlOpts[ctlPacketInfo].length)
+       }
+       if l > 0 {
+               oob = make([]byte, l)
+               b := oob
+               if pktinfo {
+                       b = ctlOpts[ctlPacketInfo].marshal(b, cm)
+               }
+       }
+       return
+}
+
+func marshalTTL(b []byte, cm *ControlMessage) []byte {
+       m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0]))
+       m.Level = iana.ProtocolIP
+       m.Type = sysIP_RECVTTL
+       m.SetLen(syscall.CmsgLen(1))
+       return b[syscall.CmsgSpace(1):]
+}
+
+func parseTTL(cm *ControlMessage, b []byte) {
+       cm.TTL = int(*(*byte)(unsafe.Pointer(&b[:1][0])))
+}
diff --git a/vendor/golang.org/x/net/ipv4/control_windows.go b/vendor/golang.org/x/net/ipv4/control_windows.go
new file mode 100644 (file)
index 0000000..800f637
--- /dev/null
@@ -0,0 +1,27 @@
+// Copyright 2012 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 ipv4
+
+import "syscall"
+
+func setControlMessage(fd syscall.Handle, opt *rawOpt, cf ControlFlags, on bool) error {
+       // TODO(mikio): implement this
+       return syscall.EWINDOWS
+}
+
+func newControlMessage(opt *rawOpt) []byte {
+       // TODO(mikio): implement this
+       return nil
+}
+
+func parseControlMessage(b []byte) (*ControlMessage, error) {
+       // TODO(mikio): implement this
+       return nil, syscall.EWINDOWS
+}
+
+func marshalControlMessage(cm *ControlMessage) []byte {
+       // TODO(mikio): implement this
+       return nil
+}
diff --git a/vendor/golang.org/x/net/ipv4/defs_darwin.go b/vendor/golang.org/x/net/ipv4/defs_darwin.go
new file mode 100644 (file)
index 0000000..731d56a
--- /dev/null
@@ -0,0 +1,77 @@
+// Copyright 2014 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.
+
+// +build ignore
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+
+package ipv4
+
+/*
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+*/
+import "C"
+
+const (
+       sysIP_OPTIONS     = C.IP_OPTIONS
+       sysIP_HDRINCL     = C.IP_HDRINCL
+       sysIP_TOS         = C.IP_TOS
+       sysIP_TTL         = C.IP_TTL
+       sysIP_RECVOPTS    = C.IP_RECVOPTS
+       sysIP_RECVRETOPTS = C.IP_RECVRETOPTS
+       sysIP_RECVDSTADDR = C.IP_RECVDSTADDR
+       sysIP_RETOPTS     = C.IP_RETOPTS
+       sysIP_RECVIF      = C.IP_RECVIF
+       sysIP_STRIPHDR    = C.IP_STRIPHDR
+       sysIP_RECVTTL     = C.IP_RECVTTL
+       sysIP_BOUND_IF    = C.IP_BOUND_IF
+       sysIP_PKTINFO     = C.IP_PKTINFO
+       sysIP_RECVPKTINFO = C.IP_RECVPKTINFO
+
+       sysIP_MULTICAST_IF           = C.IP_MULTICAST_IF
+       sysIP_MULTICAST_TTL          = C.IP_MULTICAST_TTL
+       sysIP_MULTICAST_LOOP         = C.IP_MULTICAST_LOOP
+       sysIP_ADD_MEMBERSHIP         = C.IP_ADD_MEMBERSHIP
+       sysIP_DROP_MEMBERSHIP        = C.IP_DROP_MEMBERSHIP
+       sysIP_MULTICAST_VIF          = C.IP_MULTICAST_VIF
+       sysIP_MULTICAST_IFINDEX      = C.IP_MULTICAST_IFINDEX
+       sysIP_ADD_SOURCE_MEMBERSHIP  = C.IP_ADD_SOURCE_MEMBERSHIP
+       sysIP_DROP_SOURCE_MEMBERSHIP = C.IP_DROP_SOURCE_MEMBERSHIP
+       sysIP_BLOCK_SOURCE           = C.IP_BLOCK_SOURCE
+       sysIP_UNBLOCK_SOURCE         = C.IP_UNBLOCK_SOURCE
+       sysMCAST_JOIN_GROUP          = C.MCAST_JOIN_GROUP
+       sysMCAST_LEAVE_GROUP         = C.MCAST_LEAVE_GROUP
+       sysMCAST_JOIN_SOURCE_GROUP   = C.MCAST_JOIN_SOURCE_GROUP
+       sysMCAST_LEAVE_SOURCE_GROUP  = C.MCAST_LEAVE_SOURCE_GROUP
+       sysMCAST_BLOCK_SOURCE        = C.MCAST_BLOCK_SOURCE
+       sysMCAST_UNBLOCK_SOURCE      = C.MCAST_UNBLOCK_SOURCE
+
+       sysSizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage
+       sysSizeofSockaddrInet    = C.sizeof_struct_sockaddr_in
+       sysSizeofInetPktinfo     = C.sizeof_struct_in_pktinfo
+
+       sysSizeofIPMreq         = C.sizeof_struct_ip_mreq
+       sysSizeofIPMreqn        = C.sizeof_struct_ip_mreqn
+       sysSizeofIPMreqSource   = C.sizeof_struct_ip_mreq_source
+       sysSizeofGroupReq       = C.sizeof_struct_group_req
+       sysSizeofGroupSourceReq = C.sizeof_struct_group_source_req
+)
+
+type sysSockaddrStorage C.struct_sockaddr_storage
+
+type sysSockaddrInet C.struct_sockaddr_in
+
+type sysInetPktinfo C.struct_in_pktinfo
+
+type sysIPMreq C.struct_ip_mreq
+
+type sysIPMreqn C.struct_ip_mreqn
+
+type sysIPMreqSource C.struct_ip_mreq_source
+
+type sysGroupReq C.struct_group_req
+
+type sysGroupSourceReq C.struct_group_source_req
diff --git a/vendor/golang.org/x/net/ipv4/defs_dragonfly.go b/vendor/golang.org/x/net/ipv4/defs_dragonfly.go
new file mode 100644 (file)
index 0000000..08e3b85
--- /dev/null
@@ -0,0 +1,38 @@
+// Copyright 2014 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.
+
+// +build ignore
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+
+package ipv4
+
+/*
+#include <netinet/in.h>
+*/
+import "C"
+
+const (
+       sysIP_OPTIONS     = C.IP_OPTIONS
+       sysIP_HDRINCL     = C.IP_HDRINCL
+       sysIP_TOS         = C.IP_TOS
+       sysIP_TTL         = C.IP_TTL
+       sysIP_RECVOPTS    = C.IP_RECVOPTS
+       sysIP_RECVRETOPTS = C.IP_RECVRETOPTS
+       sysIP_RECVDSTADDR = C.IP_RECVDSTADDR
+       sysIP_RETOPTS     = C.IP_RETOPTS
+       sysIP_RECVIF      = C.IP_RECVIF
+       sysIP_RECVTTL     = C.IP_RECVTTL
+
+       sysIP_MULTICAST_IF    = C.IP_MULTICAST_IF
+       sysIP_MULTICAST_TTL   = C.IP_MULTICAST_TTL
+       sysIP_MULTICAST_LOOP  = C.IP_MULTICAST_LOOP
+       sysIP_MULTICAST_VIF   = C.IP_MULTICAST_VIF
+       sysIP_ADD_MEMBERSHIP  = C.IP_ADD_MEMBERSHIP
+       sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP
+
+       sysSizeofIPMreq = C.sizeof_struct_ip_mreq
+)
+
+type sysIPMreq C.struct_ip_mreq
diff --git a/vendor/golang.org/x/net/ipv4/defs_freebsd.go b/vendor/golang.org/x/net/ipv4/defs_freebsd.go
new file mode 100644 (file)
index 0000000..f12ca32
--- /dev/null
@@ -0,0 +1,75 @@
+// Copyright 2014 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.
+
+// +build ignore
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+
+package ipv4
+
+/*
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+*/
+import "C"
+
+const (
+       sysIP_OPTIONS     = C.IP_OPTIONS
+       sysIP_HDRINCL     = C.IP_HDRINCL
+       sysIP_TOS         = C.IP_TOS
+       sysIP_TTL         = C.IP_TTL
+       sysIP_RECVOPTS    = C.IP_RECVOPTS
+       sysIP_RECVRETOPTS = C.IP_RECVRETOPTS
+       sysIP_RECVDSTADDR = C.IP_RECVDSTADDR
+       sysIP_SENDSRCADDR = C.IP_SENDSRCADDR
+       sysIP_RETOPTS     = C.IP_RETOPTS
+       sysIP_RECVIF      = C.IP_RECVIF
+       sysIP_ONESBCAST   = C.IP_ONESBCAST
+       sysIP_BINDANY     = C.IP_BINDANY
+       sysIP_RECVTTL     = C.IP_RECVTTL
+       sysIP_MINTTL      = C.IP_MINTTL
+       sysIP_DONTFRAG    = C.IP_DONTFRAG
+       sysIP_RECVTOS     = C.IP_RECVTOS
+
+       sysIP_MULTICAST_IF           = C.IP_MULTICAST_IF
+       sysIP_MULTICAST_TTL          = C.IP_MULTICAST_TTL
+       sysIP_MULTICAST_LOOP         = C.IP_MULTICAST_LOOP
+       sysIP_ADD_MEMBERSHIP         = C.IP_ADD_MEMBERSHIP
+       sysIP_DROP_MEMBERSHIP        = C.IP_DROP_MEMBERSHIP
+       sysIP_MULTICAST_VIF          = C.IP_MULTICAST_VIF
+       sysIP_ADD_SOURCE_MEMBERSHIP  = C.IP_ADD_SOURCE_MEMBERSHIP
+       sysIP_DROP_SOURCE_MEMBERSHIP = C.IP_DROP_SOURCE_MEMBERSHIP
+       sysIP_BLOCK_SOURCE           = C.IP_BLOCK_SOURCE
+       sysIP_UNBLOCK_SOURCE         = C.IP_UNBLOCK_SOURCE
+       sysMCAST_JOIN_GROUP          = C.MCAST_JOIN_GROUP
+       sysMCAST_LEAVE_GROUP         = C.MCAST_LEAVE_GROUP
+       sysMCAST_JOIN_SOURCE_GROUP   = C.MCAST_JOIN_SOURCE_GROUP
+       sysMCAST_LEAVE_SOURCE_GROUP  = C.MCAST_LEAVE_SOURCE_GROUP
+       sysMCAST_BLOCK_SOURCE        = C.MCAST_BLOCK_SOURCE
+       sysMCAST_UNBLOCK_SOURCE      = C.MCAST_UNBLOCK_SOURCE
+
+       sysSizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage
+       sysSizeofSockaddrInet    = C.sizeof_struct_sockaddr_in
+
+       sysSizeofIPMreq         = C.sizeof_struct_ip_mreq
+       sysSizeofIPMreqn        = C.sizeof_struct_ip_mreqn
+       sysSizeofIPMreqSource   = C.sizeof_struct_ip_mreq_source
+       sysSizeofGroupReq       = C.sizeof_struct_group_req
+       sysSizeofGroupSourceReq = C.sizeof_struct_group_source_req
+)
+
+type sysSockaddrStorage C.struct_sockaddr_storage
+
+type sysSockaddrInet C.struct_sockaddr_in
+
+type sysIPMreq C.struct_ip_mreq
+
+type sysIPMreqn C.struct_ip_mreqn
+
+type sysIPMreqSource C.struct_ip_mreq_source
+
+type sysGroupReq C.struct_group_req
+
+type sysGroupSourceReq C.struct_group_source_req
diff --git a/vendor/golang.org/x/net/ipv4/defs_linux.go b/vendor/golang.org/x/net/ipv4/defs_linux.go
new file mode 100644 (file)
index 0000000..fdba148
--- /dev/null
@@ -0,0 +1,111 @@
+// Copyright 2014 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.
+
+// +build ignore
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+
+package ipv4
+
+/*
+#include <time.h>
+
+#include <linux/errqueue.h>
+#include <linux/icmp.h>
+#include <linux/in.h>
+*/
+import "C"
+
+const (
+       sysIP_TOS             = C.IP_TOS
+       sysIP_TTL             = C.IP_TTL
+       sysIP_HDRINCL         = C.IP_HDRINCL
+       sysIP_OPTIONS         = C.IP_OPTIONS
+       sysIP_ROUTER_ALERT    = C.IP_ROUTER_ALERT
+       sysIP_RECVOPTS        = C.IP_RECVOPTS
+       sysIP_RETOPTS         = C.IP_RETOPTS
+       sysIP_PKTINFO         = C.IP_PKTINFO
+       sysIP_PKTOPTIONS      = C.IP_PKTOPTIONS
+       sysIP_MTU_DISCOVER    = C.IP_MTU_DISCOVER
+       sysIP_RECVERR         = C.IP_RECVERR
+       sysIP_RECVTTL         = C.IP_RECVTTL
+       sysIP_RECVTOS         = C.IP_RECVTOS
+       sysIP_MTU             = C.IP_MTU
+       sysIP_FREEBIND        = C.IP_FREEBIND
+       sysIP_TRANSPARENT     = C.IP_TRANSPARENT
+       sysIP_RECVRETOPTS     = C.IP_RECVRETOPTS
+       sysIP_ORIGDSTADDR     = C.IP_ORIGDSTADDR
+       sysIP_RECVORIGDSTADDR = C.IP_RECVORIGDSTADDR
+       sysIP_MINTTL          = C.IP_MINTTL
+       sysIP_NODEFRAG        = C.IP_NODEFRAG
+       sysIP_UNICAST_IF      = C.IP_UNICAST_IF
+
+       sysIP_MULTICAST_IF           = C.IP_MULTICAST_IF
+       sysIP_MULTICAST_TTL          = C.IP_MULTICAST_TTL
+       sysIP_MULTICAST_LOOP         = C.IP_MULTICAST_LOOP
+       sysIP_ADD_MEMBERSHIP         = C.IP_ADD_MEMBERSHIP
+       sysIP_DROP_MEMBERSHIP        = C.IP_DROP_MEMBERSHIP
+       sysIP_UNBLOCK_SOURCE         = C.IP_UNBLOCK_SOURCE
+       sysIP_BLOCK_SOURCE           = C.IP_BLOCK_SOURCE
+       sysIP_ADD_SOURCE_MEMBERSHIP  = C.IP_ADD_SOURCE_MEMBERSHIP
+       sysIP_DROP_SOURCE_MEMBERSHIP = C.IP_DROP_SOURCE_MEMBERSHIP
+       sysIP_MSFILTER               = C.IP_MSFILTER
+       sysMCAST_JOIN_GROUP          = C.MCAST_JOIN_GROUP
+       sysMCAST_LEAVE_GROUP         = C.MCAST_LEAVE_GROUP
+       sysMCAST_JOIN_SOURCE_GROUP   = C.MCAST_JOIN_SOURCE_GROUP
+       sysMCAST_LEAVE_SOURCE_GROUP  = C.MCAST_LEAVE_SOURCE_GROUP
+       sysMCAST_BLOCK_SOURCE        = C.MCAST_BLOCK_SOURCE
+       sysMCAST_UNBLOCK_SOURCE      = C.MCAST_UNBLOCK_SOURCE
+       sysMCAST_MSFILTER            = C.MCAST_MSFILTER
+       sysIP_MULTICAST_ALL          = C.IP_MULTICAST_ALL
+
+       //sysIP_PMTUDISC_DONT      = C.IP_PMTUDISC_DONT
+       //sysIP_PMTUDISC_WANT      = C.IP_PMTUDISC_WANT
+       //sysIP_PMTUDISC_DO        = C.IP_PMTUDISC_DO
+       //sysIP_PMTUDISC_PROBE     = C.IP_PMTUDISC_PROBE
+       //sysIP_PMTUDISC_INTERFACE = C.IP_PMTUDISC_INTERFACE
+       //sysIP_PMTUDISC_OMIT      = C.IP_PMTUDISC_OMIT
+
+       sysICMP_FILTER = C.ICMP_FILTER
+
+       sysSO_EE_ORIGIN_NONE         = C.SO_EE_ORIGIN_NONE
+       sysSO_EE_ORIGIN_LOCAL        = C.SO_EE_ORIGIN_LOCAL
+       sysSO_EE_ORIGIN_ICMP         = C.SO_EE_ORIGIN_ICMP
+       sysSO_EE_ORIGIN_ICMP6        = C.SO_EE_ORIGIN_ICMP6
+       sysSO_EE_ORIGIN_TXSTATUS     = C.SO_EE_ORIGIN_TXSTATUS
+       sysSO_EE_ORIGIN_TIMESTAMPING = C.SO_EE_ORIGIN_TIMESTAMPING
+
+       sysSizeofKernelSockaddrStorage = C.sizeof_struct___kernel_sockaddr_storage
+       sysSizeofSockaddrInet          = C.sizeof_struct_sockaddr_in
+       sysSizeofInetPktinfo           = C.sizeof_struct_in_pktinfo
+       sysSizeofSockExtendedErr       = C.sizeof_struct_sock_extended_err
+
+       sysSizeofIPMreq         = C.sizeof_struct_ip_mreq
+       sysSizeofIPMreqn        = C.sizeof_struct_ip_mreqn
+       sysSizeofIPMreqSource   = C.sizeof_struct_ip_mreq_source
+       sysSizeofGroupReq       = C.sizeof_struct_group_req
+       sysSizeofGroupSourceReq = C.sizeof_struct_group_source_req
+
+       sysSizeofICMPFilter = C.sizeof_struct_icmp_filter
+)
+
+type sysKernelSockaddrStorage C.struct___kernel_sockaddr_storage
+
+type sysSockaddrInet C.struct_sockaddr_in
+
+type sysInetPktinfo C.struct_in_pktinfo
+
+type sysSockExtendedErr C.struct_sock_extended_err
+
+type sysIPMreq C.struct_ip_mreq
+
+type sysIPMreqn C.struct_ip_mreqn
+
+type sysIPMreqSource C.struct_ip_mreq_source
+
+type sysGroupReq C.struct_group_req
+
+type sysGroupSourceReq C.struct_group_source_req
+
+type sysICMPFilter C.struct_icmp_filter
diff --git a/vendor/golang.org/x/net/ipv4/defs_netbsd.go b/vendor/golang.org/x/net/ipv4/defs_netbsd.go
new file mode 100644 (file)
index 0000000..8642354
--- /dev/null
@@ -0,0 +1,37 @@
+// Copyright 2014 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.
+
+// +build ignore
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+
+package ipv4
+
+/*
+#include <netinet/in.h>
+*/
+import "C"
+
+const (
+       sysIP_OPTIONS     = C.IP_OPTIONS
+       sysIP_HDRINCL     = C.IP_HDRINCL
+       sysIP_TOS         = C.IP_TOS
+       sysIP_TTL         = C.IP_TTL
+       sysIP_RECVOPTS    = C.IP_RECVOPTS
+       sysIP_RECVRETOPTS = C.IP_RECVRETOPTS
+       sysIP_RECVDSTADDR = C.IP_RECVDSTADDR
+       sysIP_RETOPTS     = C.IP_RETOPTS
+       sysIP_RECVIF      = C.IP_RECVIF
+       sysIP_RECVTTL     = C.IP_RECVTTL
+
+       sysIP_MULTICAST_IF    = C.IP_MULTICAST_IF
+       sysIP_MULTICAST_TTL   = C.IP_MULTICAST_TTL
+       sysIP_MULTICAST_LOOP  = C.IP_MULTICAST_LOOP
+       sysIP_ADD_MEMBERSHIP  = C.IP_ADD_MEMBERSHIP
+       sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP
+
+       sysSizeofIPMreq = C.sizeof_struct_ip_mreq
+)
+
+type sysIPMreq C.struct_ip_mreq
diff --git a/vendor/golang.org/x/net/ipv4/defs_openbsd.go b/vendor/golang.org/x/net/ipv4/defs_openbsd.go
new file mode 100644 (file)
index 0000000..8642354
--- /dev/null
@@ -0,0 +1,37 @@
+// Copyright 2014 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.
+
+// +build ignore
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+
+package ipv4
+
+/*
+#include <netinet/in.h>
+*/
+import "C"
+
+const (
+       sysIP_OPTIONS     = C.IP_OPTIONS
+       sysIP_HDRINCL     = C.IP_HDRINCL
+       sysIP_TOS         = C.IP_TOS
+       sysIP_TTL         = C.IP_TTL
+       sysIP_RECVOPTS    = C.IP_RECVOPTS
+       sysIP_RECVRETOPTS = C.IP_RECVRETOPTS
+       sysIP_RECVDSTADDR = C.IP_RECVDSTADDR
+       sysIP_RETOPTS     = C.IP_RETOPTS
+       sysIP_RECVIF      = C.IP_RECVIF
+       sysIP_RECVTTL     = C.IP_RECVTTL
+
+       sysIP_MULTICAST_IF    = C.IP_MULTICAST_IF
+       sysIP_MULTICAST_TTL   = C.IP_MULTICAST_TTL
+       sysIP_MULTICAST_LOOP  = C.IP_MULTICAST_LOOP
+       sysIP_ADD_MEMBERSHIP  = C.IP_ADD_MEMBERSHIP
+       sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP
+
+       sysSizeofIPMreq = C.sizeof_struct_ip_mreq
+)
+
+type sysIPMreq C.struct_ip_mreq
diff --git a/vendor/golang.org/x/net/ipv4/defs_solaris.go b/vendor/golang.org/x/net/ipv4/defs_solaris.go
new file mode 100644 (file)
index 0000000..bb74afa
--- /dev/null
@@ -0,0 +1,57 @@
+// Copyright 2014 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.
+
+// +build ignore
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+
+package ipv4
+
+/*
+#include <netinet/in.h>
+*/
+import "C"
+
+const (
+       sysIP_OPTIONS       = C.IP_OPTIONS
+       sysIP_HDRINCL       = C.IP_HDRINCL
+       sysIP_TOS           = C.IP_TOS
+       sysIP_TTL           = C.IP_TTL
+       sysIP_RECVOPTS      = C.IP_RECVOPTS
+       sysIP_RECVRETOPTS   = C.IP_RECVRETOPTS
+       sysIP_RECVDSTADDR   = C.IP_RECVDSTADDR
+       sysIP_RETOPTS       = C.IP_RETOPTS
+       sysIP_RECVIF        = C.IP_RECVIF
+       sysIP_RECVSLLA      = C.IP_RECVSLLA
+       sysIP_RECVTTL       = C.IP_RECVTTL
+       sysIP_NEXTHOP       = C.IP_NEXTHOP
+       sysIP_PKTINFO       = C.IP_PKTINFO
+       sysIP_RECVPKTINFO   = C.IP_RECVPKTINFO
+       sysIP_DONTFRAG      = C.IP_DONTFRAG
+       sysIP_BOUND_IF      = C.IP_BOUND_IF
+       sysIP_UNSPEC_SRC    = C.IP_UNSPEC_SRC
+       sysIP_BROADCAST_TTL = C.IP_BROADCAST_TTL
+       sysIP_DHCPINIT_IF   = C.IP_DHCPINIT_IF
+
+       sysIP_MULTICAST_IF           = C.IP_MULTICAST_IF
+       sysIP_MULTICAST_TTL          = C.IP_MULTICAST_TTL
+       sysIP_MULTICAST_LOOP         = C.IP_MULTICAST_LOOP
+       sysIP_ADD_MEMBERSHIP         = C.IP_ADD_MEMBERSHIP
+       sysIP_DROP_MEMBERSHIP        = C.IP_DROP_MEMBERSHIP
+       sysIP_BLOCK_SOURCE           = C.IP_BLOCK_SOURCE
+       sysIP_UNBLOCK_SOURCE         = C.IP_UNBLOCK_SOURCE
+       sysIP_ADD_SOURCE_MEMBERSHIP  = C.IP_ADD_SOURCE_MEMBERSHIP
+       sysIP_DROP_SOURCE_MEMBERSHIP = C.IP_DROP_SOURCE_MEMBERSHIP
+
+       sysSizeofInetPktinfo = C.sizeof_struct_in_pktinfo
+
+       sysSizeofIPMreq       = C.sizeof_struct_ip_mreq
+       sysSizeofIPMreqSource = C.sizeof_struct_ip_mreq_source
+)
+
+type sysInetPktinfo C.struct_in_pktinfo
+
+type sysIPMreq C.struct_ip_mreq
+
+type sysIPMreqSource C.struct_ip_mreq_source
diff --git a/vendor/golang.org/x/net/ipv4/dgramopt_posix.go b/vendor/golang.org/x/net/ipv4/dgramopt_posix.go
new file mode 100644 (file)
index 0000000..103c4f6
--- /dev/null
@@ -0,0 +1,251 @@
+// Copyright 2012 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.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd windows
+
+package ipv4
+
+import (
+       "net"
+       "syscall"
+)
+
+// MulticastTTL returns the time-to-live field value for outgoing
+// multicast packets.
+func (c *dgramOpt) MulticastTTL() (int, error) {
+       if !c.ok() {
+               return 0, syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return 0, err
+       }
+       return getInt(fd, &sockOpts[ssoMulticastTTL])
+}
+
+// SetMulticastTTL sets the time-to-live field value for future
+// outgoing multicast packets.
+func (c *dgramOpt) SetMulticastTTL(ttl int) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return err
+       }
+       return setInt(fd, &sockOpts[ssoMulticastTTL], ttl)
+}
+
+// MulticastInterface returns the default interface for multicast
+// packet transmissions.
+func (c *dgramOpt) MulticastInterface() (*net.Interface, error) {
+       if !c.ok() {
+               return nil, syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return nil, err
+       }
+       return getInterface(fd, &sockOpts[ssoMulticastInterface])
+}
+
+// SetMulticastInterface sets the default interface for future
+// multicast packet transmissions.
+func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return err
+       }
+       return setInterface(fd, &sockOpts[ssoMulticastInterface], ifi)
+}
+
+// MulticastLoopback reports whether transmitted multicast packets
+// should be copied and send back to the originator.
+func (c *dgramOpt) MulticastLoopback() (bool, error) {
+       if !c.ok() {
+               return false, syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return false, err
+       }
+       on, err := getInt(fd, &sockOpts[ssoMulticastLoopback])
+       if err != nil {
+               return false, err
+       }
+       return on == 1, nil
+}
+
+// SetMulticastLoopback sets whether transmitted multicast packets
+// should be copied and send back to the originator.
+func (c *dgramOpt) SetMulticastLoopback(on bool) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return err
+       }
+       return setInt(fd, &sockOpts[ssoMulticastLoopback], boolint(on))
+}
+
+// JoinGroup joins the group address group on the interface ifi.
+// By default all sources that can cast data to group are accepted.
+// It's possible to mute and unmute data transmission from a specific
+// source by using ExcludeSourceSpecificGroup and
+// IncludeSourceSpecificGroup.
+// JoinGroup uses the system assigned multicast interface when ifi is
+// nil, although this is not recommended because the assignment
+// depends on platforms and sometimes it might require routing
+// configuration.
+func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return err
+       }
+       grp := netAddrToIP4(group)
+       if grp == nil {
+               return errMissingAddress
+       }
+       return setGroup(fd, &sockOpts[ssoJoinGroup], ifi, grp)
+}
+
+// LeaveGroup leaves the group address group on the interface ifi
+// regardless of whether the group is any-source group or
+// source-specific group.
+func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return err
+       }
+       grp := netAddrToIP4(group)
+       if grp == nil {
+               return errMissingAddress
+       }
+       return setGroup(fd, &sockOpts[ssoLeaveGroup], ifi, grp)
+}
+
+// JoinSourceSpecificGroup joins the source-specific group comprising
+// group and source on the interface ifi.
+// JoinSourceSpecificGroup uses the system assigned multicast
+// interface when ifi is nil, although this is not recommended because
+// the assignment depends on platforms and sometimes it might require
+// routing configuration.
+func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return err
+       }
+       grp := netAddrToIP4(group)
+       if grp == nil {
+               return errMissingAddress
+       }
+       src := netAddrToIP4(source)
+       if src == nil {
+               return errMissingAddress
+       }
+       return setSourceGroup(fd, &sockOpts[ssoJoinSourceGroup], ifi, grp, src)
+}
+
+// LeaveSourceSpecificGroup leaves the source-specific group on the
+// interface ifi.
+func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return err
+       }
+       grp := netAddrToIP4(group)
+       if grp == nil {
+               return errMissingAddress
+       }
+       src := netAddrToIP4(source)
+       if src == nil {
+               return errMissingAddress
+       }
+       return setSourceGroup(fd, &sockOpts[ssoLeaveSourceGroup], ifi, grp, src)
+}
+
+// ExcludeSourceSpecificGroup excludes the source-specific group from
+// the already joined any-source groups by JoinGroup on the interface
+// ifi.
+func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return err
+       }
+       grp := netAddrToIP4(group)
+       if grp == nil {
+               return errMissingAddress
+       }
+       src := netAddrToIP4(source)
+       if src == nil {
+               return errMissingAddress
+       }
+       return setSourceGroup(fd, &sockOpts[ssoBlockSourceGroup], ifi, grp, src)
+}
+
+// IncludeSourceSpecificGroup includes the excluded source-specific
+// group by ExcludeSourceSpecificGroup again on the interface ifi.
+func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return err
+       }
+       grp := netAddrToIP4(group)
+       if grp == nil {
+               return errMissingAddress
+       }
+       src := netAddrToIP4(source)
+       if src == nil {
+               return errMissingAddress
+       }
+       return setSourceGroup(fd, &sockOpts[ssoUnblockSourceGroup], ifi, grp, src)
+}
+
+// ICMPFilter returns an ICMP filter.
+// Currently only Linux supports this.
+func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) {
+       if !c.ok() {
+               return nil, syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return nil, err
+       }
+       return getICMPFilter(fd, &sockOpts[ssoICMPFilter])
+}
+
+// SetICMPFilter deploys the ICMP filter.
+// Currently only Linux supports this.
+func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return err
+       }
+       return setICMPFilter(fd, &sockOpts[ssoICMPFilter], f)
+}
diff --git a/vendor/golang.org/x/net/ipv4/dgramopt_stub.go b/vendor/golang.org/x/net/ipv4/dgramopt_stub.go
new file mode 100644 (file)
index 0000000..b74df69
--- /dev/null
@@ -0,0 +1,106 @@
+// Copyright 2012 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.
+
+// +build nacl plan9 solaris
+
+package ipv4
+
+import "net"
+
+// MulticastTTL returns the time-to-live field value for outgoing
+// multicast packets.
+func (c *dgramOpt) MulticastTTL() (int, error) {
+       return 0, errOpNoSupport
+}
+
+// SetMulticastTTL sets the time-to-live field value for future
+// outgoing multicast packets.
+func (c *dgramOpt) SetMulticastTTL(ttl int) error {
+       return errOpNoSupport
+}
+
+// MulticastInterface returns the default interface for multicast
+// packet transmissions.
+func (c *dgramOpt) MulticastInterface() (*net.Interface, error) {
+       return nil, errOpNoSupport
+}
+
+// SetMulticastInterface sets the default interface for future
+// multicast packet transmissions.
+func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error {
+       return errOpNoSupport
+}
+
+// MulticastLoopback reports whether transmitted multicast packets
+// should be copied and send back to the originator.
+func (c *dgramOpt) MulticastLoopback() (bool, error) {
+       return false, errOpNoSupport
+}
+
+// SetMulticastLoopback sets whether transmitted multicast packets
+// should be copied and send back to the originator.
+func (c *dgramOpt) SetMulticastLoopback(on bool) error {
+       return errOpNoSupport
+}
+
+// JoinGroup joins the group address group on the interface ifi.
+// By default all sources that can cast data to group are accepted.
+// It's possible to mute and unmute data transmission from a specific
+// source by using ExcludeSourceSpecificGroup and
+// IncludeSourceSpecificGroup.
+// JoinGroup uses the system assigned multicast interface when ifi is
+// nil, although this is not recommended because the assignment
+// depends on platforms and sometimes it might require routing
+// configuration.
+func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error {
+       return errOpNoSupport
+}
+
+// LeaveGroup leaves the group address group on the interface ifi
+// regardless of whether the group is any-source group or
+// source-specific group.
+func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error {
+       return errOpNoSupport
+}
+
+// JoinSourceSpecificGroup joins the source-specific group comprising
+// group and source on the interface ifi.
+// JoinSourceSpecificGroup uses the system assigned multicast
+// interface when ifi is nil, although this is not recommended because
+// the assignment depends on platforms and sometimes it might require
+// routing configuration.
+func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
+       return errOpNoSupport
+}
+
+// LeaveSourceSpecificGroup leaves the source-specific group on the
+// interface ifi.
+func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
+       return errOpNoSupport
+}
+
+// ExcludeSourceSpecificGroup excludes the source-specific group from
+// the already joined any-source groups by JoinGroup on the interface
+// ifi.
+func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
+       return errOpNoSupport
+}
+
+// IncludeSourceSpecificGroup includes the excluded source-specific
+// group by ExcludeSourceSpecificGroup again on the interface ifi.
+func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
+       return errOpNoSupport
+}
+
+// ICMPFilter returns an ICMP filter.
+// Currently only Linux supports this.
+func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) {
+       return nil, errOpNoSupport
+}
+
+// SetICMPFilter deploys the ICMP filter.
+// Currently only Linux supports this.
+func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error {
+       return errOpNoSupport
+}
diff --git a/vendor/golang.org/x/net/ipv4/doc.go b/vendor/golang.org/x/net/ipv4/doc.go
new file mode 100644 (file)
index 0000000..9a79bad
--- /dev/null
@@ -0,0 +1,242 @@
+// Copyright 2012 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 ipv4 implements IP-level socket options for the Internet
+// Protocol version 4.
+//
+// The package provides IP-level socket options that allow
+// manipulation of IPv4 facilities.
+//
+// The IPv4 protocol and basic host requirements for IPv4 are defined
+// in RFC 791 and RFC 1122.
+// Host extensions for multicasting and socket interface extensions
+// for multicast source filters are defined in RFC 1112 and RFC 3678.
+// IGMPv1, IGMPv2 and IGMPv3 are defined in RFC 1112, RFC 2236 and RFC
+// 3376.
+// Source-specific multicast is defined in RFC 4607.
+//
+//
+// Unicasting
+//
+// The options for unicasting are available for net.TCPConn,
+// net.UDPConn and net.IPConn which are created as network connections
+// that use the IPv4 transport.  When a single TCP connection carrying
+// a data flow of multiple packets needs to indicate the flow is
+// important, ipv4.Conn is used to set the type-of-service field on
+// the IPv4 header for each packet.
+//
+//     ln, err := net.Listen("tcp4", "0.0.0.0:1024")
+//     if err != nil {
+//             // error handling
+//     }
+//     defer ln.Close()
+//     for {
+//             c, err := ln.Accept()
+//             if err != nil {
+//                     // error handling
+//             }
+//             go func(c net.Conn) {
+//                     defer c.Close()
+//
+// The outgoing packets will be labeled DiffServ assured forwarding
+// class 1 low drop precedence, known as AF11 packets.
+//
+//                     if err := ipv4.NewConn(c).SetTOS(0x28); err != nil {
+//                             // error handling
+//                     }
+//                     if _, err := c.Write(data); err != nil {
+//                             // error handling
+//                     }
+//             }(c)
+//     }
+//
+//
+// Multicasting
+//
+// The options for multicasting are available for net.UDPConn and
+// net.IPconn which are created as network connections that use the
+// IPv4 transport.  A few network facilities must be prepared before
+// you begin multicasting, at a minimum joining network interfaces and
+// multicast groups.
+//
+//     en0, err := net.InterfaceByName("en0")
+//     if err != nil {
+//             // error handling
+//     }
+//     en1, err := net.InterfaceByIndex(911)
+//     if err != nil {
+//             // error handling
+//     }
+//     group := net.IPv4(224, 0, 0, 250)
+//
+// First, an application listens to an appropriate address with an
+// appropriate service port.
+//
+//     c, err := net.ListenPacket("udp4", "0.0.0.0:1024")
+//     if err != nil {
+//             // error handling
+//     }
+//     defer c.Close()
+//
+// Second, the application joins multicast groups, starts listening to
+// the groups on the specified network interfaces.  Note that the
+// service port for transport layer protocol does not matter with this
+// operation as joining groups affects only network and link layer
+// protocols, such as IPv4 and Ethernet.
+//
+//     p := ipv4.NewPacketConn(c)
+//     if err := p.JoinGroup(en0, &net.UDPAddr{IP: group}); err != nil {
+//             // error handling
+//     }
+//     if err := p.JoinGroup(en1, &net.UDPAddr{IP: group}); err != nil {
+//             // error handling
+//     }
+//
+// The application might set per packet control message transmissions
+// between the protocol stack within the kernel.  When the application
+// needs a destination address on an incoming packet,
+// SetControlMessage of ipv4.PacketConn is used to enable control
+// message transmissons.
+//
+//     if err := p.SetControlMessage(ipv4.FlagDst, true); err != nil {
+//             // error handling
+//     }
+//
+// The application could identify whether the received packets are
+// of interest by using the control message that contains the
+// destination address of the received packet.
+//
+//     b := make([]byte, 1500)
+//     for {
+//             n, cm, src, err := p.ReadFrom(b)
+//             if err != nil {
+//                     // error handling
+//             }
+//             if cm.Dst.IsMulticast() {
+//                     if cm.Dst.Equal(group) {
+//                             // joined group, do something
+//                     } else {
+//                             // unknown group, discard
+//                             continue
+//                     }
+//             }
+//
+// The application can also send both unicast and multicast packets.
+//
+//             p.SetTOS(0x0)
+//             p.SetTTL(16)
+//             if _, err := p.WriteTo(data, nil, src); err != nil {
+//                     // error handling
+//             }
+//             dst := &net.UDPAddr{IP: group, Port: 1024}
+//             for _, ifi := range []*net.Interface{en0, en1} {
+//                     if err := p.SetMulticastInterface(ifi); err != nil {
+//                             // error handling
+//                     }
+//                     p.SetMulticastTTL(2)
+//                     if _, err := p.WriteTo(data, nil, dst); err != nil {
+//                             // error handling
+//                     }
+//             }
+//     }
+//
+//
+// More multicasting
+//
+// An application that uses PacketConn or RawConn may join multiple
+// multicast groups.  For example, a UDP listener with port 1024 might
+// join two different groups across over two different network
+// interfaces by using:
+//
+//     c, err := net.ListenPacket("udp4", "0.0.0.0:1024")
+//     if err != nil {
+//             // error handling
+//     }
+//     defer c.Close()
+//     p := ipv4.NewPacketConn(c)
+//     if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 248)}); err != nil {
+//             // error handling
+//     }
+//     if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 249)}); err != nil {
+//             // error handling
+//     }
+//     if err := p.JoinGroup(en1, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 249)}); err != nil {
+//             // error handling
+//     }
+//
+// It is possible for multiple UDP listeners that listen on the same
+// UDP port to join the same multicast group.  The net package will
+// provide a socket that listens to a wildcard address with reusable
+// UDP port when an appropriate multicast address prefix is passed to
+// the net.ListenPacket or net.ListenUDP.
+//
+//     c1, err := net.ListenPacket("udp4", "224.0.0.0:1024")
+//     if err != nil {
+//             // error handling
+//     }
+//     defer c1.Close()
+//     c2, err := net.ListenPacket("udp4", "224.0.0.0:1024")
+//     if err != nil {
+//             // error handling
+//     }
+//     defer c2.Close()
+//     p1 := ipv4.NewPacketConn(c1)
+//     if err := p1.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 248)}); err != nil {
+//             // error handling
+//     }
+//     p2 := ipv4.NewPacketConn(c2)
+//     if err := p2.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 248)}); err != nil {
+//             // error handling
+//     }
+//
+// Also it is possible for the application to leave or rejoin a
+// multicast group on the network interface.
+//
+//     if err := p.LeaveGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 248)}); err != nil {
+//             // error handling
+//     }
+//     if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 250)}); err != nil {
+//             // error handling
+//     }
+//
+//
+// Source-specific multicasting
+//
+// An application that uses PacketConn or RawConn on IGMPv3 supported
+// platform is able to join source-specific multicast groups.
+// The application may use JoinSourceSpecificGroup and
+// LeaveSourceSpecificGroup for the operation known as "include" mode,
+//
+//     ssmgroup := net.UDPAddr{IP: net.IPv4(232, 7, 8, 9)}
+//     ssmsource := net.UDPAddr{IP: net.IPv4(192, 168, 0, 1)})
+//     if err := p.JoinSourceSpecificGroup(en0, &ssmgroup, &ssmsource); err != nil {
+//             // error handling
+//     }
+//     if err := p.LeaveSourceSpecificGroup(en0, &ssmgroup, &ssmsource); err != nil {
+//             // error handling
+//     }
+//
+// or JoinGroup, ExcludeSourceSpecificGroup,
+// IncludeSourceSpecificGroup and LeaveGroup for the operation known
+// as "exclude" mode.
+//
+//     exclsource := net.UDPAddr{IP: net.IPv4(192, 168, 0, 254)}
+//     if err := p.JoinGroup(en0, &ssmgroup); err != nil {
+//             // error handling
+//     }
+//     if err := p.ExcludeSourceSpecificGroup(en0, &ssmgroup, &exclsource); err != nil {
+//             // error handling
+//     }
+//     if err := p.LeaveGroup(en0, &ssmgroup); err != nil {
+//             // error handling
+//     }
+//
+// Note that it depends on each platform implementation what happens
+// when an application which runs on IGMPv3 unsupported platform uses
+// JoinSourceSpecificGroup and LeaveSourceSpecificGroup.
+// In general the platform tries to fall back to conversations using
+// IGMPv1 or IGMPv2 and starts to listen to multicast traffic.
+// In the fallback case, ExcludeSourceSpecificGroup and
+// IncludeSourceSpecificGroup may return an error.
+package ipv4 // import "golang.org/x/net/ipv4"
diff --git a/vendor/golang.org/x/net/ipv4/endpoint.go b/vendor/golang.org/x/net/ipv4/endpoint.go
new file mode 100644 (file)
index 0000000..bc45bf0
--- /dev/null
@@ -0,0 +1,187 @@
+// Copyright 2012 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 ipv4
+
+import (
+       "net"
+       "syscall"
+       "time"
+)
+
+// A Conn represents a network endpoint that uses the IPv4 transport.
+// It is used to control basic IP-level socket options such as TOS and
+// TTL.
+type Conn struct {
+       genericOpt
+}
+
+type genericOpt struct {
+       net.Conn
+}
+
+func (c *genericOpt) ok() bool { return c != nil && c.Conn != nil }
+
+// NewConn returns a new Conn.
+func NewConn(c net.Conn) *Conn {
+       return &Conn{
+               genericOpt: genericOpt{Conn: c},
+       }
+}
+
+// A PacketConn represents a packet network endpoint that uses the
+// IPv4 transport.  It is used to control several IP-level socket
+// options including multicasting.  It also provides datagram based
+// network I/O methods specific to the IPv4 and higher layer protocols
+// such as UDP.
+type PacketConn struct {
+       genericOpt
+       dgramOpt
+       payloadHandler
+}
+
+type dgramOpt struct {
+       net.PacketConn
+}
+
+func (c *dgramOpt) ok() bool { return c != nil && c.PacketConn != nil }
+
+// SetControlMessage sets the per packet IP-level socket options.
+func (c *PacketConn) SetControlMessage(cf ControlFlags, on bool) error {
+       if !c.payloadHandler.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.payloadHandler.sysfd()
+       if err != nil {
+               return err
+       }
+       return setControlMessage(fd, &c.payloadHandler.rawOpt, cf, on)
+}
+
+// SetDeadline sets the read and write deadlines associated with the
+// endpoint.
+func (c *PacketConn) SetDeadline(t time.Time) error {
+       if !c.payloadHandler.ok() {
+               return syscall.EINVAL
+       }
+       return c.payloadHandler.PacketConn.SetDeadline(t)
+}
+
+// SetReadDeadline sets the read deadline associated with the
+// endpoint.
+func (c *PacketConn) SetReadDeadline(t time.Time) error {
+       if !c.payloadHandler.ok() {
+               return syscall.EINVAL
+       }
+       return c.payloadHandler.PacketConn.SetReadDeadline(t)
+}
+
+// SetWriteDeadline sets the write deadline associated with the
+// endpoint.
+func (c *PacketConn) SetWriteDeadline(t time.Time) error {
+       if !c.payloadHandler.ok() {
+               return syscall.EINVAL
+       }
+       return c.payloadHandler.PacketConn.SetWriteDeadline(t)
+}
+
+// Close closes the endpoint.
+func (c *PacketConn) Close() error {
+       if !c.payloadHandler.ok() {
+               return syscall.EINVAL
+       }
+       return c.payloadHandler.PacketConn.Close()
+}
+
+// NewPacketConn returns a new PacketConn using c as its underlying
+// transport.
+func NewPacketConn(c net.PacketConn) *PacketConn {
+       p := &PacketConn{
+               genericOpt:     genericOpt{Conn: c.(net.Conn)},
+               dgramOpt:       dgramOpt{PacketConn: c},
+               payloadHandler: payloadHandler{PacketConn: c},
+       }
+       if _, ok := c.(*net.IPConn); ok && sockOpts[ssoStripHeader].name > 0 {
+               if fd, err := p.payloadHandler.sysfd(); err == nil {
+                       setInt(fd, &sockOpts[ssoStripHeader], boolint(true))
+               }
+       }
+       return p
+}
+
+// A RawConn represents a packet network endpoint that uses the IPv4
+// transport.  It is used to control several IP-level socket options
+// including IPv4 header manipulation.  It also provides datagram
+// based network I/O methods specific to the IPv4 and higher layer
+// protocols that handle IPv4 datagram directly such as OSPF, GRE.
+type RawConn struct {
+       genericOpt
+       dgramOpt
+       packetHandler
+}
+
+// SetControlMessage sets the per packet IP-level socket options.
+func (c *RawConn) SetControlMessage(cf ControlFlags, on bool) error {
+       if !c.packetHandler.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.packetHandler.sysfd()
+       if err != nil {
+               return err
+       }
+       return setControlMessage(fd, &c.packetHandler.rawOpt, cf, on)
+}
+
+// SetDeadline sets the read and write deadlines associated with the
+// endpoint.
+func (c *RawConn) SetDeadline(t time.Time) error {
+       if !c.packetHandler.ok() {
+               return syscall.EINVAL
+       }
+       return c.packetHandler.c.SetDeadline(t)
+}
+
+// SetReadDeadline sets the read deadline associated with the
+// endpoint.
+func (c *RawConn) SetReadDeadline(t time.Time) error {
+       if !c.packetHandler.ok() {
+               return syscall.EINVAL
+       }
+       return c.packetHandler.c.SetReadDeadline(t)
+}
+
+// SetWriteDeadline sets the write deadline associated with the
+// endpoint.
+func (c *RawConn) SetWriteDeadline(t time.Time) error {
+       if !c.packetHandler.ok() {
+               return syscall.EINVAL
+       }
+       return c.packetHandler.c.SetWriteDeadline(t)
+}
+
+// Close closes the endpoint.
+func (c *RawConn) Close() error {
+       if !c.packetHandler.ok() {
+               return syscall.EINVAL
+       }
+       return c.packetHandler.c.Close()
+}
+
+// NewRawConn returns a new RawConn using c as its underlying
+// transport.
+func NewRawConn(c net.PacketConn) (*RawConn, error) {
+       r := &RawConn{
+               genericOpt:    genericOpt{Conn: c.(net.Conn)},
+               dgramOpt:      dgramOpt{PacketConn: c},
+               packetHandler: packetHandler{c: c.(*net.IPConn)},
+       }
+       fd, err := r.packetHandler.sysfd()
+       if err != nil {
+               return nil, err
+       }
+       if err := setInt(fd, &sockOpts[ssoHeaderPrepend], boolint(true)); err != nil {
+               return nil, err
+       }
+       return r, nil
+}
diff --git a/vendor/golang.org/x/net/ipv4/gen.go b/vendor/golang.org/x/net/ipv4/gen.go
new file mode 100644 (file)
index 0000000..4785212
--- /dev/null
@@ -0,0 +1,208 @@
+// Copyright 2013 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.
+
+// +build ignore
+
+//go:generate go run gen.go
+
+// This program generates system adaptation constants and types,
+// internet protocol constants and tables by reading template files
+// and IANA protocol registries.
+package main
+
+import (
+       "bytes"
+       "encoding/xml"
+       "fmt"
+       "go/format"
+       "io"
+       "io/ioutil"
+       "net/http"
+       "os"
+       "os/exec"
+       "runtime"
+       "strconv"
+       "strings"
+)
+
+func main() {
+       if err := genzsys(); err != nil {
+               fmt.Fprintln(os.Stderr, err)
+               os.Exit(1)
+       }
+       if err := geniana(); err != nil {
+               fmt.Fprintln(os.Stderr, err)
+               os.Exit(1)
+       }
+}
+
+func genzsys() error {
+       defs := "defs_" + runtime.GOOS + ".go"
+       f, err := os.Open(defs)
+       if err != nil {
+               if os.IsNotExist(err) {
+                       return nil
+               }
+               return err
+       }
+       f.Close()
+       cmd := exec.Command("go", "tool", "cgo", "-godefs", defs)
+       b, err := cmd.Output()
+       if err != nil {
+               return err
+       }
+       // The ipv4 pacakge still supports go1.2, and so we need to
+       // take care of additional platforms in go1.3 and above for
+       // working with go1.2.
+       switch {
+       case runtime.GOOS == "dragonfly" || runtime.GOOS == "solaris":
+               b = bytes.Replace(b, []byte("package ipv4\n"), []byte("// +build "+runtime.GOOS+"\n\npackage ipv4\n"), 1)
+       case runtime.GOOS == "linux" && (runtime.GOARCH == "arm64" || runtime.GOARCH == "mips64" || runtime.GOARCH == "mips64le" || runtime.GOARCH == "ppc64" || runtime.GOARCH == "ppc64le"):
+               b = bytes.Replace(b, []byte("package ipv4\n"), []byte("// +build "+runtime.GOOS+","+runtime.GOARCH+"\n\npackage ipv4\n"), 1)
+       }
+       b, err = format.Source(b)
+       if err != nil {
+               return err
+       }
+       zsys := "zsys_" + runtime.GOOS + ".go"
+       switch runtime.GOOS {
+       case "freebsd", "linux":
+               zsys = "zsys_" + runtime.GOOS + "_" + runtime.GOARCH + ".go"
+       }
+       if err := ioutil.WriteFile(zsys, b, 0644); err != nil {
+               return err
+       }
+       return nil
+}
+
+var registries = []struct {
+       url   string
+       parse func(io.Writer, io.Reader) error
+}{
+       {
+               "http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xml",
+               parseICMPv4Parameters,
+       },
+}
+
+func geniana() error {
+       var bb bytes.Buffer
+       fmt.Fprintf(&bb, "// go generate gen.go\n")
+       fmt.Fprintf(&bb, "// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT\n\n")
+       fmt.Fprintf(&bb, "package ipv4\n\n")
+       for _, r := range registries {
+               resp, err := http.Get(r.url)
+               if err != nil {
+                       return err
+               }
+               defer resp.Body.Close()
+               if resp.StatusCode != http.StatusOK {
+                       return fmt.Errorf("got HTTP status code %v for %v\n", resp.StatusCode, r.url)
+               }
+               if err := r.parse(&bb, resp.Body); err != nil {
+                       return err
+               }
+               fmt.Fprintf(&bb, "\n")
+       }
+       b, err := format.Source(bb.Bytes())
+       if err != nil {
+               return err
+       }
+       if err := ioutil.WriteFile("iana.go", b, 0644); err != nil {
+               return err
+       }
+       return nil
+}
+
+func parseICMPv4Parameters(w io.Writer, r io.Reader) error {
+       dec := xml.NewDecoder(r)
+       var icp icmpv4Parameters
+       if err := dec.Decode(&icp); err != nil {
+               return err
+       }
+       prs := icp.escape()
+       fmt.Fprintf(w, "// %s, Updated: %s\n", icp.Title, icp.Updated)
+       fmt.Fprintf(w, "const (\n")
+       for _, pr := range prs {
+               if pr.Descr == "" {
+                       continue
+               }
+               fmt.Fprintf(w, "ICMPType%s ICMPType = %d", pr.Descr, pr.Value)
+               fmt.Fprintf(w, "// %s\n", pr.OrigDescr)
+       }
+       fmt.Fprintf(w, ")\n\n")
+       fmt.Fprintf(w, "// %s, Updated: %s\n", icp.Title, icp.Updated)
+       fmt.Fprintf(w, "var icmpTypes = map[ICMPType]string{\n")
+       for _, pr := range prs {
+               if pr.Descr == "" {
+                       continue
+               }
+               fmt.Fprintf(w, "%d: %q,\n", pr.Value, strings.ToLower(pr.OrigDescr))
+       }
+       fmt.Fprintf(w, "}\n")
+       return nil
+}
+
+type icmpv4Parameters struct {
+       XMLName    xml.Name `xml:"registry"`
+       Title      string   `xml:"title"`
+       Updated    string   `xml:"updated"`
+       Registries []struct {
+               Title   string `xml:"title"`
+               Records []struct {
+                       Value string `xml:"value"`
+                       Descr string `xml:"description"`
+               } `xml:"record"`
+       } `xml:"registry"`
+}
+
+type canonICMPv4ParamRecord struct {
+       OrigDescr string
+       Descr     string
+       Value     int
+}
+
+func (icp *icmpv4Parameters) escape() []canonICMPv4ParamRecord {
+       id := -1
+       for i, r := range icp.Registries {
+               if strings.Contains(r.Title, "Type") || strings.Contains(r.Title, "type") {
+                       id = i
+                       break
+               }
+       }
+       if id < 0 {
+               return nil
+       }
+       prs := make([]canonICMPv4ParamRecord, len(icp.Registries[id].Records))
+       sr := strings.NewReplacer(
+               "Messages", "",
+               "Message", "",
+               "ICMP", "",
+               "+", "P",
+               "-", "",
+               "/", "",
+               ".", "",
+               " ", "",
+       )
+       for i, pr := range icp.Registries[id].Records {
+               if strings.Contains(pr.Descr, "Reserved") ||
+                       strings.Contains(pr.Descr, "Unassigned") ||
+                       strings.Contains(pr.Descr, "Deprecated") ||
+                       strings.Contains(pr.Descr, "Experiment") ||
+                       strings.Contains(pr.Descr, "experiment") {
+                       continue
+               }
+               ss := strings.Split(pr.Descr, "\n")
+               if len(ss) > 1 {
+                       prs[i].Descr = strings.Join(ss, " ")
+               } else {
+                       prs[i].Descr = ss[0]
+               }
+               s := strings.TrimSpace(prs[i].Descr)
+               prs[i].OrigDescr = s
+               prs[i].Descr = sr.Replace(s)
+               prs[i].Value, _ = strconv.Atoi(pr.Value)
+       }
+       return prs
+}
diff --git a/vendor/golang.org/x/net/ipv4/genericopt_posix.go b/vendor/golang.org/x/net/ipv4/genericopt_posix.go
new file mode 100644 (file)
index 0000000..fefa0be
--- /dev/null
@@ -0,0 +1,59 @@
+// Copyright 2012 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.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd windows
+
+package ipv4
+
+import "syscall"
+
+// TOS returns the type-of-service field value for outgoing packets.
+func (c *genericOpt) TOS() (int, error) {
+       if !c.ok() {
+               return 0, syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return 0, err
+       }
+       return getInt(fd, &sockOpts[ssoTOS])
+}
+
+// SetTOS sets the type-of-service field value for future outgoing
+// packets.
+func (c *genericOpt) SetTOS(tos int) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return err
+       }
+       return setInt(fd, &sockOpts[ssoTOS], tos)
+}
+
+// TTL returns the time-to-live field value for outgoing packets.
+func (c *genericOpt) TTL() (int, error) {
+       if !c.ok() {
+               return 0, syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return 0, err
+       }
+       return getInt(fd, &sockOpts[ssoTTL])
+}
+
+// SetTTL sets the time-to-live field value for future outgoing
+// packets.
+func (c *genericOpt) SetTTL(ttl int) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return err
+       }
+       return setInt(fd, &sockOpts[ssoTTL], ttl)
+}
diff --git a/vendor/golang.org/x/net/ipv4/genericopt_stub.go b/vendor/golang.org/x/net/ipv4/genericopt_stub.go
new file mode 100644 (file)
index 0000000..1817bad
--- /dev/null
@@ -0,0 +1,29 @@
+// Copyright 2012 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.
+
+// +build nacl plan9 solaris
+
+package ipv4
+
+// TOS returns the type-of-service field value for outgoing packets.
+func (c *genericOpt) TOS() (int, error) {
+       return 0, errOpNoSupport
+}
+
+// SetTOS sets the type-of-service field value for future outgoing
+// packets.
+func (c *genericOpt) SetTOS(tos int) error {
+       return errOpNoSupport
+}
+
+// TTL returns the time-to-live field value for outgoing packets.
+func (c *genericOpt) TTL() (int, error) {
+       return 0, errOpNoSupport
+}
+
+// SetTTL sets the time-to-live field value for future outgoing
+// packets.
+func (c *genericOpt) SetTTL(ttl int) error {
+       return errOpNoSupport
+}
diff --git a/vendor/golang.org/x/net/ipv4/header.go b/vendor/golang.org/x/net/ipv4/header.go
new file mode 100644 (file)
index 0000000..363d9c2
--- /dev/null
@@ -0,0 +1,132 @@
+// Copyright 2012 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 ipv4
+
+import (
+       "encoding/binary"
+       "fmt"
+       "net"
+       "runtime"
+       "syscall"
+)
+
+const (
+       Version      = 4  // protocol version
+       HeaderLen    = 20 // header length without extension headers
+       maxHeaderLen = 60 // sensible default, revisit if later RFCs define new usage of version and header length fields
+)
+
+type HeaderFlags int
+
+const (
+       MoreFragments HeaderFlags = 1 << iota // more fragments flag
+       DontFragment                          // don't fragment flag
+)
+
+// A Header represents an IPv4 header.
+type Header struct {
+       Version  int         // protocol version
+       Len      int         // header length
+       TOS      int         // type-of-service
+       TotalLen int         // packet total length
+       ID       int         // identification
+       Flags    HeaderFlags // flags
+       FragOff  int         // fragment offset
+       TTL      int         // time-to-live
+       Protocol int         // next protocol
+       Checksum int         // checksum
+       Src      net.IP      // source address
+       Dst      net.IP      // destination address
+       Options  []byte      // options, extension headers
+}
+
+func (h *Header) String() string {
+       if h == nil {
+               return "<nil>"
+       }
+       return fmt.Sprintf("ver=%d hdrlen=%d tos=%#x totallen=%d id=%#x flags=%#x fragoff=%#x ttl=%d proto=%d cksum=%#x src=%v dst=%v", h.Version, h.Len, h.TOS, h.TotalLen, h.ID, h.Flags, h.FragOff, h.TTL, h.Protocol, h.Checksum, h.Src, h.Dst)
+}
+
+// Marshal returns the binary encoding of the IPv4 header h.
+func (h *Header) Marshal() ([]byte, error) {
+       if h == nil {
+               return nil, syscall.EINVAL
+       }
+       if h.Len < HeaderLen {
+               return nil, errHeaderTooShort
+       }
+       hdrlen := HeaderLen + len(h.Options)
+       b := make([]byte, hdrlen)
+       b[0] = byte(Version<<4 | (hdrlen >> 2 & 0x0f))
+       b[1] = byte(h.TOS)
+       flagsAndFragOff := (h.FragOff & 0x1fff) | int(h.Flags<<13)
+       switch runtime.GOOS {
+       case "darwin", "dragonfly", "freebsd", "netbsd":
+               nativeEndian.PutUint16(b[2:4], uint16(h.TotalLen))
+               nativeEndian.PutUint16(b[6:8], uint16(flagsAndFragOff))
+       default:
+               binary.BigEndian.PutUint16(b[2:4], uint16(h.TotalLen))
+               binary.BigEndian.PutUint16(b[6:8], uint16(flagsAndFragOff))
+       }
+       binary.BigEndian.PutUint16(b[4:6], uint16(h.ID))
+       b[8] = byte(h.TTL)
+       b[9] = byte(h.Protocol)
+       binary.BigEndian.PutUint16(b[10:12], uint16(h.Checksum))
+       if ip := h.Src.To4(); ip != nil {
+               copy(b[12:16], ip[:net.IPv4len])
+       }
+       if ip := h.Dst.To4(); ip != nil {
+               copy(b[16:20], ip[:net.IPv4len])
+       } else {
+               return nil, errMissingAddress
+       }
+       if len(h.Options) > 0 {
+               copy(b[HeaderLen:], h.Options)
+       }
+       return b, nil
+}
+
+// ParseHeader parses b as an IPv4 header.
+func ParseHeader(b []byte) (*Header, error) {
+       if len(b) < HeaderLen {
+               return nil, errHeaderTooShort
+       }
+       hdrlen := int(b[0]&0x0f) << 2
+       if hdrlen > len(b) {
+               return nil, errBufferTooShort
+       }
+       h := &Header{
+               Version:  int(b[0] >> 4),
+               Len:      hdrlen,
+               TOS:      int(b[1]),
+               ID:       int(binary.BigEndian.Uint16(b[4:6])),
+               TTL:      int(b[8]),
+               Protocol: int(b[9]),
+               Checksum: int(binary.BigEndian.Uint16(b[10:12])),
+               Src:      net.IPv4(b[12], b[13], b[14], b[15]),
+               Dst:      net.IPv4(b[16], b[17], b[18], b[19]),
+       }
+       switch runtime.GOOS {
+       case "darwin", "dragonfly", "netbsd":
+               h.TotalLen = int(nativeEndian.Uint16(b[2:4])) + hdrlen
+               h.FragOff = int(nativeEndian.Uint16(b[6:8]))
+       case "freebsd":
+               h.TotalLen = int(nativeEndian.Uint16(b[2:4]))
+               if freebsdVersion < 1000000 {
+                       h.TotalLen += hdrlen
+               }
+               h.FragOff = int(nativeEndian.Uint16(b[6:8]))
+       default:
+               h.TotalLen = int(binary.BigEndian.Uint16(b[2:4]))
+               h.FragOff = int(binary.BigEndian.Uint16(b[6:8]))
+       }
+       h.Flags = HeaderFlags(h.FragOff&0xe000) >> 13
+       h.FragOff = h.FragOff & 0x1fff
+       if hdrlen-HeaderLen > 0 {
+               h.Options = make([]byte, hdrlen-HeaderLen)
+               copy(h.Options, b[HeaderLen:])
+       }
+       return h, nil
+}
diff --git a/vendor/golang.org/x/net/ipv4/helper.go b/vendor/golang.org/x/net/ipv4/helper.go
new file mode 100644 (file)
index 0000000..acecfd0
--- /dev/null
@@ -0,0 +1,59 @@
+// Copyright 2012 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 ipv4
+
+import (
+       "encoding/binary"
+       "errors"
+       "net"
+       "unsafe"
+)
+
+var (
+       errMissingAddress           = errors.New("missing address")
+       errMissingHeader            = errors.New("missing header")
+       errHeaderTooShort           = errors.New("header too short")
+       errBufferTooShort           = errors.New("buffer too short")
+       errInvalidConnType          = errors.New("invalid conn type")
+       errOpNoSupport              = errors.New("operation not supported")
+       errNoSuchInterface          = errors.New("no such interface")
+       errNoSuchMulticastInterface = errors.New("no such multicast interface")
+
+       // See http://www.freebsd.org/doc/en/books/porters-handbook/freebsd-versions.html.
+       freebsdVersion uint32
+
+       nativeEndian binary.ByteOrder
+)
+
+func init() {
+       i := uint32(1)
+       b := (*[4]byte)(unsafe.Pointer(&i))
+       if b[0] == 1 {
+               nativeEndian = binary.LittleEndian
+       } else {
+               nativeEndian = binary.BigEndian
+       }
+}
+
+func boolint(b bool) int {
+       if b {
+               return 1
+       }
+       return 0
+}
+
+func netAddrToIP4(a net.Addr) net.IP {
+       switch v := a.(type) {
+       case *net.UDPAddr:
+               if ip := v.IP.To4(); ip != nil {
+                       return ip
+               }
+       case *net.IPAddr:
+               if ip := v.IP.To4(); ip != nil {
+                       return ip
+               }
+       }
+       return nil
+}
diff --git a/vendor/golang.org/x/net/ipv4/helper_stub.go b/vendor/golang.org/x/net/ipv4/helper_stub.go
new file mode 100644 (file)
index 0000000..dc2120c
--- /dev/null
@@ -0,0 +1,23 @@
+// Copyright 2012 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.
+
+// +build nacl plan9 solaris
+
+package ipv4
+
+func (c *genericOpt) sysfd() (int, error) {
+       return 0, errOpNoSupport
+}
+
+func (c *dgramOpt) sysfd() (int, error) {
+       return 0, errOpNoSupport
+}
+
+func (c *payloadHandler) sysfd() (int, error) {
+       return 0, errOpNoSupport
+}
+
+func (c *packetHandler) sysfd() (int, error) {
+       return 0, errOpNoSupport
+}
diff --git a/vendor/golang.org/x/net/ipv4/helper_unix.go b/vendor/golang.org/x/net/ipv4/helper_unix.go
new file mode 100644 (file)
index 0000000..345ca7d
--- /dev/null
@@ -0,0 +1,50 @@
+// Copyright 2012 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.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd
+
+package ipv4
+
+import (
+       "net"
+       "reflect"
+)
+
+func (c *genericOpt) sysfd() (int, error) {
+       switch p := c.Conn.(type) {
+       case *net.TCPConn, *net.UDPConn, *net.IPConn:
+               return sysfd(p)
+       }
+       return 0, errInvalidConnType
+}
+
+func (c *dgramOpt) sysfd() (int, error) {
+       switch p := c.PacketConn.(type) {
+       case *net.UDPConn, *net.IPConn:
+               return sysfd(p.(net.Conn))
+       }
+       return 0, errInvalidConnType
+}
+
+func (c *payloadHandler) sysfd() (int, error) {
+       return sysfd(c.PacketConn.(net.Conn))
+}
+
+func (c *packetHandler) sysfd() (int, error) {
+       return sysfd(c.c)
+}
+
+func sysfd(c net.Conn) (int, error) {
+       cv := reflect.ValueOf(c)
+       switch ce := cv.Elem(); ce.Kind() {
+       case reflect.Struct:
+               netfd := ce.FieldByName("conn").FieldByName("fd")
+               switch fe := netfd.Elem(); fe.Kind() {
+               case reflect.Struct:
+                       fd := fe.FieldByName("sysfd")
+                       return int(fd.Int()), nil
+               }
+       }
+       return 0, errInvalidConnType
+}
diff --git a/vendor/golang.org/x/net/ipv4/helper_windows.go b/vendor/golang.org/x/net/ipv4/helper_windows.go
new file mode 100644 (file)
index 0000000..322b2a5
--- /dev/null
@@ -0,0 +1,49 @@
+// Copyright 2012 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 ipv4
+
+import (
+       "net"
+       "reflect"
+       "syscall"
+)
+
+func (c *genericOpt) sysfd() (syscall.Handle, error) {
+       switch p := c.Conn.(type) {
+       case *net.TCPConn, *net.UDPConn, *net.IPConn:
+               return sysfd(p)
+       }
+       return syscall.InvalidHandle, errInvalidConnType
+}
+
+func (c *dgramOpt) sysfd() (syscall.Handle, error) {
+       switch p := c.PacketConn.(type) {
+       case *net.UDPConn, *net.IPConn:
+               return sysfd(p.(net.Conn))
+       }
+       return syscall.InvalidHandle, errInvalidConnType
+}
+
+func (c *payloadHandler) sysfd() (syscall.Handle, error) {
+       return sysfd(c.PacketConn.(net.Conn))
+}
+
+func (c *packetHandler) sysfd() (syscall.Handle, error) {
+       return sysfd(c.c)
+}
+
+func sysfd(c net.Conn) (syscall.Handle, error) {
+       cv := reflect.ValueOf(c)
+       switch ce := cv.Elem(); ce.Kind() {
+       case reflect.Struct:
+               netfd := ce.FieldByName("conn").FieldByName("fd")
+               switch fe := netfd.Elem(); fe.Kind() {
+               case reflect.Struct:
+                       fd := fe.FieldByName("sysfd")
+                       return syscall.Handle(fd.Uint()), nil
+               }
+       }
+       return syscall.InvalidHandle, errInvalidConnType
+}
diff --git a/vendor/golang.org/x/net/ipv4/iana.go b/vendor/golang.org/x/net/ipv4/iana.go
new file mode 100644 (file)
index 0000000..be10c94
--- /dev/null
@@ -0,0 +1,34 @@
+// go generate gen.go
+// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+package ipv4
+
+// Internet Control Message Protocol (ICMP) Parameters, Updated: 2013-04-19
+const (
+       ICMPTypeEchoReply              ICMPType = 0  // Echo Reply
+       ICMPTypeDestinationUnreachable ICMPType = 3  // Destination Unreachable
+       ICMPTypeRedirect               ICMPType = 5  // Redirect
+       ICMPTypeEcho                   ICMPType = 8  // Echo
+       ICMPTypeRouterAdvertisement    ICMPType = 9  // Router Advertisement
+       ICMPTypeRouterSolicitation     ICMPType = 10 // Router Solicitation
+       ICMPTypeTimeExceeded           ICMPType = 11 // Time Exceeded
+       ICMPTypeParameterProblem       ICMPType = 12 // Parameter Problem
+       ICMPTypeTimestamp              ICMPType = 13 // Timestamp
+       ICMPTypeTimestampReply         ICMPType = 14 // Timestamp Reply
+       ICMPTypePhoturis               ICMPType = 40 // Photuris
+)
+
+// Internet Control Message Protocol (ICMP) Parameters, Updated: 2013-04-19
+var icmpTypes = map[ICMPType]string{
+       0:  "echo reply",
+       3:  "destination unreachable",
+       5:  "redirect",
+       8:  "echo",
+       9:  "router advertisement",
+       10: "router solicitation",
+       11: "time exceeded",
+       12: "parameter problem",
+       13: "timestamp",
+       14: "timestamp reply",
+       40: "photuris",
+}
diff --git a/vendor/golang.org/x/net/ipv4/icmp.go b/vendor/golang.org/x/net/ipv4/icmp.go
new file mode 100644 (file)
index 0000000..dbd05cf
--- /dev/null
@@ -0,0 +1,57 @@
+// Copyright 2013 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 ipv4
+
+import "golang.org/x/net/internal/iana"
+
+// An ICMPType represents a type of ICMP message.
+type ICMPType int
+
+func (typ ICMPType) String() string {
+       s, ok := icmpTypes[typ]
+       if !ok {
+               return "<nil>"
+       }
+       return s
+}
+
+// Protocol returns the ICMPv4 protocol number.
+func (typ ICMPType) Protocol() int {
+       return iana.ProtocolICMP
+}
+
+// An ICMPFilter represents an ICMP message filter for incoming
+// packets. The filter belongs to a packet delivery path on a host and
+// it cannot interact with forwarding packets or tunnel-outer packets.
+//
+// Note: RFC 2460 defines a reasonable role model and it works not
+// only for IPv6 but IPv4. A node means a device that implements IP.
+// A router means a node that forwards IP packets not explicitly
+// addressed to itself, and a host means a node that is not a router.
+type ICMPFilter struct {
+       sysICMPFilter
+}
+
+// Accept accepts incoming ICMP packets including the type field value
+// typ.
+func (f *ICMPFilter) Accept(typ ICMPType) {
+       f.accept(typ)
+}
+
+// Block blocks incoming ICMP packets including the type field value
+// typ.
+func (f *ICMPFilter) Block(typ ICMPType) {
+       f.block(typ)
+}
+
+// SetAll sets the filter action to the filter.
+func (f *ICMPFilter) SetAll(block bool) {
+       f.setAll(block)
+}
+
+// WillBlock reports whether the ICMP type will be blocked.
+func (f *ICMPFilter) WillBlock(typ ICMPType) bool {
+       return f.willBlock(typ)
+}
diff --git a/vendor/golang.org/x/net/ipv4/icmp_linux.go b/vendor/golang.org/x/net/ipv4/icmp_linux.go
new file mode 100644 (file)
index 0000000..c912253
--- /dev/null
@@ -0,0 +1,25 @@
+// Copyright 2014 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 ipv4
+
+func (f *sysICMPFilter) accept(typ ICMPType) {
+       f.Data &^= 1 << (uint32(typ) & 31)
+}
+
+func (f *sysICMPFilter) block(typ ICMPType) {
+       f.Data |= 1 << (uint32(typ) & 31)
+}
+
+func (f *sysICMPFilter) setAll(block bool) {
+       if block {
+               f.Data = 1<<32 - 1
+       } else {
+               f.Data = 0
+       }
+}
+
+func (f *sysICMPFilter) willBlock(typ ICMPType) bool {
+       return f.Data&(1<<(uint32(typ)&31)) != 0
+}
diff --git a/vendor/golang.org/x/net/ipv4/icmp_stub.go b/vendor/golang.org/x/net/ipv4/icmp_stub.go
new file mode 100644 (file)
index 0000000..9ee9b6a
--- /dev/null
@@ -0,0 +1,25 @@
+// Copyright 2014 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.
+
+// +build !linux
+
+package ipv4
+
+const sysSizeofICMPFilter = 0x0
+
+type sysICMPFilter struct {
+}
+
+func (f *sysICMPFilter) accept(typ ICMPType) {
+}
+
+func (f *sysICMPFilter) block(typ ICMPType) {
+}
+
+func (f *sysICMPFilter) setAll(block bool) {
+}
+
+func (f *sysICMPFilter) willBlock(typ ICMPType) bool {
+       return false
+}
diff --git a/vendor/golang.org/x/net/ipv4/packet.go b/vendor/golang.org/x/net/ipv4/packet.go
new file mode 100644 (file)
index 0000000..0986431
--- /dev/null
@@ -0,0 +1,97 @@
+// Copyright 2012 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 ipv4
+
+import (
+       "net"
+       "syscall"
+)
+
+// A packetHandler represents the IPv4 datagram handler.
+type packetHandler struct {
+       c *net.IPConn
+       rawOpt
+}
+
+func (c *packetHandler) ok() bool { return c != nil && c.c != nil }
+
+// ReadFrom reads an IPv4 datagram from the endpoint c, copying the
+// datagram into b.  It returns the received datagram as the IPv4
+// header h, the payload p and the control message cm.
+func (c *packetHandler) ReadFrom(b []byte) (h *Header, p []byte, cm *ControlMessage, err error) {
+       if !c.ok() {
+               return nil, nil, nil, syscall.EINVAL
+       }
+       oob := newControlMessage(&c.rawOpt)
+       n, oobn, _, src, err := c.c.ReadMsgIP(b, oob)
+       if err != nil {
+               return nil, nil, nil, err
+       }
+       var hs []byte
+       if hs, p, err = slicePacket(b[:n]); err != nil {
+               return nil, nil, nil, err
+       }
+       if h, err = ParseHeader(hs); err != nil {
+               return nil, nil, nil, err
+       }
+       if cm, err = parseControlMessage(oob[:oobn]); err != nil {
+               return nil, nil, nil, err
+       }
+       if src != nil && cm != nil {
+               cm.Src = src.IP
+       }
+       return
+}
+
+func slicePacket(b []byte) (h, p []byte, err error) {
+       if len(b) < HeaderLen {
+               return nil, nil, errHeaderTooShort
+       }
+       hdrlen := int(b[0]&0x0f) << 2
+       return b[:hdrlen], b[hdrlen:], nil
+}
+
+// WriteTo writes an IPv4 datagram through the endpoint c, copying the
+// datagram from the IPv4 header h and the payload p.  The control
+// message cm allows the datagram path and the outgoing interface to be
+// specified.  Currently only Darwin and Linux support this.  The cm
+// may be nil if control of the outgoing datagram is not required.
+//
+// The IPv4 header h must contain appropriate fields that include:
+//
+//     Version       = ipv4.Version
+//     Len           = <must be specified>
+//     TOS           = <must be specified>
+//     TotalLen      = <must be specified>
+//     ID            = platform sets an appropriate value if ID is zero
+//     FragOff       = <must be specified>
+//     TTL           = <must be specified>
+//     Protocol      = <must be specified>
+//     Checksum      = platform sets an appropriate value if Checksum is zero
+//     Src           = platform sets an appropriate value if Src is nil
+//     Dst           = <must be specified>
+//     Options       = optional
+func (c *packetHandler) WriteTo(h *Header, p []byte, cm *ControlMessage) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       oob := marshalControlMessage(cm)
+       wh, err := h.Marshal()
+       if err != nil {
+               return err
+       }
+       dst := &net.IPAddr{}
+       if cm != nil {
+               if ip := cm.Dst.To4(); ip != nil {
+                       dst.IP = ip
+               }
+       }
+       if dst.IP == nil {
+               dst.IP = h.Dst
+       }
+       wh = append(wh, p...)
+       _, _, err = c.c.WriteMsgIP(wh, oob, dst)
+       return err
+}
diff --git a/vendor/golang.org/x/net/ipv4/payload.go b/vendor/golang.org/x/net/ipv4/payload.go
new file mode 100644 (file)
index 0000000..d7698cb
--- /dev/null
@@ -0,0 +1,15 @@
+// Copyright 2012 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 ipv4
+
+import "net"
+
+// A payloadHandler represents the IPv4 datagram payload handler.
+type payloadHandler struct {
+       net.PacketConn
+       rawOpt
+}
+
+func (c *payloadHandler) ok() bool { return c != nil && c.PacketConn != nil }
diff --git a/vendor/golang.org/x/net/ipv4/payload_cmsg.go b/vendor/golang.org/x/net/ipv4/payload_cmsg.go
new file mode 100644 (file)
index 0000000..d358fc3
--- /dev/null
@@ -0,0 +1,81 @@
+// Copyright 2012 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.
+
+// +build !plan9,!solaris,!windows
+
+package ipv4
+
+import (
+       "net"
+       "syscall"
+)
+
+// ReadFrom reads a payload of the received IPv4 datagram, from the
+// endpoint c, copying the payload into b.  It returns the number of
+// bytes copied into b, the control message cm and the source address
+// src of the received datagram.
+func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) {
+       if !c.ok() {
+               return 0, nil, nil, syscall.EINVAL
+       }
+       oob := newControlMessage(&c.rawOpt)
+       var oobn int
+       switch c := c.PacketConn.(type) {
+       case *net.UDPConn:
+               if n, oobn, _, src, err = c.ReadMsgUDP(b, oob); err != nil {
+                       return 0, nil, nil, err
+               }
+       case *net.IPConn:
+               if sockOpts[ssoStripHeader].name > 0 {
+                       if n, oobn, _, src, err = c.ReadMsgIP(b, oob); err != nil {
+                               return 0, nil, nil, err
+                       }
+               } else {
+                       nb := make([]byte, maxHeaderLen+len(b))
+                       if n, oobn, _, src, err = c.ReadMsgIP(nb, oob); err != nil {
+                               return 0, nil, nil, err
+                       }
+                       hdrlen := int(nb[0]&0x0f) << 2
+                       copy(b, nb[hdrlen:])
+                       n -= hdrlen
+               }
+       default:
+               return 0, nil, nil, errInvalidConnType
+       }
+       if cm, err = parseControlMessage(oob[:oobn]); err != nil {
+               return 0, nil, nil, err
+       }
+       if cm != nil {
+               cm.Src = netAddrToIP4(src)
+       }
+       return
+}
+
+// WriteTo writes a payload of the IPv4 datagram, to the destination
+// address dst through the endpoint c, copying the payload from b.  It
+// returns the number of bytes written.  The control message cm allows
+// the datagram path and the outgoing interface to be specified.
+// Currently only Darwin and Linux support this.  The cm may be nil if
+// control of the outgoing datagram is not required.
+func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) {
+       if !c.ok() {
+               return 0, syscall.EINVAL
+       }
+       oob := marshalControlMessage(cm)
+       if dst == nil {
+               return 0, errMissingAddress
+       }
+       switch c := c.PacketConn.(type) {
+       case *net.UDPConn:
+               n, _, err = c.WriteMsgUDP(b, oob, dst.(*net.UDPAddr))
+       case *net.IPConn:
+               n, _, err = c.WriteMsgIP(b, oob, dst.(*net.IPAddr))
+       default:
+               return 0, errInvalidConnType
+       }
+       if err != nil {
+               return 0, err
+       }
+       return
+}
diff --git a/vendor/golang.org/x/net/ipv4/payload_nocmsg.go b/vendor/golang.org/x/net/ipv4/payload_nocmsg.go
new file mode 100644 (file)
index 0000000..d128c9c
--- /dev/null
@@ -0,0 +1,42 @@
+// Copyright 2012 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.
+
+// +build plan9 solaris windows
+
+package ipv4
+
+import (
+       "net"
+       "syscall"
+)
+
+// ReadFrom reads a payload of the received IPv4 datagram, from the
+// endpoint c, copying the payload into b.  It returns the number of
+// bytes copied into b, the control message cm and the source address
+// src of the received datagram.
+func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) {
+       if !c.ok() {
+               return 0, nil, nil, syscall.EINVAL
+       }
+       if n, src, err = c.PacketConn.ReadFrom(b); err != nil {
+               return 0, nil, nil, err
+       }
+       return
+}
+
+// WriteTo writes a payload of the IPv4 datagram, to the destination
+// address dst through the endpoint c, copying the payload from b.  It
+// returns the number of bytes written.  The control message cm allows
+// the datagram path and the outgoing interface to be specified.
+// Currently only Darwin and Linux support this.  The cm may be nil if
+// control of the outgoing datagram is not required.
+func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) {
+       if !c.ok() {
+               return 0, syscall.EINVAL
+       }
+       if dst == nil {
+               return 0, errMissingAddress
+       }
+       return c.PacketConn.WriteTo(b, dst)
+}
diff --git a/vendor/golang.org/x/net/ipv4/sockopt.go b/vendor/golang.org/x/net/ipv4/sockopt.go
new file mode 100644 (file)
index 0000000..ace37d3
--- /dev/null
@@ -0,0 +1,46 @@
+// Copyright 2014 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 ipv4
+
+// Sticky socket options
+const (
+       ssoTOS                = iota // header field for unicast packet
+       ssoTTL                       // header field for unicast packet
+       ssoMulticastTTL              // header field for multicast packet
+       ssoMulticastInterface        // outbound interface for multicast packet
+       ssoMulticastLoopback         // loopback for multicast packet
+       ssoReceiveTTL                // header field on received packet
+       ssoReceiveDst                // header field on received packet
+       ssoReceiveInterface          // inbound interface on received packet
+       ssoPacketInfo                // incbound or outbound packet path
+       ssoHeaderPrepend             // ipv4 header prepend
+       ssoStripHeader               // strip ipv4 header
+       ssoICMPFilter                // icmp filter
+       ssoJoinGroup                 // any-source multicast
+       ssoLeaveGroup                // any-source multicast
+       ssoJoinSourceGroup           // source-specific multicast
+       ssoLeaveSourceGroup          // source-specific multicast
+       ssoBlockSourceGroup          // any-source or source-specific multicast
+       ssoUnblockSourceGroup        // any-source or source-specific multicast
+       ssoMax
+)
+
+// Sticky socket option value types
+const (
+       ssoTypeByte = iota + 1
+       ssoTypeInt
+       ssoTypeInterface
+       ssoTypeICMPFilter
+       ssoTypeIPMreq
+       ssoTypeIPMreqn
+       ssoTypeGroupReq
+       ssoTypeGroupSourceReq
+)
+
+// A sockOpt represents a binding for sticky socket option.
+type sockOpt struct {
+       name int // option name, must be equal or greater than 1
+       typ  int // option value type, must be equal or greater than 1
+}
diff --git a/vendor/golang.org/x/net/ipv4/sockopt_asmreq.go b/vendor/golang.org/x/net/ipv4/sockopt_asmreq.go
new file mode 100644 (file)
index 0000000..4a6aa78
--- /dev/null
@@ -0,0 +1,83 @@
+// Copyright 2012 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.
+
+// +build darwin dragonfly freebsd netbsd openbsd windows
+
+package ipv4
+
+import "net"
+
+func setIPMreqInterface(mreq *sysIPMreq, ifi *net.Interface) error {
+       if ifi == nil {
+               return nil
+       }
+       ifat, err := ifi.Addrs()
+       if err != nil {
+               return err
+       }
+       for _, ifa := range ifat {
+               switch ifa := ifa.(type) {
+               case *net.IPAddr:
+                       if ip := ifa.IP.To4(); ip != nil {
+                               copy(mreq.Interface[:], ip)
+                               return nil
+                       }
+               case *net.IPNet:
+                       if ip := ifa.IP.To4(); ip != nil {
+                               copy(mreq.Interface[:], ip)
+                               return nil
+                       }
+               }
+       }
+       return errNoSuchInterface
+}
+
+func netIP4ToInterface(ip net.IP) (*net.Interface, error) {
+       ift, err := net.Interfaces()
+       if err != nil {
+               return nil, err
+       }
+       for _, ifi := range ift {
+               ifat, err := ifi.Addrs()
+               if err != nil {
+                       return nil, err
+               }
+               for _, ifa := range ifat {
+                       switch ifa := ifa.(type) {
+                       case *net.IPAddr:
+                               if ip.Equal(ifa.IP) {
+                                       return &ifi, nil
+                               }
+                       case *net.IPNet:
+                               if ip.Equal(ifa.IP) {
+                                       return &ifi, nil
+                               }
+                       }
+               }
+       }
+       return nil, errNoSuchInterface
+}
+
+func netInterfaceToIP4(ifi *net.Interface) (net.IP, error) {
+       if ifi == nil {
+               return net.IPv4zero.To4(), nil
+       }
+       ifat, err := ifi.Addrs()
+       if err != nil {
+               return nil, err
+       }
+       for _, ifa := range ifat {
+               switch ifa := ifa.(type) {
+               case *net.IPAddr:
+                       if ip := ifa.IP.To4(); ip != nil {
+                               return ip, nil
+                       }
+               case *net.IPNet:
+                       if ip := ifa.IP.To4(); ip != nil {
+                               return ip, nil
+                       }
+               }
+       }
+       return nil, errNoSuchInterface
+}
diff --git a/vendor/golang.org/x/net/ipv4/sockopt_asmreq_stub.go b/vendor/golang.org/x/net/ipv4/sockopt_asmreq_stub.go
new file mode 100644 (file)
index 0000000..4555152
--- /dev/null
@@ -0,0 +1,21 @@
+// Copyright 2012 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.
+
+// +build !darwin,!dragonfly,!freebsd,!netbsd,!openbsd,!windows
+
+package ipv4
+
+import "net"
+
+func setsockoptIPMreq(fd, name int, ifi *net.Interface, grp net.IP) error {
+       return errOpNoSupport
+}
+
+func getsockoptInterface(fd, name int) (*net.Interface, error) {
+       return nil, errOpNoSupport
+}
+
+func setsockoptInterface(fd, name int, ifi *net.Interface) error {
+       return errOpNoSupport
+}
diff --git a/vendor/golang.org/x/net/ipv4/sockopt_asmreq_unix.go b/vendor/golang.org/x/net/ipv4/sockopt_asmreq_unix.go
new file mode 100644 (file)
index 0000000..fefa901
--- /dev/null
@@ -0,0 +1,46 @@
+// Copyright 2012 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.
+
+// +build darwin dragonfly freebsd netbsd openbsd
+
+package ipv4
+
+import (
+       "net"
+       "os"
+       "unsafe"
+
+       "golang.org/x/net/internal/iana"
+)
+
+func setsockoptIPMreq(fd, name int, ifi *net.Interface, grp net.IP) error {
+       mreq := sysIPMreq{Multiaddr: [4]byte{grp[0], grp[1], grp[2], grp[3]}}
+       if err := setIPMreqInterface(&mreq, ifi); err != nil {
+               return err
+       }
+       return os.NewSyscallError("setsockopt", setsockopt(fd, iana.ProtocolIP, name, unsafe.Pointer(&mreq), sysSizeofIPMreq))
+}
+
+func getsockoptInterface(fd, name int) (*net.Interface, error) {
+       var b [4]byte
+       l := sysSockoptLen(4)
+       if err := getsockopt(fd, iana.ProtocolIP, name, unsafe.Pointer(&b[0]), &l); err != nil {
+               return nil, os.NewSyscallError("getsockopt", err)
+       }
+       ifi, err := netIP4ToInterface(net.IPv4(b[0], b[1], b[2], b[3]))
+       if err != nil {
+               return nil, err
+       }
+       return ifi, nil
+}
+
+func setsockoptInterface(fd, name int, ifi *net.Interface) error {
+       ip, err := netInterfaceToIP4(ifi)
+       if err != nil {
+               return err
+       }
+       var b [4]byte
+       copy(b[:], ip)
+       return os.NewSyscallError("setsockopt", setsockopt(fd, iana.ProtocolIP, name, unsafe.Pointer(&b[0]), sysSockoptLen(4)))
+}
diff --git a/vendor/golang.org/x/net/ipv4/sockopt_asmreq_windows.go b/vendor/golang.org/x/net/ipv4/sockopt_asmreq_windows.go
new file mode 100644 (file)
index 0000000..431930d
--- /dev/null
@@ -0,0 +1,45 @@
+// Copyright 2012 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 ipv4
+
+import (
+       "net"
+       "os"
+       "syscall"
+       "unsafe"
+
+       "golang.org/x/net/internal/iana"
+)
+
+func setsockoptIPMreq(fd syscall.Handle, name int, ifi *net.Interface, grp net.IP) error {
+       mreq := sysIPMreq{Multiaddr: [4]byte{grp[0], grp[1], grp[2], grp[3]}}
+       if err := setIPMreqInterface(&mreq, ifi); err != nil {
+               return err
+       }
+       return os.NewSyscallError("setsockopt", syscall.Setsockopt(fd, iana.ProtocolIP, int32(name), (*byte)(unsafe.Pointer(&mreq)), int32(sysSizeofIPMreq)))
+}
+
+func getsockoptInterface(fd syscall.Handle, name int) (*net.Interface, error) {
+       var b [4]byte
+       l := int32(4)
+       if err := syscall.Getsockopt(fd, iana.ProtocolIP, int32(name), (*byte)(unsafe.Pointer(&b[0])), &l); err != nil {
+               return nil, os.NewSyscallError("getsockopt", err)
+       }
+       ifi, err := netIP4ToInterface(net.IPv4(b[0], b[1], b[2], b[3]))
+       if err != nil {
+               return nil, err
+       }
+       return ifi, nil
+}
+
+func setsockoptInterface(fd syscall.Handle, name int, ifi *net.Interface) error {
+       ip, err := netInterfaceToIP4(ifi)
+       if err != nil {
+               return err
+       }
+       var b [4]byte
+       copy(b[:], ip)
+       return os.NewSyscallError("setsockopt", syscall.Setsockopt(fd, iana.ProtocolIP, int32(name), (*byte)(unsafe.Pointer(&b[0])), 4))
+}
diff --git a/vendor/golang.org/x/net/ipv4/sockopt_asmreqn_stub.go b/vendor/golang.org/x/net/ipv4/sockopt_asmreqn_stub.go
new file mode 100644 (file)
index 0000000..332f403
--- /dev/null
@@ -0,0 +1,17 @@
+// Copyright 2014 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.
+
+// +build !darwin,!freebsd,!linux,!windows
+
+package ipv4
+
+import "net"
+
+func getsockoptIPMreqn(fd, name int) (*net.Interface, error) {
+       return nil, errOpNoSupport
+}
+
+func setsockoptIPMreqn(fd, name int, ifi *net.Interface, grp net.IP) error {
+       return errOpNoSupport
+}
diff --git a/vendor/golang.org/x/net/ipv4/sockopt_asmreqn_unix.go b/vendor/golang.org/x/net/ipv4/sockopt_asmreqn_unix.go
new file mode 100644 (file)
index 0000000..92c8e34
--- /dev/null
@@ -0,0 +1,42 @@
+// Copyright 2014 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.
+
+// +build darwin freebsd linux
+
+package ipv4
+
+import (
+       "net"
+       "os"
+       "unsafe"
+
+       "golang.org/x/net/internal/iana"
+)
+
+func getsockoptIPMreqn(fd, name int) (*net.Interface, error) {
+       var mreqn sysIPMreqn
+       l := sysSockoptLen(sysSizeofIPMreqn)
+       if err := getsockopt(fd, iana.ProtocolIP, name, unsafe.Pointer(&mreqn), &l); err != nil {
+               return nil, os.NewSyscallError("getsockopt", err)
+       }
+       if mreqn.Ifindex == 0 {
+               return nil, nil
+       }
+       ifi, err := net.InterfaceByIndex(int(mreqn.Ifindex))
+       if err != nil {
+               return nil, err
+       }
+       return ifi, nil
+}
+
+func setsockoptIPMreqn(fd, name int, ifi *net.Interface, grp net.IP) error {
+       var mreqn sysIPMreqn
+       if ifi != nil {
+               mreqn.Ifindex = int32(ifi.Index)
+       }
+       if grp != nil {
+               mreqn.Multiaddr = [4]byte{grp[0], grp[1], grp[2], grp[3]}
+       }
+       return os.NewSyscallError("setsockopt", setsockopt(fd, iana.ProtocolIP, name, unsafe.Pointer(&mreqn), sysSizeofIPMreqn))
+}
diff --git a/vendor/golang.org/x/net/ipv4/sockopt_ssmreq_stub.go b/vendor/golang.org/x/net/ipv4/sockopt_ssmreq_stub.go
new file mode 100644 (file)
index 0000000..8546524
--- /dev/null
@@ -0,0 +1,17 @@
+// Copyright 2014 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.
+
+// +build !darwin,!freebsd,!linux
+
+package ipv4
+
+import "net"
+
+func setsockoptGroupReq(fd, name int, ifi *net.Interface, grp net.IP) error {
+       return errOpNoSupport
+}
+
+func setsockoptGroupSourceReq(fd, name int, ifi *net.Interface, grp, src net.IP) error {
+       return errOpNoSupport
+}
diff --git a/vendor/golang.org/x/net/ipv4/sockopt_ssmreq_unix.go b/vendor/golang.org/x/net/ipv4/sockopt_ssmreq_unix.go
new file mode 100644 (file)
index 0000000..6f647bc
--- /dev/null
@@ -0,0 +1,61 @@
+// Copyright 2014 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.
+
+// +build darwin freebsd linux
+
+package ipv4
+
+import (
+       "net"
+       "os"
+       "unsafe"
+
+       "golang.org/x/net/internal/iana"
+)
+
+var freebsd32o64 bool
+
+func setsockoptGroupReq(fd, name int, ifi *net.Interface, grp net.IP) error {
+       var gr sysGroupReq
+       if ifi != nil {
+               gr.Interface = uint32(ifi.Index)
+       }
+       gr.setGroup(grp)
+       var p unsafe.Pointer
+       var l sysSockoptLen
+       if freebsd32o64 {
+               var d [sysSizeofGroupReq + 4]byte
+               s := (*[sysSizeofGroupReq]byte)(unsafe.Pointer(&gr))
+               copy(d[:4], s[:4])
+               copy(d[8:], s[4:])
+               p = unsafe.Pointer(&d[0])
+               l = sysSizeofGroupReq + 4
+       } else {
+               p = unsafe.Pointer(&gr)
+               l = sysSizeofGroupReq
+       }
+       return os.NewSyscallError("setsockopt", setsockopt(fd, iana.ProtocolIP, name, p, l))
+}
+
+func setsockoptGroupSourceReq(fd, name int, ifi *net.Interface, grp, src net.IP) error {
+       var gsr sysGroupSourceReq
+       if ifi != nil {
+               gsr.Interface = uint32(ifi.Index)
+       }
+       gsr.setSourceGroup(grp, src)
+       var p unsafe.Pointer
+       var l sysSockoptLen
+       if freebsd32o64 {
+               var d [sysSizeofGroupSourceReq + 4]byte
+               s := (*[sysSizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr))
+               copy(d[:4], s[:4])
+               copy(d[8:], s[4:])
+               p = unsafe.Pointer(&d[0])
+               l = sysSizeofGroupSourceReq + 4
+       } else {
+               p = unsafe.Pointer(&gsr)
+               l = sysSizeofGroupSourceReq
+       }
+       return os.NewSyscallError("setsockopt", setsockopt(fd, iana.ProtocolIP, name, p, l))
+}
diff --git a/vendor/golang.org/x/net/ipv4/sockopt_stub.go b/vendor/golang.org/x/net/ipv4/sockopt_stub.go
new file mode 100644 (file)
index 0000000..9d19f5d
--- /dev/null
@@ -0,0 +1,11 @@
+// Copyright 2012 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.
+
+// +build nacl plan9 solaris
+
+package ipv4
+
+func setInt(fd int, opt *sockOpt, v int) error {
+       return errOpNoSupport
+}
diff --git a/vendor/golang.org/x/net/ipv4/sockopt_unix.go b/vendor/golang.org/x/net/ipv4/sockopt_unix.go
new file mode 100644 (file)
index 0000000..50cdbd8
--- /dev/null
@@ -0,0 +1,122 @@
+// Copyright 2012 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.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd
+
+package ipv4
+
+import (
+       "net"
+       "os"
+       "unsafe"
+
+       "golang.org/x/net/internal/iana"
+)
+
+func getInt(fd int, opt *sockOpt) (int, error) {
+       if opt.name < 1 || (opt.typ != ssoTypeByte && opt.typ != ssoTypeInt) {
+               return 0, errOpNoSupport
+       }
+       var i int32
+       var b byte
+       p := unsafe.Pointer(&i)
+       l := sysSockoptLen(4)
+       if opt.typ == ssoTypeByte {
+               p = unsafe.Pointer(&b)
+               l = sysSockoptLen(1)
+       }
+       if err := getsockopt(fd, iana.ProtocolIP, opt.name, p, &l); err != nil {
+               return 0, os.NewSyscallError("getsockopt", err)
+       }
+       if opt.typ == ssoTypeByte {
+               return int(b), nil
+       }
+       return int(i), nil
+}
+
+func setInt(fd int, opt *sockOpt, v int) error {
+       if opt.name < 1 || (opt.typ != ssoTypeByte && opt.typ != ssoTypeInt) {
+               return errOpNoSupport
+       }
+       i := int32(v)
+       var b byte
+       p := unsafe.Pointer(&i)
+       l := sysSockoptLen(4)
+       if opt.typ == ssoTypeByte {
+               b = byte(v)
+               p = unsafe.Pointer(&b)
+               l = sysSockoptLen(1)
+       }
+       return os.NewSyscallError("setsockopt", setsockopt(fd, iana.ProtocolIP, opt.name, p, l))
+}
+
+func getInterface(fd int, opt *sockOpt) (*net.Interface, error) {
+       if opt.name < 1 {
+               return nil, errOpNoSupport
+       }
+       switch opt.typ {
+       case ssoTypeInterface:
+               return getsockoptInterface(fd, opt.name)
+       case ssoTypeIPMreqn:
+               return getsockoptIPMreqn(fd, opt.name)
+       default:
+               return nil, errOpNoSupport
+       }
+}
+
+func setInterface(fd int, opt *sockOpt, ifi *net.Interface) error {
+       if opt.name < 1 {
+               return errOpNoSupport
+       }
+       switch opt.typ {
+       case ssoTypeInterface:
+               return setsockoptInterface(fd, opt.name, ifi)
+       case ssoTypeIPMreqn:
+               return setsockoptIPMreqn(fd, opt.name, ifi, nil)
+       default:
+               return errOpNoSupport
+       }
+}
+
+func getICMPFilter(fd int, opt *sockOpt) (*ICMPFilter, error) {
+       if opt.name < 1 || opt.typ != ssoTypeICMPFilter {
+               return nil, errOpNoSupport
+       }
+       var f ICMPFilter
+       l := sysSockoptLen(sysSizeofICMPFilter)
+       if err := getsockopt(fd, iana.ProtocolReserved, opt.name, unsafe.Pointer(&f.sysICMPFilter), &l); err != nil {
+               return nil, os.NewSyscallError("getsockopt", err)
+       }
+       return &f, nil
+}
+
+func setICMPFilter(fd int, opt *sockOpt, f *ICMPFilter) error {
+       if opt.name < 1 || opt.typ != ssoTypeICMPFilter {
+               return errOpNoSupport
+       }
+       return os.NewSyscallError("setsockopt", setsockopt(fd, iana.ProtocolReserved, opt.name, unsafe.Pointer(&f.sysICMPFilter), sysSizeofICMPFilter))
+}
+
+func setGroup(fd int, opt *sockOpt, ifi *net.Interface, grp net.IP) error {
+       if opt.name < 1 {
+               return errOpNoSupport
+       }
+       switch opt.typ {
+       case ssoTypeIPMreq:
+               return setsockoptIPMreq(fd, opt.name, ifi, grp)
+       case ssoTypeIPMreqn:
+               return setsockoptIPMreqn(fd, opt.name, ifi, grp)
+       case ssoTypeGroupReq:
+               return setsockoptGroupReq(fd, opt.name, ifi, grp)
+       default:
+               return errOpNoSupport
+       }
+}
+
+func setSourceGroup(fd int, opt *sockOpt, ifi *net.Interface, grp, src net.IP) error {
+       if opt.name < 1 || opt.typ != ssoTypeGroupSourceReq {
+               return errOpNoSupport
+       }
+       return setsockoptGroupSourceReq(fd, opt.name, ifi, grp, src)
+}
diff --git a/vendor/golang.org/x/net/ipv4/sockopt_windows.go b/vendor/golang.org/x/net/ipv4/sockopt_windows.go
new file mode 100644 (file)
index 0000000..c4c2441
--- /dev/null
@@ -0,0 +1,68 @@
+// Copyright 2012 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 ipv4
+
+import (
+       "net"
+       "os"
+       "syscall"
+       "unsafe"
+
+       "golang.org/x/net/internal/iana"
+)
+
+func getInt(fd syscall.Handle, opt *sockOpt) (int, error) {
+       if opt.name < 1 || opt.typ != ssoTypeInt {
+               return 0, errOpNoSupport
+       }
+       var i int32
+       l := int32(4)
+       if err := syscall.Getsockopt(fd, iana.ProtocolIP, int32(opt.name), (*byte)(unsafe.Pointer(&i)), &l); err != nil {
+               return 0, os.NewSyscallError("getsockopt", err)
+       }
+       return int(i), nil
+}
+
+func setInt(fd syscall.Handle, opt *sockOpt, v int) error {
+       if opt.name < 1 || opt.typ != ssoTypeInt {
+               return errOpNoSupport
+       }
+       i := int32(v)
+       return os.NewSyscallError("setsockopt", syscall.Setsockopt(fd, iana.ProtocolIP, int32(opt.name), (*byte)(unsafe.Pointer(&i)), 4))
+}
+
+func getInterface(fd syscall.Handle, opt *sockOpt) (*net.Interface, error) {
+       if opt.name < 1 || opt.typ != ssoTypeInterface {
+               return nil, errOpNoSupport
+       }
+       return getsockoptInterface(fd, opt.name)
+}
+
+func setInterface(fd syscall.Handle, opt *sockOpt, ifi *net.Interface) error {
+       if opt.name < 1 || opt.typ != ssoTypeInterface {
+               return errOpNoSupport
+       }
+       return setsockoptInterface(fd, opt.name, ifi)
+}
+
+func getICMPFilter(fd syscall.Handle, opt *sockOpt) (*ICMPFilter, error) {
+       return nil, errOpNoSupport
+}
+
+func setICMPFilter(fd syscall.Handle, opt *sockOpt, f *ICMPFilter) error {
+       return errOpNoSupport
+}
+
+func setGroup(fd syscall.Handle, opt *sockOpt, ifi *net.Interface, grp net.IP) error {
+       if opt.name < 1 || opt.typ != ssoTypeIPMreq {
+               return errOpNoSupport
+       }
+       return setsockoptIPMreq(fd, opt.name, ifi, grp)
+}
+
+func setSourceGroup(fd syscall.Handle, opt *sockOpt, ifi *net.Interface, grp, src net.IP) error {
+       // TODO(mikio): implement this
+       return errOpNoSupport
+}
diff --git a/vendor/golang.org/x/net/ipv4/sys_bsd.go b/vendor/golang.org/x/net/ipv4/sys_bsd.go
new file mode 100644 (file)
index 0000000..a669a44
--- /dev/null
@@ -0,0 +1,36 @@
+// Copyright 2014 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.
+
+// +build dragonfly netbsd
+
+package ipv4
+
+import (
+       "net"
+       "syscall"
+)
+
+type sysSockoptLen int32
+
+var (
+       ctlOpts = [ctlMax]ctlOpt{
+               ctlTTL:       {sysIP_RECVTTL, 1, marshalTTL, parseTTL},
+               ctlDst:       {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst},
+               ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface},
+       }
+
+       sockOpts = [ssoMax]sockOpt{
+               ssoTOS:                {sysIP_TOS, ssoTypeInt},
+               ssoTTL:                {sysIP_TTL, ssoTypeInt},
+               ssoMulticastTTL:       {sysIP_MULTICAST_TTL, ssoTypeByte},
+               ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeInterface},
+               ssoMulticastLoopback:  {sysIP_MULTICAST_LOOP, ssoTypeInt},
+               ssoReceiveTTL:         {sysIP_RECVTTL, ssoTypeInt},
+               ssoReceiveDst:         {sysIP_RECVDSTADDR, ssoTypeInt},
+               ssoReceiveInterface:   {sysIP_RECVIF, ssoTypeInt},
+               ssoHeaderPrepend:      {sysIP_HDRINCL, ssoTypeInt},
+               ssoJoinGroup:          {sysIP_ADD_MEMBERSHIP, ssoTypeIPMreq},
+               ssoLeaveGroup:         {sysIP_DROP_MEMBERSHIP, ssoTypeIPMreq},
+       }
+)
diff --git a/vendor/golang.org/x/net/ipv4/sys_darwin.go b/vendor/golang.org/x/net/ipv4/sys_darwin.go
new file mode 100644 (file)
index 0000000..3f34734
--- /dev/null
@@ -0,0 +1,98 @@
+// Copyright 2014 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 ipv4
+
+import (
+       "net"
+       "syscall"
+       "unsafe"
+)
+
+type sysSockoptLen int32
+
+var (
+       ctlOpts = [ctlMax]ctlOpt{
+               ctlTTL:       {sysIP_RECVTTL, 1, marshalTTL, parseTTL},
+               ctlDst:       {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst},
+               ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface},
+       }
+
+       sockOpts = [ssoMax]sockOpt{
+               ssoTOS:                {sysIP_TOS, ssoTypeInt},
+               ssoTTL:                {sysIP_TTL, ssoTypeInt},
+               ssoMulticastTTL:       {sysIP_MULTICAST_TTL, ssoTypeByte},
+               ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeInterface},
+               ssoMulticastLoopback:  {sysIP_MULTICAST_LOOP, ssoTypeInt},
+               ssoReceiveTTL:         {sysIP_RECVTTL, ssoTypeInt},
+               ssoReceiveDst:         {sysIP_RECVDSTADDR, ssoTypeInt},
+               ssoReceiveInterface:   {sysIP_RECVIF, ssoTypeInt},
+               ssoHeaderPrepend:      {sysIP_HDRINCL, ssoTypeInt},
+               ssoStripHeader:        {sysIP_STRIPHDR, ssoTypeInt},
+               ssoJoinGroup:          {sysIP_ADD_MEMBERSHIP, ssoTypeIPMreq},
+               ssoLeaveGroup:         {sysIP_DROP_MEMBERSHIP, ssoTypeIPMreq},
+       }
+)
+
+func init() {
+       // Seems like kern.osreldate is veiled on latest OS X. We use
+       // kern.osrelease instead.
+       osver, err := syscall.Sysctl("kern.osrelease")
+       if err != nil {
+               return
+       }
+       var i int
+       for i = range osver {
+               if osver[i] == '.' {
+                       break
+               }
+       }
+       // The IP_PKTINFO and protocol-independent multicast API were
+       // introduced in OS X 10.7 (Darwin 11.0.0). But it looks like
+       // those features require OS X 10.8 (Darwin 12.0.0) and above.
+       // See http://support.apple.com/kb/HT1633.
+       if i > 2 || i == 2 && osver[0] >= '1' && osver[1] >= '2' {
+               ctlOpts[ctlPacketInfo].name = sysIP_PKTINFO
+               ctlOpts[ctlPacketInfo].length = sysSizeofInetPktinfo
+               ctlOpts[ctlPacketInfo].marshal = marshalPacketInfo
+               ctlOpts[ctlPacketInfo].parse = parsePacketInfo
+               sockOpts[ssoPacketInfo].name = sysIP_RECVPKTINFO
+               sockOpts[ssoPacketInfo].typ = ssoTypeInt
+               sockOpts[ssoMulticastInterface].typ = ssoTypeIPMreqn
+               sockOpts[ssoJoinGroup].name = sysMCAST_JOIN_GROUP
+               sockOpts[ssoJoinGroup].typ = ssoTypeGroupReq
+               sockOpts[ssoLeaveGroup].name = sysMCAST_LEAVE_GROUP
+               sockOpts[ssoLeaveGroup].typ = ssoTypeGroupReq
+               sockOpts[ssoJoinSourceGroup].name = sysMCAST_JOIN_SOURCE_GROUP
+               sockOpts[ssoJoinSourceGroup].typ = ssoTypeGroupSourceReq
+               sockOpts[ssoLeaveSourceGroup].name = sysMCAST_LEAVE_SOURCE_GROUP
+               sockOpts[ssoLeaveSourceGroup].typ = ssoTypeGroupSourceReq
+               sockOpts[ssoBlockSourceGroup].name = sysMCAST_BLOCK_SOURCE
+               sockOpts[ssoBlockSourceGroup].typ = ssoTypeGroupSourceReq
+               sockOpts[ssoUnblockSourceGroup].name = sysMCAST_UNBLOCK_SOURCE
+               sockOpts[ssoUnblockSourceGroup].typ = ssoTypeGroupSourceReq
+       }
+}
+
+func (pi *sysInetPktinfo) setIfindex(i int) {
+       pi.Ifindex = uint32(i)
+}
+
+func (gr *sysGroupReq) setGroup(grp net.IP) {
+       sa := (*sysSockaddrInet)(unsafe.Pointer(&gr.Pad_cgo_0[0]))
+       sa.Len = sysSizeofSockaddrInet
+       sa.Family = syscall.AF_INET
+       copy(sa.Addr[:], grp)
+}
+
+func (gsr *sysGroupSourceReq) setSourceGroup(grp, src net.IP) {
+       sa := (*sysSockaddrInet)(unsafe.Pointer(&gsr.Pad_cgo_0[0]))
+       sa.Len = sysSizeofSockaddrInet
+       sa.Family = syscall.AF_INET
+       copy(sa.Addr[:], grp)
+       sa = (*sysSockaddrInet)(unsafe.Pointer(&gsr.Pad_cgo_1[0]))
+       sa.Len = sysSizeofSockaddrInet
+       sa.Family = syscall.AF_INET
+       copy(sa.Addr[:], src)
+}
diff --git a/vendor/golang.org/x/net/ipv4/sys_freebsd.go b/vendor/golang.org/x/net/ipv4/sys_freebsd.go
new file mode 100644 (file)
index 0000000..09ef491
--- /dev/null
@@ -0,0 +1,75 @@
+// Copyright 2014 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 ipv4
+
+import (
+       "net"
+       "runtime"
+       "strings"
+       "syscall"
+       "unsafe"
+)
+
+type sysSockoptLen int32
+
+var (
+       ctlOpts = [ctlMax]ctlOpt{
+               ctlTTL:       {sysIP_RECVTTL, 1, marshalTTL, parseTTL},
+               ctlDst:       {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst},
+               ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface},
+       }
+
+       sockOpts = [ssoMax]sockOpt{
+               ssoTOS:                {sysIP_TOS, ssoTypeInt},
+               ssoTTL:                {sysIP_TTL, ssoTypeInt},
+               ssoMulticastTTL:       {sysIP_MULTICAST_TTL, ssoTypeByte},
+               ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeInterface},
+               ssoMulticastLoopback:  {sysIP_MULTICAST_LOOP, ssoTypeInt},
+               ssoReceiveTTL:         {sysIP_RECVTTL, ssoTypeInt},
+               ssoReceiveDst:         {sysIP_RECVDSTADDR, ssoTypeInt},
+               ssoReceiveInterface:   {sysIP_RECVIF, ssoTypeInt},
+               ssoHeaderPrepend:      {sysIP_HDRINCL, ssoTypeInt},
+               ssoJoinGroup:          {sysMCAST_JOIN_GROUP, ssoTypeGroupReq},
+               ssoLeaveGroup:         {sysMCAST_LEAVE_GROUP, ssoTypeGroupReq},
+               ssoJoinSourceGroup:    {sysMCAST_JOIN_SOURCE_GROUP, ssoTypeGroupSourceReq},
+               ssoLeaveSourceGroup:   {sysMCAST_LEAVE_SOURCE_GROUP, ssoTypeGroupSourceReq},
+               ssoBlockSourceGroup:   {sysMCAST_BLOCK_SOURCE, ssoTypeGroupSourceReq},
+               ssoUnblockSourceGroup: {sysMCAST_UNBLOCK_SOURCE, ssoTypeGroupSourceReq},
+       }
+)
+
+func init() {
+       freebsdVersion, _ = syscall.SysctlUint32("kern.osreldate")
+       if freebsdVersion >= 1000000 {
+               sockOpts[ssoMulticastInterface].typ = ssoTypeIPMreqn
+       }
+       if runtime.GOOS == "freebsd" && runtime.GOARCH == "386" {
+               archs, _ := syscall.Sysctl("kern.supported_archs")
+               for _, s := range strings.Fields(archs) {
+                       if s == "amd64" {
+                               freebsd32o64 = true
+                               break
+                       }
+               }
+       }
+}
+
+func (gr *sysGroupReq) setGroup(grp net.IP) {
+       sa := (*sysSockaddrInet)(unsafe.Pointer(&gr.Group))
+       sa.Len = sysSizeofSockaddrInet
+       sa.Family = syscall.AF_INET
+       copy(sa.Addr[:], grp)
+}
+
+func (gsr *sysGroupSourceReq) setSourceGroup(grp, src net.IP) {
+       sa := (*sysSockaddrInet)(unsafe.Pointer(&gsr.Group))
+       sa.Len = sysSizeofSockaddrInet
+       sa.Family = syscall.AF_INET
+       copy(sa.Addr[:], grp)
+       sa = (*sysSockaddrInet)(unsafe.Pointer(&gsr.Source))
+       sa.Len = sysSizeofSockaddrInet
+       sa.Family = syscall.AF_INET
+       copy(sa.Addr[:], src)
+}
diff --git a/vendor/golang.org/x/net/ipv4/sys_linux.go b/vendor/golang.org/x/net/ipv4/sys_linux.go
new file mode 100644 (file)
index 0000000..b1f3878
--- /dev/null
@@ -0,0 +1,57 @@
+// Copyright 2014 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 ipv4
+
+import (
+       "net"
+       "syscall"
+       "unsafe"
+)
+
+type sysSockoptLen int32
+
+var (
+       ctlOpts = [ctlMax]ctlOpt{
+               ctlTTL:        {sysIP_TTL, 1, marshalTTL, parseTTL},
+               ctlPacketInfo: {sysIP_PKTINFO, sysSizeofInetPktinfo, marshalPacketInfo, parsePacketInfo},
+       }
+
+       sockOpts = [ssoMax]sockOpt{
+               ssoTOS:                {sysIP_TOS, ssoTypeInt},
+               ssoTTL:                {sysIP_TTL, ssoTypeInt},
+               ssoMulticastTTL:       {sysIP_MULTICAST_TTL, ssoTypeInt},
+               ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeIPMreqn},
+               ssoMulticastLoopback:  {sysIP_MULTICAST_LOOP, ssoTypeInt},
+               ssoReceiveTTL:         {sysIP_RECVTTL, ssoTypeInt},
+               ssoPacketInfo:         {sysIP_PKTINFO, ssoTypeInt},
+               ssoHeaderPrepend:      {sysIP_HDRINCL, ssoTypeInt},
+               ssoICMPFilter:         {sysICMP_FILTER, ssoTypeICMPFilter},
+               ssoJoinGroup:          {sysMCAST_JOIN_GROUP, ssoTypeGroupReq},
+               ssoLeaveGroup:         {sysMCAST_LEAVE_GROUP, ssoTypeGroupReq},
+               ssoJoinSourceGroup:    {sysMCAST_JOIN_SOURCE_GROUP, ssoTypeGroupSourceReq},
+               ssoLeaveSourceGroup:   {sysMCAST_LEAVE_SOURCE_GROUP, ssoTypeGroupSourceReq},
+               ssoBlockSourceGroup:   {sysMCAST_BLOCK_SOURCE, ssoTypeGroupSourceReq},
+               ssoUnblockSourceGroup: {sysMCAST_UNBLOCK_SOURCE, ssoTypeGroupSourceReq},
+       }
+)
+
+func (pi *sysInetPktinfo) setIfindex(i int) {
+       pi.Ifindex = int32(i)
+}
+
+func (gr *sysGroupReq) setGroup(grp net.IP) {
+       sa := (*sysSockaddrInet)(unsafe.Pointer(&gr.Group))
+       sa.Family = syscall.AF_INET
+       copy(sa.Addr[:], grp)
+}
+
+func (gsr *sysGroupSourceReq) setSourceGroup(grp, src net.IP) {
+       sa := (*sysSockaddrInet)(unsafe.Pointer(&gsr.Group))
+       sa.Family = syscall.AF_INET
+       copy(sa.Addr[:], grp)
+       sa = (*sysSockaddrInet)(unsafe.Pointer(&gsr.Source))
+       sa.Family = syscall.AF_INET
+       copy(sa.Addr[:], src)
+}
diff --git a/vendor/golang.org/x/net/ipv4/sys_openbsd.go b/vendor/golang.org/x/net/ipv4/sys_openbsd.go
new file mode 100644 (file)
index 0000000..550f208
--- /dev/null
@@ -0,0 +1,34 @@
+// Copyright 2014 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 ipv4
+
+import (
+       "net"
+       "syscall"
+)
+
+type sysSockoptLen int32
+
+var (
+       ctlOpts = [ctlMax]ctlOpt{
+               ctlTTL:       {sysIP_RECVTTL, 1, marshalTTL, parseTTL},
+               ctlDst:       {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst},
+               ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface},
+       }
+
+       sockOpts = [ssoMax]sockOpt{
+               ssoTOS:                {sysIP_TOS, ssoTypeInt},
+               ssoTTL:                {sysIP_TTL, ssoTypeInt},
+               ssoMulticastTTL:       {sysIP_MULTICAST_TTL, ssoTypeByte},
+               ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeInterface},
+               ssoMulticastLoopback:  {sysIP_MULTICAST_LOOP, ssoTypeByte},
+               ssoReceiveTTL:         {sysIP_RECVTTL, ssoTypeInt},
+               ssoReceiveDst:         {sysIP_RECVDSTADDR, ssoTypeInt},
+               ssoReceiveInterface:   {sysIP_RECVIF, ssoTypeInt},
+               ssoHeaderPrepend:      {sysIP_HDRINCL, ssoTypeInt},
+               ssoJoinGroup:          {sysIP_ADD_MEMBERSHIP, ssoTypeIPMreq},
+               ssoLeaveGroup:         {sysIP_DROP_MEMBERSHIP, ssoTypeIPMreq},
+       }
+)
diff --git a/vendor/golang.org/x/net/ipv4/sys_stub.go b/vendor/golang.org/x/net/ipv4/sys_stub.go
new file mode 100644 (file)
index 0000000..efbcc47
--- /dev/null
@@ -0,0 +1,15 @@
+// Copyright 2014 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.
+
+// +build nacl plan9 solaris
+
+package ipv4
+
+type sysSockoptLen int32
+
+var (
+       ctlOpts = [ctlMax]ctlOpt{}
+
+       sockOpts = [ssoMax]sockOpt{}
+)
diff --git a/vendor/golang.org/x/net/ipv4/sys_windows.go b/vendor/golang.org/x/net/ipv4/sys_windows.go
new file mode 100644 (file)
index 0000000..466489f
--- /dev/null
@@ -0,0 +1,61 @@
+// Copyright 2014 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 ipv4
+
+const (
+       // See ws2tcpip.h.
+       sysIP_OPTIONS                = 0x1
+       sysIP_HDRINCL                = 0x2
+       sysIP_TOS                    = 0x3
+       sysIP_TTL                    = 0x4
+       sysIP_MULTICAST_IF           = 0x9
+       sysIP_MULTICAST_TTL          = 0xa
+       sysIP_MULTICAST_LOOP         = 0xb
+       sysIP_ADD_MEMBERSHIP         = 0xc
+       sysIP_DROP_MEMBERSHIP        = 0xd
+       sysIP_DONTFRAGMENT           = 0xe
+       sysIP_ADD_SOURCE_MEMBERSHIP  = 0xf
+       sysIP_DROP_SOURCE_MEMBERSHIP = 0x10
+       sysIP_PKTINFO                = 0x13
+
+       sysSizeofInetPktinfo  = 0x8
+       sysSizeofIPMreq       = 0x8
+       sysSizeofIPMreqSource = 0xc
+)
+
+type sysInetPktinfo struct {
+       Addr    [4]byte
+       Ifindex int32
+}
+
+type sysIPMreq struct {
+       Multiaddr [4]byte
+       Interface [4]byte
+}
+
+type sysIPMreqSource struct {
+       Multiaddr  [4]byte
+       Sourceaddr [4]byte
+       Interface  [4]byte
+}
+
+// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms738586(v=vs.85).aspx
+var (
+       ctlOpts = [ctlMax]ctlOpt{}
+
+       sockOpts = [ssoMax]sockOpt{
+               ssoTOS:                {sysIP_TOS, ssoTypeInt},
+               ssoTTL:                {sysIP_TTL, ssoTypeInt},
+               ssoMulticastTTL:       {sysIP_MULTICAST_TTL, ssoTypeInt},
+               ssoMulticastInterface: {sysIP_MULTICAST_IF, ssoTypeInterface},
+               ssoMulticastLoopback:  {sysIP_MULTICAST_LOOP, ssoTypeInt},
+               ssoJoinGroup:          {sysIP_ADD_MEMBERSHIP, ssoTypeIPMreq},
+               ssoLeaveGroup:         {sysIP_DROP_MEMBERSHIP, ssoTypeIPMreq},
+       }
+)
+
+func (pi *sysInetPktinfo) setIfindex(i int) {
+       pi.Ifindex = int32(i)
+}
diff --git a/vendor/golang.org/x/net/ipv4/syscall_linux_386.go b/vendor/golang.org/x/net/ipv4/syscall_linux_386.go
new file mode 100644 (file)
index 0000000..ab4ad04
--- /dev/null
@@ -0,0 +1,31 @@
+// Copyright 2014 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 ipv4
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+const (
+       sysGETSOCKOPT = 0xf
+       sysSETSOCKOPT = 0xe
+)
+
+func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno)
+
+func getsockopt(fd, level, name int, v unsafe.Pointer, l *sysSockoptLen) error {
+       if _, errno := socketcall(sysGETSOCKOPT, uintptr(fd), uintptr(level), uintptr(name), uintptr(v), uintptr(unsafe.Pointer(l)), 0); errno != 0 {
+               return error(errno)
+       }
+       return nil
+}
+
+func setsockopt(fd, level, name int, v unsafe.Pointer, l sysSockoptLen) error {
+       if _, errno := socketcall(sysSETSOCKOPT, uintptr(fd), uintptr(level), uintptr(name), uintptr(v), uintptr(l), 0); errno != 0 {
+               return error(errno)
+       }
+       return nil
+}
diff --git a/vendor/golang.org/x/net/ipv4/syscall_unix.go b/vendor/golang.org/x/net/ipv4/syscall_unix.go
new file mode 100644 (file)
index 0000000..5fe8e83
--- /dev/null
@@ -0,0 +1,26 @@
+// Copyright 2014 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.
+
+// +build darwin dragonfly freebsd linux,!386 netbsd openbsd
+
+package ipv4
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+func getsockopt(fd, level, name int, v unsafe.Pointer, l *sysSockoptLen) error {
+       if _, _, errno := syscall.Syscall6(syscall.SYS_GETSOCKOPT, uintptr(fd), uintptr(level), uintptr(name), uintptr(v), uintptr(unsafe.Pointer(l)), 0); errno != 0 {
+               return error(errno)
+       }
+       return nil
+}
+
+func setsockopt(fd, level, name int, v unsafe.Pointer, l sysSockoptLen) error {
+       if _, _, errno := syscall.Syscall6(syscall.SYS_SETSOCKOPT, uintptr(fd), uintptr(level), uintptr(name), uintptr(v), uintptr(l), 0); errno != 0 {
+               return error(errno)
+       }
+       return nil
+}
diff --git a/vendor/golang.org/x/net/ipv4/thunk_linux_386.s b/vendor/golang.org/x/net/ipv4/thunk_linux_386.s
new file mode 100644 (file)
index 0000000..daa78bc
--- /dev/null
@@ -0,0 +1,8 @@
+// Copyright 2014 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.
+
+// +build go1.2
+
+TEXT   ·socketcall(SB),4,$0-36
+       JMP     syscall·socketcall(SB)
diff --git a/vendor/golang.org/x/net/ipv4/zsys_darwin.go b/vendor/golang.org/x/net/ipv4/zsys_darwin.go
new file mode 100644 (file)
index 0000000..087c639
--- /dev/null
@@ -0,0 +1,99 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_darwin.go
+
+package ipv4
+
+const (
+       sysIP_OPTIONS     = 0x1
+       sysIP_HDRINCL     = 0x2
+       sysIP_TOS         = 0x3
+       sysIP_TTL         = 0x4
+       sysIP_RECVOPTS    = 0x5
+       sysIP_RECVRETOPTS = 0x6
+       sysIP_RECVDSTADDR = 0x7
+       sysIP_RETOPTS     = 0x8
+       sysIP_RECVIF      = 0x14
+       sysIP_STRIPHDR    = 0x17
+       sysIP_RECVTTL     = 0x18
+       sysIP_BOUND_IF    = 0x19
+       sysIP_PKTINFO     = 0x1a
+       sysIP_RECVPKTINFO = 0x1a
+
+       sysIP_MULTICAST_IF           = 0x9
+       sysIP_MULTICAST_TTL          = 0xa
+       sysIP_MULTICAST_LOOP         = 0xb
+       sysIP_ADD_MEMBERSHIP         = 0xc
+       sysIP_DROP_MEMBERSHIP        = 0xd
+       sysIP_MULTICAST_VIF          = 0xe
+       sysIP_MULTICAST_IFINDEX      = 0x42
+       sysIP_ADD_SOURCE_MEMBERSHIP  = 0x46
+       sysIP_DROP_SOURCE_MEMBERSHIP = 0x47
+       sysIP_BLOCK_SOURCE           = 0x48
+       sysIP_UNBLOCK_SOURCE         = 0x49
+       sysMCAST_JOIN_GROUP          = 0x50
+       sysMCAST_LEAVE_GROUP         = 0x51
+       sysMCAST_JOIN_SOURCE_GROUP   = 0x52
+       sysMCAST_LEAVE_SOURCE_GROUP  = 0x53
+       sysMCAST_BLOCK_SOURCE        = 0x54
+       sysMCAST_UNBLOCK_SOURCE      = 0x55
+
+       sysSizeofSockaddrStorage = 0x80
+       sysSizeofSockaddrInet    = 0x10
+       sysSizeofInetPktinfo     = 0xc
+
+       sysSizeofIPMreq         = 0x8
+       sysSizeofIPMreqn        = 0xc
+       sysSizeofIPMreqSource   = 0xc
+       sysSizeofGroupReq       = 0x84
+       sysSizeofGroupSourceReq = 0x104
+)
+
+type sysSockaddrStorage struct {
+       Len         uint8
+       Family      uint8
+       X__ss_pad1  [6]int8
+       X__ss_align int64
+       X__ss_pad2  [112]int8
+}
+
+type sysSockaddrInet struct {
+       Len    uint8
+       Family uint8
+       Port   uint16
+       Addr   [4]byte /* in_addr */
+       Zero   [8]int8
+}
+
+type sysInetPktinfo struct {
+       Ifindex  uint32
+       Spec_dst [4]byte /* in_addr */
+       Addr     [4]byte /* in_addr */
+}
+
+type sysIPMreq struct {
+       Multiaddr [4]byte /* in_addr */
+       Interface [4]byte /* in_addr */
+}
+
+type sysIPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
+type sysIPMreqSource struct {
+       Multiaddr  [4]byte /* in_addr */
+       Sourceaddr [4]byte /* in_addr */
+       Interface  [4]byte /* in_addr */
+}
+
+type sysGroupReq struct {
+       Interface uint32
+       Pad_cgo_0 [128]byte
+}
+
+type sysGroupSourceReq struct {
+       Interface uint32
+       Pad_cgo_0 [128]byte
+       Pad_cgo_1 [128]byte
+}
diff --git a/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go b/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go
new file mode 100644 (file)
index 0000000..f5c9cce
--- /dev/null
@@ -0,0 +1,33 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_dragonfly.go
+
+// +build dragonfly
+
+package ipv4
+
+const (
+       sysIP_OPTIONS     = 0x1
+       sysIP_HDRINCL     = 0x2
+       sysIP_TOS         = 0x3
+       sysIP_TTL         = 0x4
+       sysIP_RECVOPTS    = 0x5
+       sysIP_RECVRETOPTS = 0x6
+       sysIP_RECVDSTADDR = 0x7
+       sysIP_RETOPTS     = 0x8
+       sysIP_RECVIF      = 0x14
+       sysIP_RECVTTL     = 0x41
+
+       sysIP_MULTICAST_IF    = 0x9
+       sysIP_MULTICAST_TTL   = 0xa
+       sysIP_MULTICAST_LOOP  = 0xb
+       sysIP_MULTICAST_VIF   = 0xe
+       sysIP_ADD_MEMBERSHIP  = 0xc
+       sysIP_DROP_MEMBERSHIP = 0xd
+
+       sysSizeofIPMreq = 0x8
+)
+
+type sysIPMreq struct {
+       Multiaddr [4]byte /* in_addr */
+       Interface [4]byte /* in_addr */
+}
diff --git a/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go b/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go
new file mode 100644 (file)
index 0000000..6fd67e1
--- /dev/null
@@ -0,0 +1,93 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_freebsd.go
+
+package ipv4
+
+const (
+       sysIP_OPTIONS     = 0x1
+       sysIP_HDRINCL     = 0x2
+       sysIP_TOS         = 0x3
+       sysIP_TTL         = 0x4
+       sysIP_RECVOPTS    = 0x5
+       sysIP_RECVRETOPTS = 0x6
+       sysIP_RECVDSTADDR = 0x7
+       sysIP_SENDSRCADDR = 0x7
+       sysIP_RETOPTS     = 0x8
+       sysIP_RECVIF      = 0x14
+       sysIP_ONESBCAST   = 0x17
+       sysIP_BINDANY     = 0x18
+       sysIP_RECVTTL     = 0x41
+       sysIP_MINTTL      = 0x42
+       sysIP_DONTFRAG    = 0x43
+       sysIP_RECVTOS     = 0x44
+
+       sysIP_MULTICAST_IF           = 0x9
+       sysIP_MULTICAST_TTL          = 0xa
+       sysIP_MULTICAST_LOOP         = 0xb
+       sysIP_ADD_MEMBERSHIP         = 0xc
+       sysIP_DROP_MEMBERSHIP        = 0xd
+       sysIP_MULTICAST_VIF          = 0xe
+       sysIP_ADD_SOURCE_MEMBERSHIP  = 0x46
+       sysIP_DROP_SOURCE_MEMBERSHIP = 0x47
+       sysIP_BLOCK_SOURCE           = 0x48
+       sysIP_UNBLOCK_SOURCE         = 0x49
+       sysMCAST_JOIN_GROUP          = 0x50
+       sysMCAST_LEAVE_GROUP         = 0x51
+       sysMCAST_JOIN_SOURCE_GROUP   = 0x52
+       sysMCAST_LEAVE_SOURCE_GROUP  = 0x53
+       sysMCAST_BLOCK_SOURCE        = 0x54
+       sysMCAST_UNBLOCK_SOURCE      = 0x55
+
+       sysSizeofSockaddrStorage = 0x80
+       sysSizeofSockaddrInet    = 0x10
+
+       sysSizeofIPMreq         = 0x8
+       sysSizeofIPMreqn        = 0xc
+       sysSizeofIPMreqSource   = 0xc
+       sysSizeofGroupReq       = 0x84
+       sysSizeofGroupSourceReq = 0x104
+)
+
+type sysSockaddrStorage struct {
+       Len         uint8
+       Family      uint8
+       X__ss_pad1  [6]int8
+       X__ss_align int64
+       X__ss_pad2  [112]int8
+}
+
+type sysSockaddrInet struct {
+       Len    uint8
+       Family uint8
+       Port   uint16
+       Addr   [4]byte /* in_addr */
+       Zero   [8]int8
+}
+
+type sysIPMreq struct {
+       Multiaddr [4]byte /* in_addr */
+       Interface [4]byte /* in_addr */
+}
+
+type sysIPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
+type sysIPMreqSource struct {
+       Multiaddr  [4]byte /* in_addr */
+       Sourceaddr [4]byte /* in_addr */
+       Interface  [4]byte /* in_addr */
+}
+
+type sysGroupReq struct {
+       Interface uint32
+       Group     sysSockaddrStorage
+}
+
+type sysGroupSourceReq struct {
+       Interface uint32
+       Group     sysSockaddrStorage
+       Source    sysSockaddrStorage
+}
diff --git a/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go b/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go
new file mode 100644 (file)
index 0000000..ebac6d7
--- /dev/null
@@ -0,0 +1,95 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_freebsd.go
+
+package ipv4
+
+const (
+       sysIP_OPTIONS     = 0x1
+       sysIP_HDRINCL     = 0x2
+       sysIP_TOS         = 0x3
+       sysIP_TTL         = 0x4
+       sysIP_RECVOPTS    = 0x5
+       sysIP_RECVRETOPTS = 0x6
+       sysIP_RECVDSTADDR = 0x7
+       sysIP_SENDSRCADDR = 0x7
+       sysIP_RETOPTS     = 0x8
+       sysIP_RECVIF      = 0x14
+       sysIP_ONESBCAST   = 0x17
+       sysIP_BINDANY     = 0x18
+       sysIP_RECVTTL     = 0x41
+       sysIP_MINTTL      = 0x42
+       sysIP_DONTFRAG    = 0x43
+       sysIP_RECVTOS     = 0x44
+
+       sysIP_MULTICAST_IF           = 0x9
+       sysIP_MULTICAST_TTL          = 0xa
+       sysIP_MULTICAST_LOOP         = 0xb
+       sysIP_ADD_MEMBERSHIP         = 0xc
+       sysIP_DROP_MEMBERSHIP        = 0xd
+       sysIP_MULTICAST_VIF          = 0xe
+       sysIP_ADD_SOURCE_MEMBERSHIP  = 0x46
+       sysIP_DROP_SOURCE_MEMBERSHIP = 0x47
+       sysIP_BLOCK_SOURCE           = 0x48
+       sysIP_UNBLOCK_SOURCE         = 0x49
+       sysMCAST_JOIN_GROUP          = 0x50
+       sysMCAST_LEAVE_GROUP         = 0x51
+       sysMCAST_JOIN_SOURCE_GROUP   = 0x52
+       sysMCAST_LEAVE_SOURCE_GROUP  = 0x53
+       sysMCAST_BLOCK_SOURCE        = 0x54
+       sysMCAST_UNBLOCK_SOURCE      = 0x55
+
+       sysSizeofSockaddrStorage = 0x80
+       sysSizeofSockaddrInet    = 0x10
+
+       sysSizeofIPMreq         = 0x8
+       sysSizeofIPMreqn        = 0xc
+       sysSizeofIPMreqSource   = 0xc
+       sysSizeofGroupReq       = 0x88
+       sysSizeofGroupSourceReq = 0x108
+)
+
+type sysSockaddrStorage struct {
+       Len         uint8
+       Family      uint8
+       X__ss_pad1  [6]int8
+       X__ss_align int64
+       X__ss_pad2  [112]int8
+}
+
+type sysSockaddrInet struct {
+       Len    uint8
+       Family uint8
+       Port   uint16
+       Addr   [4]byte /* in_addr */
+       Zero   [8]int8
+}
+
+type sysIPMreq struct {
+       Multiaddr [4]byte /* in_addr */
+       Interface [4]byte /* in_addr */
+}
+
+type sysIPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
+type sysIPMreqSource struct {
+       Multiaddr  [4]byte /* in_addr */
+       Sourceaddr [4]byte /* in_addr */
+       Interface  [4]byte /* in_addr */
+}
+
+type sysGroupReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysSockaddrStorage
+}
+
+type sysGroupSourceReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysSockaddrStorage
+       Source    sysSockaddrStorage
+}
diff --git a/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go b/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go
new file mode 100644 (file)
index 0000000..ebac6d7
--- /dev/null
@@ -0,0 +1,95 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_freebsd.go
+
+package ipv4
+
+const (
+       sysIP_OPTIONS     = 0x1
+       sysIP_HDRINCL     = 0x2
+       sysIP_TOS         = 0x3
+       sysIP_TTL         = 0x4
+       sysIP_RECVOPTS    = 0x5
+       sysIP_RECVRETOPTS = 0x6
+       sysIP_RECVDSTADDR = 0x7
+       sysIP_SENDSRCADDR = 0x7
+       sysIP_RETOPTS     = 0x8
+       sysIP_RECVIF      = 0x14
+       sysIP_ONESBCAST   = 0x17
+       sysIP_BINDANY     = 0x18
+       sysIP_RECVTTL     = 0x41
+       sysIP_MINTTL      = 0x42
+       sysIP_DONTFRAG    = 0x43
+       sysIP_RECVTOS     = 0x44
+
+       sysIP_MULTICAST_IF           = 0x9
+       sysIP_MULTICAST_TTL          = 0xa
+       sysIP_MULTICAST_LOOP         = 0xb
+       sysIP_ADD_MEMBERSHIP         = 0xc
+       sysIP_DROP_MEMBERSHIP        = 0xd
+       sysIP_MULTICAST_VIF          = 0xe
+       sysIP_ADD_SOURCE_MEMBERSHIP  = 0x46
+       sysIP_DROP_SOURCE_MEMBERSHIP = 0x47
+       sysIP_BLOCK_SOURCE           = 0x48
+       sysIP_UNBLOCK_SOURCE         = 0x49
+       sysMCAST_JOIN_GROUP          = 0x50
+       sysMCAST_LEAVE_GROUP         = 0x51
+       sysMCAST_JOIN_SOURCE_GROUP   = 0x52
+       sysMCAST_LEAVE_SOURCE_GROUP  = 0x53
+       sysMCAST_BLOCK_SOURCE        = 0x54
+       sysMCAST_UNBLOCK_SOURCE      = 0x55
+
+       sysSizeofSockaddrStorage = 0x80
+       sysSizeofSockaddrInet    = 0x10
+
+       sysSizeofIPMreq         = 0x8
+       sysSizeofIPMreqn        = 0xc
+       sysSizeofIPMreqSource   = 0xc
+       sysSizeofGroupReq       = 0x88
+       sysSizeofGroupSourceReq = 0x108
+)
+
+type sysSockaddrStorage struct {
+       Len         uint8
+       Family      uint8
+       X__ss_pad1  [6]int8
+       X__ss_align int64
+       X__ss_pad2  [112]int8
+}
+
+type sysSockaddrInet struct {
+       Len    uint8
+       Family uint8
+       Port   uint16
+       Addr   [4]byte /* in_addr */
+       Zero   [8]int8
+}
+
+type sysIPMreq struct {
+       Multiaddr [4]byte /* in_addr */
+       Interface [4]byte /* in_addr */
+}
+
+type sysIPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
+type sysIPMreqSource struct {
+       Multiaddr  [4]byte /* in_addr */
+       Sourceaddr [4]byte /* in_addr */
+       Interface  [4]byte /* in_addr */
+}
+
+type sysGroupReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysSockaddrStorage
+}
+
+type sysGroupSourceReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysSockaddrStorage
+       Source    sysSockaddrStorage
+}
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_386.go b/vendor/golang.org/x/net/ipv4/zsys_linux_386.go
new file mode 100644 (file)
index 0000000..fc7a9eb
--- /dev/null
@@ -0,0 +1,130 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+package ipv4
+
+const (
+       sysIP_TOS             = 0x1
+       sysIP_TTL             = 0x2
+       sysIP_HDRINCL         = 0x3
+       sysIP_OPTIONS         = 0x4
+       sysIP_ROUTER_ALERT    = 0x5
+       sysIP_RECVOPTS        = 0x6
+       sysIP_RETOPTS         = 0x7
+       sysIP_PKTINFO         = 0x8
+       sysIP_PKTOPTIONS      = 0x9
+       sysIP_MTU_DISCOVER    = 0xa
+       sysIP_RECVERR         = 0xb
+       sysIP_RECVTTL         = 0xc
+       sysIP_RECVTOS         = 0xd
+       sysIP_MTU             = 0xe
+       sysIP_FREEBIND        = 0xf
+       sysIP_TRANSPARENT     = 0x13
+       sysIP_RECVRETOPTS     = 0x7
+       sysIP_ORIGDSTADDR     = 0x14
+       sysIP_RECVORIGDSTADDR = 0x14
+       sysIP_MINTTL          = 0x15
+       sysIP_NODEFRAG        = 0x16
+       sysIP_UNICAST_IF      = 0x32
+
+       sysIP_MULTICAST_IF           = 0x20
+       sysIP_MULTICAST_TTL          = 0x21
+       sysIP_MULTICAST_LOOP         = 0x22
+       sysIP_ADD_MEMBERSHIP         = 0x23
+       sysIP_DROP_MEMBERSHIP        = 0x24
+       sysIP_UNBLOCK_SOURCE         = 0x25
+       sysIP_BLOCK_SOURCE           = 0x26
+       sysIP_ADD_SOURCE_MEMBERSHIP  = 0x27
+       sysIP_DROP_SOURCE_MEMBERSHIP = 0x28
+       sysIP_MSFILTER               = 0x29
+       sysMCAST_JOIN_GROUP          = 0x2a
+       sysMCAST_LEAVE_GROUP         = 0x2d
+       sysMCAST_JOIN_SOURCE_GROUP   = 0x2e
+       sysMCAST_LEAVE_SOURCE_GROUP  = 0x2f
+       sysMCAST_BLOCK_SOURCE        = 0x2b
+       sysMCAST_UNBLOCK_SOURCE      = 0x2c
+       sysMCAST_MSFILTER            = 0x30
+       sysIP_MULTICAST_ALL          = 0x31
+
+       sysICMP_FILTER = 0x1
+
+       sysSO_EE_ORIGIN_NONE         = 0x0
+       sysSO_EE_ORIGIN_LOCAL        = 0x1
+       sysSO_EE_ORIGIN_ICMP         = 0x2
+       sysSO_EE_ORIGIN_ICMP6        = 0x3
+       sysSO_EE_ORIGIN_TXSTATUS     = 0x4
+       sysSO_EE_ORIGIN_TIMESTAMPING = 0x4
+
+       sysSizeofKernelSockaddrStorage = 0x80
+       sysSizeofSockaddrInet          = 0x10
+       sysSizeofInetPktinfo           = 0xc
+       sysSizeofSockExtendedErr       = 0x10
+
+       sysSizeofIPMreq         = 0x8
+       sysSizeofIPMreqn        = 0xc
+       sysSizeofIPMreqSource   = 0xc
+       sysSizeofGroupReq       = 0x84
+       sysSizeofGroupSourceReq = 0x104
+
+       sysSizeofICMPFilter = 0x4
+)
+
+type sysKernelSockaddrStorage struct {
+       Family  uint16
+       X__data [126]int8
+}
+
+type sysSockaddrInet struct {
+       Family uint16
+       Port   uint16
+       Addr   [4]byte /* in_addr */
+       X__pad [8]uint8
+}
+
+type sysInetPktinfo struct {
+       Ifindex  int32
+       Spec_dst [4]byte /* in_addr */
+       Addr     [4]byte /* in_addr */
+}
+
+type sysSockExtendedErr struct {
+       Errno  uint32
+       Origin uint8
+       Type   uint8
+       Code   uint8
+       Pad    uint8
+       Info   uint32
+       Data   uint32
+}
+
+type sysIPMreq struct {
+       Multiaddr [4]byte /* in_addr */
+       Interface [4]byte /* in_addr */
+}
+
+type sysIPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
+type sysIPMreqSource struct {
+       Multiaddr  uint32
+       Interface  uint32
+       Sourceaddr uint32
+}
+
+type sysGroupReq struct {
+       Interface uint32
+       Group     sysKernelSockaddrStorage
+}
+
+type sysGroupSourceReq struct {
+       Interface uint32
+       Group     sysKernelSockaddrStorage
+       Source    sysKernelSockaddrStorage
+}
+
+type sysICMPFilter struct {
+       Data uint32
+}
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go
new file mode 100644 (file)
index 0000000..e324b81
--- /dev/null
@@ -0,0 +1,132 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+package ipv4
+
+const (
+       sysIP_TOS             = 0x1
+       sysIP_TTL             = 0x2
+       sysIP_HDRINCL         = 0x3
+       sysIP_OPTIONS         = 0x4
+       sysIP_ROUTER_ALERT    = 0x5
+       sysIP_RECVOPTS        = 0x6
+       sysIP_RETOPTS         = 0x7
+       sysIP_PKTINFO         = 0x8
+       sysIP_PKTOPTIONS      = 0x9
+       sysIP_MTU_DISCOVER    = 0xa
+       sysIP_RECVERR         = 0xb
+       sysIP_RECVTTL         = 0xc
+       sysIP_RECVTOS         = 0xd
+       sysIP_MTU             = 0xe
+       sysIP_FREEBIND        = 0xf
+       sysIP_TRANSPARENT     = 0x13
+       sysIP_RECVRETOPTS     = 0x7
+       sysIP_ORIGDSTADDR     = 0x14
+       sysIP_RECVORIGDSTADDR = 0x14
+       sysIP_MINTTL          = 0x15
+       sysIP_NODEFRAG        = 0x16
+       sysIP_UNICAST_IF      = 0x32
+
+       sysIP_MULTICAST_IF           = 0x20
+       sysIP_MULTICAST_TTL          = 0x21
+       sysIP_MULTICAST_LOOP         = 0x22
+       sysIP_ADD_MEMBERSHIP         = 0x23
+       sysIP_DROP_MEMBERSHIP        = 0x24
+       sysIP_UNBLOCK_SOURCE         = 0x25
+       sysIP_BLOCK_SOURCE           = 0x26
+       sysIP_ADD_SOURCE_MEMBERSHIP  = 0x27
+       sysIP_DROP_SOURCE_MEMBERSHIP = 0x28
+       sysIP_MSFILTER               = 0x29
+       sysMCAST_JOIN_GROUP          = 0x2a
+       sysMCAST_LEAVE_GROUP         = 0x2d
+       sysMCAST_JOIN_SOURCE_GROUP   = 0x2e
+       sysMCAST_LEAVE_SOURCE_GROUP  = 0x2f
+       sysMCAST_BLOCK_SOURCE        = 0x2b
+       sysMCAST_UNBLOCK_SOURCE      = 0x2c
+       sysMCAST_MSFILTER            = 0x30
+       sysIP_MULTICAST_ALL          = 0x31
+
+       sysICMP_FILTER = 0x1
+
+       sysSO_EE_ORIGIN_NONE         = 0x0
+       sysSO_EE_ORIGIN_LOCAL        = 0x1
+       sysSO_EE_ORIGIN_ICMP         = 0x2
+       sysSO_EE_ORIGIN_ICMP6        = 0x3
+       sysSO_EE_ORIGIN_TXSTATUS     = 0x4
+       sysSO_EE_ORIGIN_TIMESTAMPING = 0x4
+
+       sysSizeofKernelSockaddrStorage = 0x80
+       sysSizeofSockaddrInet          = 0x10
+       sysSizeofInetPktinfo           = 0xc
+       sysSizeofSockExtendedErr       = 0x10
+
+       sysSizeofIPMreq         = 0x8
+       sysSizeofIPMreqn        = 0xc
+       sysSizeofIPMreqSource   = 0xc
+       sysSizeofGroupReq       = 0x88
+       sysSizeofGroupSourceReq = 0x108
+
+       sysSizeofICMPFilter = 0x4
+)
+
+type sysKernelSockaddrStorage struct {
+       Family  uint16
+       X__data [126]int8
+}
+
+type sysSockaddrInet struct {
+       Family uint16
+       Port   uint16
+       Addr   [4]byte /* in_addr */
+       X__pad [8]uint8
+}
+
+type sysInetPktinfo struct {
+       Ifindex  int32
+       Spec_dst [4]byte /* in_addr */
+       Addr     [4]byte /* in_addr */
+}
+
+type sysSockExtendedErr struct {
+       Errno  uint32
+       Origin uint8
+       Type   uint8
+       Code   uint8
+       Pad    uint8
+       Info   uint32
+       Data   uint32
+}
+
+type sysIPMreq struct {
+       Multiaddr [4]byte /* in_addr */
+       Interface [4]byte /* in_addr */
+}
+
+type sysIPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
+type sysIPMreqSource struct {
+       Multiaddr  uint32
+       Interface  uint32
+       Sourceaddr uint32
+}
+
+type sysGroupReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysKernelSockaddrStorage
+}
+
+type sysGroupSourceReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysKernelSockaddrStorage
+       Source    sysKernelSockaddrStorage
+}
+
+type sysICMPFilter struct {
+       Data uint32
+}
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go b/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go
new file mode 100644 (file)
index 0000000..fc7a9eb
--- /dev/null
@@ -0,0 +1,130 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+package ipv4
+
+const (
+       sysIP_TOS             = 0x1
+       sysIP_TTL             = 0x2
+       sysIP_HDRINCL         = 0x3
+       sysIP_OPTIONS         = 0x4
+       sysIP_ROUTER_ALERT    = 0x5
+       sysIP_RECVOPTS        = 0x6
+       sysIP_RETOPTS         = 0x7
+       sysIP_PKTINFO         = 0x8
+       sysIP_PKTOPTIONS      = 0x9
+       sysIP_MTU_DISCOVER    = 0xa
+       sysIP_RECVERR         = 0xb
+       sysIP_RECVTTL         = 0xc
+       sysIP_RECVTOS         = 0xd
+       sysIP_MTU             = 0xe
+       sysIP_FREEBIND        = 0xf
+       sysIP_TRANSPARENT     = 0x13
+       sysIP_RECVRETOPTS     = 0x7
+       sysIP_ORIGDSTADDR     = 0x14
+       sysIP_RECVORIGDSTADDR = 0x14
+       sysIP_MINTTL          = 0x15
+       sysIP_NODEFRAG        = 0x16
+       sysIP_UNICAST_IF      = 0x32
+
+       sysIP_MULTICAST_IF           = 0x20
+       sysIP_MULTICAST_TTL          = 0x21
+       sysIP_MULTICAST_LOOP         = 0x22
+       sysIP_ADD_MEMBERSHIP         = 0x23
+       sysIP_DROP_MEMBERSHIP        = 0x24
+       sysIP_UNBLOCK_SOURCE         = 0x25
+       sysIP_BLOCK_SOURCE           = 0x26
+       sysIP_ADD_SOURCE_MEMBERSHIP  = 0x27
+       sysIP_DROP_SOURCE_MEMBERSHIP = 0x28
+       sysIP_MSFILTER               = 0x29
+       sysMCAST_JOIN_GROUP          = 0x2a
+       sysMCAST_LEAVE_GROUP         = 0x2d
+       sysMCAST_JOIN_SOURCE_GROUP   = 0x2e
+       sysMCAST_LEAVE_SOURCE_GROUP  = 0x2f
+       sysMCAST_BLOCK_SOURCE        = 0x2b
+       sysMCAST_UNBLOCK_SOURCE      = 0x2c
+       sysMCAST_MSFILTER            = 0x30
+       sysIP_MULTICAST_ALL          = 0x31
+
+       sysICMP_FILTER = 0x1
+
+       sysSO_EE_ORIGIN_NONE         = 0x0
+       sysSO_EE_ORIGIN_LOCAL        = 0x1
+       sysSO_EE_ORIGIN_ICMP         = 0x2
+       sysSO_EE_ORIGIN_ICMP6        = 0x3
+       sysSO_EE_ORIGIN_TXSTATUS     = 0x4
+       sysSO_EE_ORIGIN_TIMESTAMPING = 0x4
+
+       sysSizeofKernelSockaddrStorage = 0x80
+       sysSizeofSockaddrInet          = 0x10
+       sysSizeofInetPktinfo           = 0xc
+       sysSizeofSockExtendedErr       = 0x10
+
+       sysSizeofIPMreq         = 0x8
+       sysSizeofIPMreqn        = 0xc
+       sysSizeofIPMreqSource   = 0xc
+       sysSizeofGroupReq       = 0x84
+       sysSizeofGroupSourceReq = 0x104
+
+       sysSizeofICMPFilter = 0x4
+)
+
+type sysKernelSockaddrStorage struct {
+       Family  uint16
+       X__data [126]int8
+}
+
+type sysSockaddrInet struct {
+       Family uint16
+       Port   uint16
+       Addr   [4]byte /* in_addr */
+       X__pad [8]uint8
+}
+
+type sysInetPktinfo struct {
+       Ifindex  int32
+       Spec_dst [4]byte /* in_addr */
+       Addr     [4]byte /* in_addr */
+}
+
+type sysSockExtendedErr struct {
+       Errno  uint32
+       Origin uint8
+       Type   uint8
+       Code   uint8
+       Pad    uint8
+       Info   uint32
+       Data   uint32
+}
+
+type sysIPMreq struct {
+       Multiaddr [4]byte /* in_addr */
+       Interface [4]byte /* in_addr */
+}
+
+type sysIPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
+type sysIPMreqSource struct {
+       Multiaddr  uint32
+       Interface  uint32
+       Sourceaddr uint32
+}
+
+type sysGroupReq struct {
+       Interface uint32
+       Group     sysKernelSockaddrStorage
+}
+
+type sysGroupSourceReq struct {
+       Interface uint32
+       Group     sysKernelSockaddrStorage
+       Source    sysKernelSockaddrStorage
+}
+
+type sysICMPFilter struct {
+       Data uint32
+}
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go
new file mode 100644 (file)
index 0000000..ce4194a
--- /dev/null
@@ -0,0 +1,134 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+// +build linux,arm64
+
+package ipv4
+
+const (
+       sysIP_TOS             = 0x1
+       sysIP_TTL             = 0x2
+       sysIP_HDRINCL         = 0x3
+       sysIP_OPTIONS         = 0x4
+       sysIP_ROUTER_ALERT    = 0x5
+       sysIP_RECVOPTS        = 0x6
+       sysIP_RETOPTS         = 0x7
+       sysIP_PKTINFO         = 0x8
+       sysIP_PKTOPTIONS      = 0x9
+       sysIP_MTU_DISCOVER    = 0xa
+       sysIP_RECVERR         = 0xb
+       sysIP_RECVTTL         = 0xc
+       sysIP_RECVTOS         = 0xd
+       sysIP_MTU             = 0xe
+       sysIP_FREEBIND        = 0xf
+       sysIP_TRANSPARENT     = 0x13
+       sysIP_RECVRETOPTS     = 0x7
+       sysIP_ORIGDSTADDR     = 0x14
+       sysIP_RECVORIGDSTADDR = 0x14
+       sysIP_MINTTL          = 0x15
+       sysIP_NODEFRAG        = 0x16
+       sysIP_UNICAST_IF      = 0x32
+
+       sysIP_MULTICAST_IF           = 0x20
+       sysIP_MULTICAST_TTL          = 0x21
+       sysIP_MULTICAST_LOOP         = 0x22
+       sysIP_ADD_MEMBERSHIP         = 0x23
+       sysIP_DROP_MEMBERSHIP        = 0x24
+       sysIP_UNBLOCK_SOURCE         = 0x25
+       sysIP_BLOCK_SOURCE           = 0x26
+       sysIP_ADD_SOURCE_MEMBERSHIP  = 0x27
+       sysIP_DROP_SOURCE_MEMBERSHIP = 0x28
+       sysIP_MSFILTER               = 0x29
+       sysMCAST_JOIN_GROUP          = 0x2a
+       sysMCAST_LEAVE_GROUP         = 0x2d
+       sysMCAST_JOIN_SOURCE_GROUP   = 0x2e
+       sysMCAST_LEAVE_SOURCE_GROUP  = 0x2f
+       sysMCAST_BLOCK_SOURCE        = 0x2b
+       sysMCAST_UNBLOCK_SOURCE      = 0x2c
+       sysMCAST_MSFILTER            = 0x30
+       sysIP_MULTICAST_ALL          = 0x31
+
+       sysICMP_FILTER = 0x1
+
+       sysSO_EE_ORIGIN_NONE         = 0x0
+       sysSO_EE_ORIGIN_LOCAL        = 0x1
+       sysSO_EE_ORIGIN_ICMP         = 0x2
+       sysSO_EE_ORIGIN_ICMP6        = 0x3
+       sysSO_EE_ORIGIN_TXSTATUS     = 0x4
+       sysSO_EE_ORIGIN_TIMESTAMPING = 0x4
+
+       sysSizeofKernelSockaddrStorage = 0x80
+       sysSizeofSockaddrInet          = 0x10
+       sysSizeofInetPktinfo           = 0xc
+       sysSizeofSockExtendedErr       = 0x10
+
+       sysSizeofIPMreq         = 0x8
+       sysSizeofIPMreqn        = 0xc
+       sysSizeofIPMreqSource   = 0xc
+       sysSizeofGroupReq       = 0x88
+       sysSizeofGroupSourceReq = 0x108
+
+       sysSizeofICMPFilter = 0x4
+)
+
+type sysKernelSockaddrStorage struct {
+       Family  uint16
+       X__data [126]int8
+}
+
+type sysSockaddrInet struct {
+       Family uint16
+       Port   uint16
+       Addr   [4]byte /* in_addr */
+       X__pad [8]uint8
+}
+
+type sysInetPktinfo struct {
+       Ifindex  int32
+       Spec_dst [4]byte /* in_addr */
+       Addr     [4]byte /* in_addr */
+}
+
+type sysSockExtendedErr struct {
+       Errno  uint32
+       Origin uint8
+       Type   uint8
+       Code   uint8
+       Pad    uint8
+       Info   uint32
+       Data   uint32
+}
+
+type sysIPMreq struct {
+       Multiaddr [4]byte /* in_addr */
+       Interface [4]byte /* in_addr */
+}
+
+type sysIPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
+type sysIPMreqSource struct {
+       Multiaddr  uint32
+       Interface  uint32
+       Sourceaddr uint32
+}
+
+type sysGroupReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysKernelSockaddrStorage
+}
+
+type sysGroupSourceReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysKernelSockaddrStorage
+       Source    sysKernelSockaddrStorage
+}
+
+type sysICMPFilter struct {
+       Data uint32
+}
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go
new file mode 100644 (file)
index 0000000..94116bf
--- /dev/null
@@ -0,0 +1,134 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+// +build linux,mips64
+
+package ipv4
+
+const (
+       sysIP_TOS             = 0x1
+       sysIP_TTL             = 0x2
+       sysIP_HDRINCL         = 0x3
+       sysIP_OPTIONS         = 0x4
+       sysIP_ROUTER_ALERT    = 0x5
+       sysIP_RECVOPTS        = 0x6
+       sysIP_RETOPTS         = 0x7
+       sysIP_PKTINFO         = 0x8
+       sysIP_PKTOPTIONS      = 0x9
+       sysIP_MTU_DISCOVER    = 0xa
+       sysIP_RECVERR         = 0xb
+       sysIP_RECVTTL         = 0xc
+       sysIP_RECVTOS         = 0xd
+       sysIP_MTU             = 0xe
+       sysIP_FREEBIND        = 0xf
+       sysIP_TRANSPARENT     = 0x13
+       sysIP_RECVRETOPTS     = 0x7
+       sysIP_ORIGDSTADDR     = 0x14
+       sysIP_RECVORIGDSTADDR = 0x14
+       sysIP_MINTTL          = 0x15
+       sysIP_NODEFRAG        = 0x16
+       sysIP_UNICAST_IF      = 0x32
+
+       sysIP_MULTICAST_IF           = 0x20
+       sysIP_MULTICAST_TTL          = 0x21
+       sysIP_MULTICAST_LOOP         = 0x22
+       sysIP_ADD_MEMBERSHIP         = 0x23
+       sysIP_DROP_MEMBERSHIP        = 0x24
+       sysIP_UNBLOCK_SOURCE         = 0x25
+       sysIP_BLOCK_SOURCE           = 0x26
+       sysIP_ADD_SOURCE_MEMBERSHIP  = 0x27
+       sysIP_DROP_SOURCE_MEMBERSHIP = 0x28
+       sysIP_MSFILTER               = 0x29
+       sysMCAST_JOIN_GROUP          = 0x2a
+       sysMCAST_LEAVE_GROUP         = 0x2d
+       sysMCAST_JOIN_SOURCE_GROUP   = 0x2e
+       sysMCAST_LEAVE_SOURCE_GROUP  = 0x2f
+       sysMCAST_BLOCK_SOURCE        = 0x2b
+       sysMCAST_UNBLOCK_SOURCE      = 0x2c
+       sysMCAST_MSFILTER            = 0x30
+       sysIP_MULTICAST_ALL          = 0x31
+
+       sysICMP_FILTER = 0x1
+
+       sysSO_EE_ORIGIN_NONE         = 0x0
+       sysSO_EE_ORIGIN_LOCAL        = 0x1
+       sysSO_EE_ORIGIN_ICMP         = 0x2
+       sysSO_EE_ORIGIN_ICMP6        = 0x3
+       sysSO_EE_ORIGIN_TXSTATUS     = 0x4
+       sysSO_EE_ORIGIN_TIMESTAMPING = 0x4
+
+       sysSizeofKernelSockaddrStorage = 0x80
+       sysSizeofSockaddrInet          = 0x10
+       sysSizeofInetPktinfo           = 0xc
+       sysSizeofSockExtendedErr       = 0x10
+
+       sysSizeofIPMreq         = 0x8
+       sysSizeofIPMreqn        = 0xc
+       sysSizeofIPMreqSource   = 0xc
+       sysSizeofGroupReq       = 0x88
+       sysSizeofGroupSourceReq = 0x108
+
+       sysSizeofICMPFilter = 0x4
+)
+
+type sysKernelSockaddrStorage struct {
+       Family  uint16
+       X__data [126]int8
+}
+
+type sysSockaddrInet struct {
+       Family uint16
+       Port   uint16
+       Addr   [4]byte /* in_addr */
+       X__pad [8]uint8
+}
+
+type sysInetPktinfo struct {
+       Ifindex  int32
+       Spec_dst [4]byte /* in_addr */
+       Addr     [4]byte /* in_addr */
+}
+
+type sysSockExtendedErr struct {
+       Errno  uint32
+       Origin uint8
+       Type   uint8
+       Code   uint8
+       Pad    uint8
+       Info   uint32
+       Data   uint32
+}
+
+type sysIPMreq struct {
+       Multiaddr [4]byte /* in_addr */
+       Interface [4]byte /* in_addr */
+}
+
+type sysIPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
+type sysIPMreqSource struct {
+       Multiaddr  uint32
+       Interface  uint32
+       Sourceaddr uint32
+}
+
+type sysGroupReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysKernelSockaddrStorage
+}
+
+type sysGroupSourceReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysKernelSockaddrStorage
+       Source    sysKernelSockaddrStorage
+}
+
+type sysICMPFilter struct {
+       Data uint32
+}
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go
new file mode 100644 (file)
index 0000000..698d7db
--- /dev/null
@@ -0,0 +1,134 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+// +build linux,mips64le
+
+package ipv4
+
+const (
+       sysIP_TOS             = 0x1
+       sysIP_TTL             = 0x2
+       sysIP_HDRINCL         = 0x3
+       sysIP_OPTIONS         = 0x4
+       sysIP_ROUTER_ALERT    = 0x5
+       sysIP_RECVOPTS        = 0x6
+       sysIP_RETOPTS         = 0x7
+       sysIP_PKTINFO         = 0x8
+       sysIP_PKTOPTIONS      = 0x9
+       sysIP_MTU_DISCOVER    = 0xa
+       sysIP_RECVERR         = 0xb
+       sysIP_RECVTTL         = 0xc
+       sysIP_RECVTOS         = 0xd
+       sysIP_MTU             = 0xe
+       sysIP_FREEBIND        = 0xf
+       sysIP_TRANSPARENT     = 0x13
+       sysIP_RECVRETOPTS     = 0x7
+       sysIP_ORIGDSTADDR     = 0x14
+       sysIP_RECVORIGDSTADDR = 0x14
+       sysIP_MINTTL          = 0x15
+       sysIP_NODEFRAG        = 0x16
+       sysIP_UNICAST_IF      = 0x32
+
+       sysIP_MULTICAST_IF           = 0x20
+       sysIP_MULTICAST_TTL          = 0x21
+       sysIP_MULTICAST_LOOP         = 0x22
+       sysIP_ADD_MEMBERSHIP         = 0x23
+       sysIP_DROP_MEMBERSHIP        = 0x24
+       sysIP_UNBLOCK_SOURCE         = 0x25
+       sysIP_BLOCK_SOURCE           = 0x26
+       sysIP_ADD_SOURCE_MEMBERSHIP  = 0x27
+       sysIP_DROP_SOURCE_MEMBERSHIP = 0x28
+       sysIP_MSFILTER               = 0x29
+       sysMCAST_JOIN_GROUP          = 0x2a
+       sysMCAST_LEAVE_GROUP         = 0x2d
+       sysMCAST_JOIN_SOURCE_GROUP   = 0x2e
+       sysMCAST_LEAVE_SOURCE_GROUP  = 0x2f
+       sysMCAST_BLOCK_SOURCE        = 0x2b
+       sysMCAST_UNBLOCK_SOURCE      = 0x2c
+       sysMCAST_MSFILTER            = 0x30
+       sysIP_MULTICAST_ALL          = 0x31
+
+       sysICMP_FILTER = 0x1
+
+       sysSO_EE_ORIGIN_NONE         = 0x0
+       sysSO_EE_ORIGIN_LOCAL        = 0x1
+       sysSO_EE_ORIGIN_ICMP         = 0x2
+       sysSO_EE_ORIGIN_ICMP6        = 0x3
+       sysSO_EE_ORIGIN_TXSTATUS     = 0x4
+       sysSO_EE_ORIGIN_TIMESTAMPING = 0x4
+
+       sysSizeofKernelSockaddrStorage = 0x80
+       sysSizeofSockaddrInet          = 0x10
+       sysSizeofInetPktinfo           = 0xc
+       sysSizeofSockExtendedErr       = 0x10
+
+       sysSizeofIPMreq         = 0x8
+       sysSizeofIPMreqn        = 0xc
+       sysSizeofIPMreqSource   = 0xc
+       sysSizeofGroupReq       = 0x88
+       sysSizeofGroupSourceReq = 0x108
+
+       sysSizeofICMPFilter = 0x4
+)
+
+type sysKernelSockaddrStorage struct {
+       Family  uint16
+       X__data [126]int8
+}
+
+type sysSockaddrInet struct {
+       Family uint16
+       Port   uint16
+       Addr   [4]byte /* in_addr */
+       X__pad [8]uint8
+}
+
+type sysInetPktinfo struct {
+       Ifindex  int32
+       Spec_dst [4]byte /* in_addr */
+       Addr     [4]byte /* in_addr */
+}
+
+type sysSockExtendedErr struct {
+       Errno  uint32
+       Origin uint8
+       Type   uint8
+       Code   uint8
+       Pad    uint8
+       Info   uint32
+       Data   uint32
+}
+
+type sysIPMreq struct {
+       Multiaddr [4]byte /* in_addr */
+       Interface [4]byte /* in_addr */
+}
+
+type sysIPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
+type sysIPMreqSource struct {
+       Multiaddr  uint32
+       Interface  uint32
+       Sourceaddr uint32
+}
+
+type sysGroupReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysKernelSockaddrStorage
+}
+
+type sysGroupSourceReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysKernelSockaddrStorage
+       Source    sysKernelSockaddrStorage
+}
+
+type sysICMPFilter struct {
+       Data uint32
+}
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go
new file mode 100644 (file)
index 0000000..9fe5ee2
--- /dev/null
@@ -0,0 +1,134 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+// +build linux,ppc64
+
+package ipv4
+
+const (
+       sysIP_TOS             = 0x1
+       sysIP_TTL             = 0x2
+       sysIP_HDRINCL         = 0x3
+       sysIP_OPTIONS         = 0x4
+       sysIP_ROUTER_ALERT    = 0x5
+       sysIP_RECVOPTS        = 0x6
+       sysIP_RETOPTS         = 0x7
+       sysIP_PKTINFO         = 0x8
+       sysIP_PKTOPTIONS      = 0x9
+       sysIP_MTU_DISCOVER    = 0xa
+       sysIP_RECVERR         = 0xb
+       sysIP_RECVTTL         = 0xc
+       sysIP_RECVTOS         = 0xd
+       sysIP_MTU             = 0xe
+       sysIP_FREEBIND        = 0xf
+       sysIP_TRANSPARENT     = 0x13
+       sysIP_RECVRETOPTS     = 0x7
+       sysIP_ORIGDSTADDR     = 0x14
+       sysIP_RECVORIGDSTADDR = 0x14
+       sysIP_MINTTL          = 0x15
+       sysIP_NODEFRAG        = 0x16
+       sysIP_UNICAST_IF      = 0x32
+
+       sysIP_MULTICAST_IF           = 0x20
+       sysIP_MULTICAST_TTL          = 0x21
+       sysIP_MULTICAST_LOOP         = 0x22
+       sysIP_ADD_MEMBERSHIP         = 0x23
+       sysIP_DROP_MEMBERSHIP        = 0x24
+       sysIP_UNBLOCK_SOURCE         = 0x25
+       sysIP_BLOCK_SOURCE           = 0x26
+       sysIP_ADD_SOURCE_MEMBERSHIP  = 0x27
+       sysIP_DROP_SOURCE_MEMBERSHIP = 0x28
+       sysIP_MSFILTER               = 0x29
+       sysMCAST_JOIN_GROUP          = 0x2a
+       sysMCAST_LEAVE_GROUP         = 0x2d
+       sysMCAST_JOIN_SOURCE_GROUP   = 0x2e
+       sysMCAST_LEAVE_SOURCE_GROUP  = 0x2f
+       sysMCAST_BLOCK_SOURCE        = 0x2b
+       sysMCAST_UNBLOCK_SOURCE      = 0x2c
+       sysMCAST_MSFILTER            = 0x30
+       sysIP_MULTICAST_ALL          = 0x31
+
+       sysICMP_FILTER = 0x1
+
+       sysSO_EE_ORIGIN_NONE         = 0x0
+       sysSO_EE_ORIGIN_LOCAL        = 0x1
+       sysSO_EE_ORIGIN_ICMP         = 0x2
+       sysSO_EE_ORIGIN_ICMP6        = 0x3
+       sysSO_EE_ORIGIN_TXSTATUS     = 0x4
+       sysSO_EE_ORIGIN_TIMESTAMPING = 0x4
+
+       sysSizeofKernelSockaddrStorage = 0x80
+       sysSizeofSockaddrInet          = 0x10
+       sysSizeofInetPktinfo           = 0xc
+       sysSizeofSockExtendedErr       = 0x10
+
+       sysSizeofIPMreq         = 0x8
+       sysSizeofIPMreqn        = 0xc
+       sysSizeofIPMreqSource   = 0xc
+       sysSizeofGroupReq       = 0x88
+       sysSizeofGroupSourceReq = 0x108
+
+       sysSizeofICMPFilter = 0x4
+)
+
+type sysKernelSockaddrStorage struct {
+       Family  uint16
+       X__data [126]int8
+}
+
+type sysSockaddrInet struct {
+       Family uint16
+       Port   uint16
+       Addr   [4]byte /* in_addr */
+       X__pad [8]uint8
+}
+
+type sysInetPktinfo struct {
+       Ifindex  int32
+       Spec_dst [4]byte /* in_addr */
+       Addr     [4]byte /* in_addr */
+}
+
+type sysSockExtendedErr struct {
+       Errno  uint32
+       Origin uint8
+       Type   uint8
+       Code   uint8
+       Pad    uint8
+       Info   uint32
+       Data   uint32
+}
+
+type sysIPMreq struct {
+       Multiaddr [4]byte /* in_addr */
+       Interface [4]byte /* in_addr */
+}
+
+type sysIPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
+type sysIPMreqSource struct {
+       Multiaddr  uint32
+       Interface  uint32
+       Sourceaddr uint32
+}
+
+type sysGroupReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysKernelSockaddrStorage
+}
+
+type sysGroupSourceReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysKernelSockaddrStorage
+       Source    sysKernelSockaddrStorage
+}
+
+type sysICMPFilter struct {
+       Data uint32
+}
diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go
new file mode 100644 (file)
index 0000000..3891f54
--- /dev/null
@@ -0,0 +1,134 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+// +build linux,ppc64le
+
+package ipv4
+
+const (
+       sysIP_TOS             = 0x1
+       sysIP_TTL             = 0x2
+       sysIP_HDRINCL         = 0x3
+       sysIP_OPTIONS         = 0x4
+       sysIP_ROUTER_ALERT    = 0x5
+       sysIP_RECVOPTS        = 0x6
+       sysIP_RETOPTS         = 0x7
+       sysIP_PKTINFO         = 0x8
+       sysIP_PKTOPTIONS      = 0x9
+       sysIP_MTU_DISCOVER    = 0xa
+       sysIP_RECVERR         = 0xb
+       sysIP_RECVTTL         = 0xc
+       sysIP_RECVTOS         = 0xd
+       sysIP_MTU             = 0xe
+       sysIP_FREEBIND        = 0xf
+       sysIP_TRANSPARENT     = 0x13
+       sysIP_RECVRETOPTS     = 0x7
+       sysIP_ORIGDSTADDR     = 0x14
+       sysIP_RECVORIGDSTADDR = 0x14
+       sysIP_MINTTL          = 0x15
+       sysIP_NODEFRAG        = 0x16
+       sysIP_UNICAST_IF      = 0x32
+
+       sysIP_MULTICAST_IF           = 0x20
+       sysIP_MULTICAST_TTL          = 0x21
+       sysIP_MULTICAST_LOOP         = 0x22
+       sysIP_ADD_MEMBERSHIP         = 0x23
+       sysIP_DROP_MEMBERSHIP        = 0x24
+       sysIP_UNBLOCK_SOURCE         = 0x25
+       sysIP_BLOCK_SOURCE           = 0x26
+       sysIP_ADD_SOURCE_MEMBERSHIP  = 0x27
+       sysIP_DROP_SOURCE_MEMBERSHIP = 0x28
+       sysIP_MSFILTER               = 0x29
+       sysMCAST_JOIN_GROUP          = 0x2a
+       sysMCAST_LEAVE_GROUP         = 0x2d
+       sysMCAST_JOIN_SOURCE_GROUP   = 0x2e
+       sysMCAST_LEAVE_SOURCE_GROUP  = 0x2f
+       sysMCAST_BLOCK_SOURCE        = 0x2b
+       sysMCAST_UNBLOCK_SOURCE      = 0x2c
+       sysMCAST_MSFILTER            = 0x30
+       sysIP_MULTICAST_ALL          = 0x31
+
+       sysICMP_FILTER = 0x1
+
+       sysSO_EE_ORIGIN_NONE         = 0x0
+       sysSO_EE_ORIGIN_LOCAL        = 0x1
+       sysSO_EE_ORIGIN_ICMP         = 0x2
+       sysSO_EE_ORIGIN_ICMP6        = 0x3
+       sysSO_EE_ORIGIN_TXSTATUS     = 0x4
+       sysSO_EE_ORIGIN_TIMESTAMPING = 0x4
+
+       sysSizeofKernelSockaddrStorage = 0x80
+       sysSizeofSockaddrInet          = 0x10
+       sysSizeofInetPktinfo           = 0xc
+       sysSizeofSockExtendedErr       = 0x10
+
+       sysSizeofIPMreq         = 0x8
+       sysSizeofIPMreqn        = 0xc
+       sysSizeofIPMreqSource   = 0xc
+       sysSizeofGroupReq       = 0x88
+       sysSizeofGroupSourceReq = 0x108
+
+       sysSizeofICMPFilter = 0x4
+)
+
+type sysKernelSockaddrStorage struct {
+       Family  uint16
+       X__data [126]int8
+}
+
+type sysSockaddrInet struct {
+       Family uint16
+       Port   uint16
+       Addr   [4]byte /* in_addr */
+       X__pad [8]uint8
+}
+
+type sysInetPktinfo struct {
+       Ifindex  int32
+       Spec_dst [4]byte /* in_addr */
+       Addr     [4]byte /* in_addr */
+}
+
+type sysSockExtendedErr struct {
+       Errno  uint32
+       Origin uint8
+       Type   uint8
+       Code   uint8
+       Pad    uint8
+       Info   uint32
+       Data   uint32
+}
+
+type sysIPMreq struct {
+       Multiaddr [4]byte /* in_addr */
+       Interface [4]byte /* in_addr */
+}
+
+type sysIPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
+type sysIPMreqSource struct {
+       Multiaddr  uint32
+       Interface  uint32
+       Sourceaddr uint32
+}
+
+type sysGroupReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysKernelSockaddrStorage
+}
+
+type sysGroupSourceReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysKernelSockaddrStorage
+       Source    sysKernelSockaddrStorage
+}
+
+type sysICMPFilter struct {
+       Data uint32
+}
diff --git a/vendor/golang.org/x/net/ipv4/zsys_netbsd.go b/vendor/golang.org/x/net/ipv4/zsys_netbsd.go
new file mode 100644 (file)
index 0000000..8a440eb
--- /dev/null
@@ -0,0 +1,30 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_netbsd.go
+
+package ipv4
+
+const (
+       sysIP_OPTIONS     = 0x1
+       sysIP_HDRINCL     = 0x2
+       sysIP_TOS         = 0x3
+       sysIP_TTL         = 0x4
+       sysIP_RECVOPTS    = 0x5
+       sysIP_RECVRETOPTS = 0x6
+       sysIP_RECVDSTADDR = 0x7
+       sysIP_RETOPTS     = 0x8
+       sysIP_RECVIF      = 0x14
+       sysIP_RECVTTL     = 0x17
+
+       sysIP_MULTICAST_IF    = 0x9
+       sysIP_MULTICAST_TTL   = 0xa
+       sysIP_MULTICAST_LOOP  = 0xb
+       sysIP_ADD_MEMBERSHIP  = 0xc
+       sysIP_DROP_MEMBERSHIP = 0xd
+
+       sysSizeofIPMreq = 0x8
+)
+
+type sysIPMreq struct {
+       Multiaddr [4]byte /* in_addr */
+       Interface [4]byte /* in_addr */
+}
diff --git a/vendor/golang.org/x/net/ipv4/zsys_openbsd.go b/vendor/golang.org/x/net/ipv4/zsys_openbsd.go
new file mode 100644 (file)
index 0000000..fd522b5
--- /dev/null
@@ -0,0 +1,30 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_openbsd.go
+
+package ipv4
+
+const (
+       sysIP_OPTIONS     = 0x1
+       sysIP_HDRINCL     = 0x2
+       sysIP_TOS         = 0x3
+       sysIP_TTL         = 0x4
+       sysIP_RECVOPTS    = 0x5
+       sysIP_RECVRETOPTS = 0x6
+       sysIP_RECVDSTADDR = 0x7
+       sysIP_RETOPTS     = 0x8
+       sysIP_RECVIF      = 0x1e
+       sysIP_RECVTTL     = 0x1f
+
+       sysIP_MULTICAST_IF    = 0x9
+       sysIP_MULTICAST_TTL   = 0xa
+       sysIP_MULTICAST_LOOP  = 0xb
+       sysIP_ADD_MEMBERSHIP  = 0xc
+       sysIP_DROP_MEMBERSHIP = 0xd
+
+       sysSizeofIPMreq = 0x8
+)
+
+type sysIPMreq struct {
+       Multiaddr [4]byte /* in_addr */
+       Interface [4]byte /* in_addr */
+}
diff --git a/vendor/golang.org/x/net/ipv4/zsys_solaris.go b/vendor/golang.org/x/net/ipv4/zsys_solaris.go
new file mode 100644 (file)
index 0000000..d7c2334
--- /dev/null
@@ -0,0 +1,60 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_solaris.go
+
+// +build solaris
+
+package ipv4
+
+const (
+       sysIP_OPTIONS       = 0x1
+       sysIP_HDRINCL       = 0x2
+       sysIP_TOS           = 0x3
+       sysIP_TTL           = 0x4
+       sysIP_RECVOPTS      = 0x5
+       sysIP_RECVRETOPTS   = 0x6
+       sysIP_RECVDSTADDR   = 0x7
+       sysIP_RETOPTS       = 0x8
+       sysIP_RECVIF        = 0x9
+       sysIP_RECVSLLA      = 0xa
+       sysIP_RECVTTL       = 0xb
+       sysIP_NEXTHOP       = 0x19
+       sysIP_PKTINFO       = 0x1a
+       sysIP_RECVPKTINFO   = 0x1a
+       sysIP_DONTFRAG      = 0x1b
+       sysIP_BOUND_IF      = 0x41
+       sysIP_UNSPEC_SRC    = 0x42
+       sysIP_BROADCAST_TTL = 0x43
+       sysIP_DHCPINIT_IF   = 0x45
+
+       sysIP_MULTICAST_IF           = 0x10
+       sysIP_MULTICAST_TTL          = 0x11
+       sysIP_MULTICAST_LOOP         = 0x12
+       sysIP_ADD_MEMBERSHIP         = 0x13
+       sysIP_DROP_MEMBERSHIP        = 0x14
+       sysIP_BLOCK_SOURCE           = 0x15
+       sysIP_UNBLOCK_SOURCE         = 0x16
+       sysIP_ADD_SOURCE_MEMBERSHIP  = 0x17
+       sysIP_DROP_SOURCE_MEMBERSHIP = 0x18
+
+       sysSizeofInetPktinfo = 0xc
+
+       sysSizeofIPMreq       = 0x8
+       sysSizeofIPMreqSource = 0xc
+)
+
+type sysInetPktinfo struct {
+       Ifindex  uint32
+       Spec_dst [4]byte /* in_addr */
+       Addr     [4]byte /* in_addr */
+}
+
+type sysIPMreq struct {
+       Multiaddr [4]byte /* in_addr */
+       Interface [4]byte /* in_addr */
+}
+
+type sysIPMreqSource struct {
+       Multiaddr  [4]byte /* in_addr */
+       Sourceaddr [4]byte /* in_addr */
+       Interface  [4]byte /* in_addr */
+}
diff --git a/vendor/golang.org/x/net/ipv6/control.go b/vendor/golang.org/x/net/ipv6/control.go
new file mode 100644 (file)
index 0000000..b7362aa
--- /dev/null
@@ -0,0 +1,85 @@
+// Copyright 2013 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 ipv6
+
+import (
+       "fmt"
+       "net"
+       "sync"
+)
+
+// Note that RFC 3542 obsoletes RFC 2292 but OS X Snow Leopard and the
+// former still support RFC 2292 only.  Please be aware that almost
+// all protocol implementations prohibit using a combination of RFC
+// 2292 and RFC 3542 for some practical reasons.
+
+type rawOpt struct {
+       sync.RWMutex
+       cflags ControlFlags
+}
+
+func (c *rawOpt) set(f ControlFlags)        { c.cflags |= f }
+func (c *rawOpt) clear(f ControlFlags)      { c.cflags &^= f }
+func (c *rawOpt) isset(f ControlFlags) bool { return c.cflags&f != 0 }
+
+// A ControlFlags represents per packet basis IP-level socket option
+// control flags.
+type ControlFlags uint
+
+const (
+       FlagTrafficClass ControlFlags = 1 << iota // pass the traffic class on the received packet
+       FlagHopLimit                              // pass the hop limit on the received packet
+       FlagSrc                                   // pass the source address on the received packet
+       FlagDst                                   // pass the destination address on the received packet
+       FlagInterface                             // pass the interface index on the received packet
+       FlagPathMTU                               // pass the path MTU on the received packet path
+)
+
+const flagPacketInfo = FlagDst | FlagInterface
+
+// A ControlMessage represents per packet basis IP-level socket
+// options.
+type ControlMessage struct {
+       // Receiving socket options: SetControlMessage allows to
+       // receive the options from the protocol stack using ReadFrom
+       // method of PacketConn.
+       //
+       // Specifying socket options: ControlMessage for WriteTo
+       // method of PacketConn allows to send the options to the
+       // protocol stack.
+       //
+       TrafficClass int    // traffic class, must be 1 <= value <= 255 when specifying
+       HopLimit     int    // hop limit, must be 1 <= value <= 255 when specifying
+       Src          net.IP // source address, specifying only
+       Dst          net.IP // destination address, receiving only
+       IfIndex      int    // interface index, must be 1 <= value when specifying
+       NextHop      net.IP // next hop address, specifying only
+       MTU          int    // path MTU, receiving only
+}
+
+func (cm *ControlMessage) String() string {
+       if cm == nil {
+               return "<nil>"
+       }
+       return fmt.Sprintf("tclass=%#x hoplim=%d src=%v dst=%v ifindex=%d nexthop=%v mtu=%d", cm.TrafficClass, cm.HopLimit, cm.Src, cm.Dst, cm.IfIndex, cm.NextHop, cm.MTU)
+}
+
+// Ancillary data socket options
+const (
+       ctlTrafficClass = iota // header field
+       ctlHopLimit            // header field
+       ctlPacketInfo          // inbound or outbound packet path
+       ctlNextHop             // nexthop
+       ctlPathMTU             // path mtu
+       ctlMax
+)
+
+// A ctlOpt represents a binding for ancillary data socket option.
+type ctlOpt struct {
+       name    int // option name, must be equal or greater than 1
+       length  int // option length
+       marshal func([]byte, *ControlMessage) []byte
+       parse   func(*ControlMessage, []byte)
+}
diff --git a/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go b/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go
new file mode 100644 (file)
index 0000000..80ec2e2
--- /dev/null
@@ -0,0 +1,55 @@
+// Copyright 2013 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.
+
+// +build darwin
+
+package ipv6
+
+import (
+       "syscall"
+       "unsafe"
+
+       "golang.org/x/net/internal/iana"
+)
+
+func marshal2292HopLimit(b []byte, cm *ControlMessage) []byte {
+       m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0]))
+       m.Level = iana.ProtocolIPv6
+       m.Type = sysIPV6_2292HOPLIMIT
+       m.SetLen(syscall.CmsgLen(4))
+       if cm != nil {
+               data := b[syscall.CmsgLen(0):]
+               nativeEndian.PutUint32(data[:4], uint32(cm.HopLimit))
+       }
+       return b[syscall.CmsgSpace(4):]
+}
+
+func marshal2292PacketInfo(b []byte, cm *ControlMessage) []byte {
+       m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0]))
+       m.Level = iana.ProtocolIPv6
+       m.Type = sysIPV6_2292PKTINFO
+       m.SetLen(syscall.CmsgLen(sysSizeofInet6Pktinfo))
+       if cm != nil {
+               pi := (*sysInet6Pktinfo)(unsafe.Pointer(&b[syscall.CmsgLen(0)]))
+               if ip := cm.Src.To16(); ip != nil && ip.To4() == nil {
+                       copy(pi.Addr[:], ip)
+               }
+               if cm.IfIndex > 0 {
+                       pi.setIfindex(cm.IfIndex)
+               }
+       }
+       return b[syscall.CmsgSpace(sysSizeofInet6Pktinfo):]
+}
+
+func marshal2292NextHop(b []byte, cm *ControlMessage) []byte {
+       m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0]))
+       m.Level = iana.ProtocolIPv6
+       m.Type = sysIPV6_2292NEXTHOP
+       m.SetLen(syscall.CmsgLen(sysSizeofSockaddrInet6))
+       if cm != nil {
+               sa := (*sysSockaddrInet6)(unsafe.Pointer(&b[syscall.CmsgLen(0)]))
+               sa.setSockaddr(cm.NextHop, cm.IfIndex)
+       }
+       return b[syscall.CmsgSpace(sysSizeofSockaddrInet6):]
+}
diff --git a/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go b/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go
new file mode 100644 (file)
index 0000000..f344d16
--- /dev/null
@@ -0,0 +1,99 @@
+// Copyright 2013 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.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd
+
+package ipv6
+
+import (
+       "syscall"
+       "unsafe"
+
+       "golang.org/x/net/internal/iana"
+)
+
+func marshalTrafficClass(b []byte, cm *ControlMessage) []byte {
+       m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0]))
+       m.Level = iana.ProtocolIPv6
+       m.Type = sysIPV6_TCLASS
+       m.SetLen(syscall.CmsgLen(4))
+       if cm != nil {
+               data := b[syscall.CmsgLen(0):]
+               nativeEndian.PutUint32(data[:4], uint32(cm.TrafficClass))
+       }
+       return b[syscall.CmsgSpace(4):]
+}
+
+func parseTrafficClass(cm *ControlMessage, b []byte) {
+       cm.TrafficClass = int(nativeEndian.Uint32(b[:4]))
+}
+
+func marshalHopLimit(b []byte, cm *ControlMessage) []byte {
+       m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0]))
+       m.Level = iana.ProtocolIPv6
+       m.Type = sysIPV6_HOPLIMIT
+       m.SetLen(syscall.CmsgLen(4))
+       if cm != nil {
+               data := b[syscall.CmsgLen(0):]
+               nativeEndian.PutUint32(data[:4], uint32(cm.HopLimit))
+       }
+       return b[syscall.CmsgSpace(4):]
+}
+
+func parseHopLimit(cm *ControlMessage, b []byte) {
+       cm.HopLimit = int(nativeEndian.Uint32(b[:4]))
+}
+
+func marshalPacketInfo(b []byte, cm *ControlMessage) []byte {
+       m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0]))
+       m.Level = iana.ProtocolIPv6
+       m.Type = sysIPV6_PKTINFO
+       m.SetLen(syscall.CmsgLen(sysSizeofInet6Pktinfo))
+       if cm != nil {
+               pi := (*sysInet6Pktinfo)(unsafe.Pointer(&b[syscall.CmsgLen(0)]))
+               if ip := cm.Src.To16(); ip != nil && ip.To4() == nil {
+                       copy(pi.Addr[:], ip)
+               }
+               if cm.IfIndex > 0 {
+                       pi.setIfindex(cm.IfIndex)
+               }
+       }
+       return b[syscall.CmsgSpace(sysSizeofInet6Pktinfo):]
+}
+
+func parsePacketInfo(cm *ControlMessage, b []byte) {
+       pi := (*sysInet6Pktinfo)(unsafe.Pointer(&b[0]))
+       cm.Dst = pi.Addr[:]
+       cm.IfIndex = int(pi.Ifindex)
+}
+
+func marshalNextHop(b []byte, cm *ControlMessage) []byte {
+       m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0]))
+       m.Level = iana.ProtocolIPv6
+       m.Type = sysIPV6_NEXTHOP
+       m.SetLen(syscall.CmsgLen(sysSizeofSockaddrInet6))
+       if cm != nil {
+               sa := (*sysSockaddrInet6)(unsafe.Pointer(&b[syscall.CmsgLen(0)]))
+               sa.setSockaddr(cm.NextHop, cm.IfIndex)
+       }
+       return b[syscall.CmsgSpace(sysSizeofSockaddrInet6):]
+}
+
+func parseNextHop(cm *ControlMessage, b []byte) {
+}
+
+func marshalPathMTU(b []byte, cm *ControlMessage) []byte {
+       m := (*syscall.Cmsghdr)(unsafe.Pointer(&b[0]))
+       m.Level = iana.ProtocolIPv6
+       m.Type = sysIPV6_PATHMTU
+       m.SetLen(syscall.CmsgLen(sysSizeofIPv6Mtuinfo))
+       return b[syscall.CmsgSpace(sysSizeofIPv6Mtuinfo):]
+}
+
+func parsePathMTU(cm *ControlMessage, b []byte) {
+       mi := (*sysIPv6Mtuinfo)(unsafe.Pointer(&b[0]))
+       cm.Dst = mi.Addr.Addr[:]
+       cm.IfIndex = int(mi.Addr.Scope_id)
+       cm.MTU = int(mi.Mtu)
+}
diff --git a/vendor/golang.org/x/net/ipv6/control_stub.go b/vendor/golang.org/x/net/ipv6/control_stub.go
new file mode 100644 (file)
index 0000000..2fecf7e
--- /dev/null
@@ -0,0 +1,23 @@
+// Copyright 2013 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.
+
+// +build nacl plan9 solaris
+
+package ipv6
+
+func setControlMessage(fd int, opt *rawOpt, cf ControlFlags, on bool) error {
+       return errOpNoSupport
+}
+
+func newControlMessage(opt *rawOpt) (oob []byte) {
+       return nil
+}
+
+func parseControlMessage(b []byte) (*ControlMessage, error) {
+       return nil, errOpNoSupport
+}
+
+func marshalControlMessage(cm *ControlMessage) (oob []byte) {
+       return nil
+}
diff --git a/vendor/golang.org/x/net/ipv6/control_unix.go b/vendor/golang.org/x/net/ipv6/control_unix.go
new file mode 100644 (file)
index 0000000..2af5beb
--- /dev/null
@@ -0,0 +1,166 @@
+// Copyright 2013 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.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd
+
+package ipv6
+
+import (
+       "os"
+       "syscall"
+
+       "golang.org/x/net/internal/iana"
+)
+
+func setControlMessage(fd int, opt *rawOpt, cf ControlFlags, on bool) error {
+       opt.Lock()
+       defer opt.Unlock()
+       if cf&FlagTrafficClass != 0 && sockOpts[ssoReceiveTrafficClass].name > 0 {
+               if err := setInt(fd, &sockOpts[ssoReceiveTrafficClass], boolint(on)); err != nil {
+                       return err
+               }
+               if on {
+                       opt.set(FlagTrafficClass)
+               } else {
+                       opt.clear(FlagTrafficClass)
+               }
+       }
+       if cf&FlagHopLimit != 0 && sockOpts[ssoReceiveHopLimit].name > 0 {
+               if err := setInt(fd, &sockOpts[ssoReceiveHopLimit], boolint(on)); err != nil {
+                       return err
+               }
+               if on {
+                       opt.set(FlagHopLimit)
+               } else {
+                       opt.clear(FlagHopLimit)
+               }
+       }
+       if cf&flagPacketInfo != 0 && sockOpts[ssoReceivePacketInfo].name > 0 {
+               if err := setInt(fd, &sockOpts[ssoReceivePacketInfo], boolint(on)); err != nil {
+                       return err
+               }
+               if on {
+                       opt.set(cf & flagPacketInfo)
+               } else {
+                       opt.clear(cf & flagPacketInfo)
+               }
+       }
+       if cf&FlagPathMTU != 0 && sockOpts[ssoReceivePathMTU].name > 0 {
+               if err := setInt(fd, &sockOpts[ssoReceivePathMTU], boolint(on)); err != nil {
+                       return err
+               }
+               if on {
+                       opt.set(FlagPathMTU)
+               } else {
+                       opt.clear(FlagPathMTU)
+               }
+       }
+       return nil
+}
+
+func newControlMessage(opt *rawOpt) (oob []byte) {
+       opt.RLock()
+       var l int
+       if opt.isset(FlagTrafficClass) && ctlOpts[ctlTrafficClass].name > 0 {
+               l += syscall.CmsgSpace(ctlOpts[ctlTrafficClass].length)
+       }
+       if opt.isset(FlagHopLimit) && ctlOpts[ctlHopLimit].name > 0 {
+               l += syscall.CmsgSpace(ctlOpts[ctlHopLimit].length)
+       }
+       if opt.isset(flagPacketInfo) && ctlOpts[ctlPacketInfo].name > 0 {
+               l += syscall.CmsgSpace(ctlOpts[ctlPacketInfo].length)
+       }
+       if opt.isset(FlagPathMTU) && ctlOpts[ctlPathMTU].name > 0 {
+               l += syscall.CmsgSpace(ctlOpts[ctlPathMTU].length)
+       }
+       if l > 0 {
+               oob = make([]byte, l)
+               b := oob
+               if opt.isset(FlagTrafficClass) && ctlOpts[ctlTrafficClass].name > 0 {
+                       b = ctlOpts[ctlTrafficClass].marshal(b, nil)
+               }
+               if opt.isset(FlagHopLimit) && ctlOpts[ctlHopLimit].name > 0 {
+                       b = ctlOpts[ctlHopLimit].marshal(b, nil)
+               }
+               if opt.isset(flagPacketInfo) && ctlOpts[ctlPacketInfo].name > 0 {
+                       b = ctlOpts[ctlPacketInfo].marshal(b, nil)
+               }
+               if opt.isset(FlagPathMTU) && ctlOpts[ctlPathMTU].name > 0 {
+                       b = ctlOpts[ctlPathMTU].marshal(b, nil)
+               }
+       }
+       opt.RUnlock()
+       return
+}
+
+func parseControlMessage(b []byte) (*ControlMessage, error) {
+       if len(b) == 0 {
+               return nil, nil
+       }
+       cmsgs, err := syscall.ParseSocketControlMessage(b)
+       if err != nil {
+               return nil, os.NewSyscallError("parse socket control message", err)
+       }
+       cm := &ControlMessage{}
+       for _, m := range cmsgs {
+               if m.Header.Level != iana.ProtocolIPv6 {
+                       continue
+               }
+               switch int(m.Header.Type) {
+               case ctlOpts[ctlTrafficClass].name:
+                       ctlOpts[ctlTrafficClass].parse(cm, m.Data[:])
+               case ctlOpts[ctlHopLimit].name:
+                       ctlOpts[ctlHopLimit].parse(cm, m.Data[:])
+               case ctlOpts[ctlPacketInfo].name:
+                       ctlOpts[ctlPacketInfo].parse(cm, m.Data[:])
+               case ctlOpts[ctlPathMTU].name:
+                       ctlOpts[ctlPathMTU].parse(cm, m.Data[:])
+               }
+       }
+       return cm, nil
+}
+
+func marshalControlMessage(cm *ControlMessage) (oob []byte) {
+       if cm == nil {
+               return
+       }
+       var l int
+       tclass := false
+       if ctlOpts[ctlTrafficClass].name > 0 && cm.TrafficClass > 0 {
+               tclass = true
+               l += syscall.CmsgSpace(ctlOpts[ctlTrafficClass].length)
+       }
+       hoplimit := false
+       if ctlOpts[ctlHopLimit].name > 0 && cm.HopLimit > 0 {
+               hoplimit = true
+               l += syscall.CmsgSpace(ctlOpts[ctlHopLimit].length)
+       }
+       pktinfo := false
+       if ctlOpts[ctlPacketInfo].name > 0 && (cm.Src.To16() != nil && cm.Src.To4() == nil || cm.IfIndex > 0) {
+               pktinfo = true
+               l += syscall.CmsgSpace(ctlOpts[ctlPacketInfo].length)
+       }
+       nexthop := false
+       if ctlOpts[ctlNextHop].name > 0 && cm.NextHop.To16() != nil && cm.NextHop.To4() == nil {
+               nexthop = true
+               l += syscall.CmsgSpace(ctlOpts[ctlNextHop].length)
+       }
+       if l > 0 {
+               oob = make([]byte, l)
+               b := oob
+               if tclass {
+                       b = ctlOpts[ctlTrafficClass].marshal(b, cm)
+               }
+               if hoplimit {
+                       b = ctlOpts[ctlHopLimit].marshal(b, cm)
+               }
+               if pktinfo {
+                       b = ctlOpts[ctlPacketInfo].marshal(b, cm)
+               }
+               if nexthop {
+                       b = ctlOpts[ctlNextHop].marshal(b, cm)
+               }
+       }
+       return
+}
diff --git a/vendor/golang.org/x/net/ipv6/control_windows.go b/vendor/golang.org/x/net/ipv6/control_windows.go
new file mode 100644 (file)
index 0000000..72fdc1b
--- /dev/null
@@ -0,0 +1,27 @@
+// Copyright 2013 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 ipv6
+
+import "syscall"
+
+func setControlMessage(fd syscall.Handle, opt *rawOpt, cf ControlFlags, on bool) error {
+       // TODO(mikio): implement this
+       return syscall.EWINDOWS
+}
+
+func newControlMessage(opt *rawOpt) (oob []byte) {
+       // TODO(mikio): implement this
+       return nil
+}
+
+func parseControlMessage(b []byte) (*ControlMessage, error) {
+       // TODO(mikio): implement this
+       return nil, syscall.EWINDOWS
+}
+
+func marshalControlMessage(cm *ControlMessage) (oob []byte) {
+       // TODO(mikio): implement this
+       return nil
+}
diff --git a/vendor/golang.org/x/net/ipv6/defs_darwin.go b/vendor/golang.org/x/net/ipv6/defs_darwin.go
new file mode 100644 (file)
index 0000000..4c7f476
--- /dev/null
@@ -0,0 +1,112 @@
+// Copyright 2014 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.
+
+// +build ignore
+
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package ipv6
+
+/*
+#define __APPLE_USE_RFC_3542
+#include <netinet/in.h>
+#include <netinet/icmp6.h>
+*/
+import "C"
+
+const (
+       sysIPV6_UNICAST_HOPS   = C.IPV6_UNICAST_HOPS
+       sysIPV6_MULTICAST_IF   = C.IPV6_MULTICAST_IF
+       sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS
+       sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP
+       sysIPV6_JOIN_GROUP     = C.IPV6_JOIN_GROUP
+       sysIPV6_LEAVE_GROUP    = C.IPV6_LEAVE_GROUP
+
+       sysIPV6_PORTRANGE    = C.IPV6_PORTRANGE
+       sysICMP6_FILTER      = C.ICMP6_FILTER
+       sysIPV6_2292PKTINFO  = C.IPV6_2292PKTINFO
+       sysIPV6_2292HOPLIMIT = C.IPV6_2292HOPLIMIT
+       sysIPV6_2292NEXTHOP  = C.IPV6_2292NEXTHOP
+       sysIPV6_2292HOPOPTS  = C.IPV6_2292HOPOPTS
+       sysIPV6_2292DSTOPTS  = C.IPV6_2292DSTOPTS
+       sysIPV6_2292RTHDR    = C.IPV6_2292RTHDR
+
+       sysIPV6_2292PKTOPTIONS = C.IPV6_2292PKTOPTIONS
+
+       sysIPV6_CHECKSUM = C.IPV6_CHECKSUM
+       sysIPV6_V6ONLY   = C.IPV6_V6ONLY
+
+       sysIPV6_IPSEC_POLICY = C.IPV6_IPSEC_POLICY
+
+       sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS
+       sysIPV6_TCLASS     = C.IPV6_TCLASS
+
+       sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS
+
+       sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO
+
+       sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT
+       sysIPV6_RECVRTHDR    = C.IPV6_RECVRTHDR
+       sysIPV6_RECVHOPOPTS  = C.IPV6_RECVHOPOPTS
+       sysIPV6_RECVDSTOPTS  = C.IPV6_RECVDSTOPTS
+
+       sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU
+       sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU
+
+       sysIPV6_PATHMTU = C.IPV6_PATHMTU
+
+       sysIPV6_PKTINFO  = C.IPV6_PKTINFO
+       sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT
+       sysIPV6_NEXTHOP  = C.IPV6_NEXTHOP
+       sysIPV6_HOPOPTS  = C.IPV6_HOPOPTS
+       sysIPV6_DSTOPTS  = C.IPV6_DSTOPTS
+       sysIPV6_RTHDR    = C.IPV6_RTHDR
+
+       sysIPV6_AUTOFLOWLABEL = C.IPV6_AUTOFLOWLABEL
+
+       sysIPV6_DONTFRAG = C.IPV6_DONTFRAG
+
+       sysIPV6_PREFER_TEMPADDR = C.IPV6_PREFER_TEMPADDR
+
+       sysIPV6_MSFILTER            = C.IPV6_MSFILTER
+       sysMCAST_JOIN_GROUP         = C.MCAST_JOIN_GROUP
+       sysMCAST_LEAVE_GROUP        = C.MCAST_LEAVE_GROUP
+       sysMCAST_JOIN_SOURCE_GROUP  = C.MCAST_JOIN_SOURCE_GROUP
+       sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP
+       sysMCAST_BLOCK_SOURCE       = C.MCAST_BLOCK_SOURCE
+       sysMCAST_UNBLOCK_SOURCE     = C.MCAST_UNBLOCK_SOURCE
+
+       sysIPV6_BOUND_IF = C.IPV6_BOUND_IF
+
+       sysIPV6_PORTRANGE_DEFAULT = C.IPV6_PORTRANGE_DEFAULT
+       sysIPV6_PORTRANGE_HIGH    = C.IPV6_PORTRANGE_HIGH
+       sysIPV6_PORTRANGE_LOW     = C.IPV6_PORTRANGE_LOW
+
+       sysSizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage
+       sysSizeofSockaddrInet6   = C.sizeof_struct_sockaddr_in6
+       sysSizeofInet6Pktinfo    = C.sizeof_struct_in6_pktinfo
+       sysSizeofIPv6Mtuinfo     = C.sizeof_struct_ip6_mtuinfo
+
+       sysSizeofIPv6Mreq       = C.sizeof_struct_ipv6_mreq
+       sysSizeofGroupReq       = C.sizeof_struct_group_req
+       sysSizeofGroupSourceReq = C.sizeof_struct_group_source_req
+
+       sysSizeofICMPv6Filter = C.sizeof_struct_icmp6_filter
+)
+
+type sysSockaddrStorage C.struct_sockaddr_storage
+
+type sysSockaddrInet6 C.struct_sockaddr_in6
+
+type sysInet6Pktinfo C.struct_in6_pktinfo
+
+type sysIPv6Mtuinfo C.struct_ip6_mtuinfo
+
+type sysIPv6Mreq C.struct_ipv6_mreq
+
+type sysICMPv6Filter C.struct_icmp6_filter
+
+type sysGroupReq C.struct_group_req
+
+type sysGroupSourceReq C.struct_group_source_req
diff --git a/vendor/golang.org/x/net/ipv6/defs_dragonfly.go b/vendor/golang.org/x/net/ipv6/defs_dragonfly.go
new file mode 100644 (file)
index 0000000..c72487c
--- /dev/null
@@ -0,0 +1,84 @@
+// Copyright 2014 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.
+
+// +build ignore
+
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package ipv6
+
+/*
+#include <sys/param.h>
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+#include <netinet/icmp6.h>
+*/
+import "C"
+
+const (
+       sysIPV6_UNICAST_HOPS   = C.IPV6_UNICAST_HOPS
+       sysIPV6_MULTICAST_IF   = C.IPV6_MULTICAST_IF
+       sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS
+       sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP
+       sysIPV6_JOIN_GROUP     = C.IPV6_JOIN_GROUP
+       sysIPV6_LEAVE_GROUP    = C.IPV6_LEAVE_GROUP
+       sysIPV6_PORTRANGE      = C.IPV6_PORTRANGE
+       sysICMP6_FILTER        = C.ICMP6_FILTER
+
+       sysIPV6_CHECKSUM = C.IPV6_CHECKSUM
+       sysIPV6_V6ONLY   = C.IPV6_V6ONLY
+
+       sysIPV6_IPSEC_POLICY = C.IPV6_IPSEC_POLICY
+
+       sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS
+       sysIPV6_RECVPKTINFO  = C.IPV6_RECVPKTINFO
+       sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT
+       sysIPV6_RECVRTHDR    = C.IPV6_RECVRTHDR
+       sysIPV6_RECVHOPOPTS  = C.IPV6_RECVHOPOPTS
+       sysIPV6_RECVDSTOPTS  = C.IPV6_RECVDSTOPTS
+
+       sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU
+       sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU
+
+       sysIPV6_PATHMTU = C.IPV6_PATHMTU
+
+       sysIPV6_PKTINFO  = C.IPV6_PKTINFO
+       sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT
+       sysIPV6_NEXTHOP  = C.IPV6_NEXTHOP
+       sysIPV6_HOPOPTS  = C.IPV6_HOPOPTS
+       sysIPV6_DSTOPTS  = C.IPV6_DSTOPTS
+       sysIPV6_RTHDR    = C.IPV6_RTHDR
+
+       sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS
+
+       sysIPV6_AUTOFLOWLABEL = C.IPV6_AUTOFLOWLABEL
+
+       sysIPV6_TCLASS   = C.IPV6_TCLASS
+       sysIPV6_DONTFRAG = C.IPV6_DONTFRAG
+
+       sysIPV6_PREFER_TEMPADDR = C.IPV6_PREFER_TEMPADDR
+
+       sysIPV6_PORTRANGE_DEFAULT = C.IPV6_PORTRANGE_DEFAULT
+       sysIPV6_PORTRANGE_HIGH    = C.IPV6_PORTRANGE_HIGH
+       sysIPV6_PORTRANGE_LOW     = C.IPV6_PORTRANGE_LOW
+
+       sysSizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6
+       sysSizeofInet6Pktinfo  = C.sizeof_struct_in6_pktinfo
+       sysSizeofIPv6Mtuinfo   = C.sizeof_struct_ip6_mtuinfo
+
+       sysSizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq
+
+       sysSizeofICMPv6Filter = C.sizeof_struct_icmp6_filter
+)
+
+type sysSockaddrInet6 C.struct_sockaddr_in6
+
+type sysInet6Pktinfo C.struct_in6_pktinfo
+
+type sysIPv6Mtuinfo C.struct_ip6_mtuinfo
+
+type sysIPv6Mreq C.struct_ipv6_mreq
+
+type sysICMPv6Filter C.struct_icmp6_filter
diff --git a/vendor/golang.org/x/net/ipv6/defs_freebsd.go b/vendor/golang.org/x/net/ipv6/defs_freebsd.go
new file mode 100644 (file)
index 0000000..de199ec
--- /dev/null
@@ -0,0 +1,105 @@
+// Copyright 2014 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.
+
+// +build ignore
+
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package ipv6
+
+/*
+#include <sys/param.h>
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+#include <netinet/icmp6.h>
+*/
+import "C"
+
+const (
+       sysIPV6_UNICAST_HOPS   = C.IPV6_UNICAST_HOPS
+       sysIPV6_MULTICAST_IF   = C.IPV6_MULTICAST_IF
+       sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS
+       sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP
+       sysIPV6_JOIN_GROUP     = C.IPV6_JOIN_GROUP
+       sysIPV6_LEAVE_GROUP    = C.IPV6_LEAVE_GROUP
+       sysIPV6_PORTRANGE      = C.IPV6_PORTRANGE
+       sysICMP6_FILTER        = C.ICMP6_FILTER
+
+       sysIPV6_CHECKSUM = C.IPV6_CHECKSUM
+       sysIPV6_V6ONLY   = C.IPV6_V6ONLY
+
+       sysIPV6_IPSEC_POLICY = C.IPV6_IPSEC_POLICY
+
+       sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS
+
+       sysIPV6_RECVPKTINFO  = C.IPV6_RECVPKTINFO
+       sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT
+       sysIPV6_RECVRTHDR    = C.IPV6_RECVRTHDR
+       sysIPV6_RECVHOPOPTS  = C.IPV6_RECVHOPOPTS
+       sysIPV6_RECVDSTOPTS  = C.IPV6_RECVDSTOPTS
+
+       sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU
+       sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU
+
+       sysIPV6_PATHMTU = C.IPV6_PATHMTU
+
+       sysIPV6_PKTINFO  = C.IPV6_PKTINFO
+       sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT
+       sysIPV6_NEXTHOP  = C.IPV6_NEXTHOP
+       sysIPV6_HOPOPTS  = C.IPV6_HOPOPTS
+       sysIPV6_DSTOPTS  = C.IPV6_DSTOPTS
+       sysIPV6_RTHDR    = C.IPV6_RTHDR
+
+       sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS
+
+       sysIPV6_AUTOFLOWLABEL = C.IPV6_AUTOFLOWLABEL
+
+       sysIPV6_TCLASS   = C.IPV6_TCLASS
+       sysIPV6_DONTFRAG = C.IPV6_DONTFRAG
+
+       sysIPV6_PREFER_TEMPADDR = C.IPV6_PREFER_TEMPADDR
+
+       sysIPV6_BINDANY = C.IPV6_BINDANY
+
+       sysIPV6_MSFILTER = C.IPV6_MSFILTER
+
+       sysMCAST_JOIN_GROUP         = C.MCAST_JOIN_GROUP
+       sysMCAST_LEAVE_GROUP        = C.MCAST_LEAVE_GROUP
+       sysMCAST_JOIN_SOURCE_GROUP  = C.MCAST_JOIN_SOURCE_GROUP
+       sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP
+       sysMCAST_BLOCK_SOURCE       = C.MCAST_BLOCK_SOURCE
+       sysMCAST_UNBLOCK_SOURCE     = C.MCAST_UNBLOCK_SOURCE
+
+       sysIPV6_PORTRANGE_DEFAULT = C.IPV6_PORTRANGE_DEFAULT
+       sysIPV6_PORTRANGE_HIGH    = C.IPV6_PORTRANGE_HIGH
+       sysIPV6_PORTRANGE_LOW     = C.IPV6_PORTRANGE_LOW
+
+       sysSizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage
+       sysSizeofSockaddrInet6   = C.sizeof_struct_sockaddr_in6
+       sysSizeofInet6Pktinfo    = C.sizeof_struct_in6_pktinfo
+       sysSizeofIPv6Mtuinfo     = C.sizeof_struct_ip6_mtuinfo
+
+       sysSizeofIPv6Mreq       = C.sizeof_struct_ipv6_mreq
+       sysSizeofGroupReq       = C.sizeof_struct_group_req
+       sysSizeofGroupSourceReq = C.sizeof_struct_group_source_req
+
+       sysSizeofICMPv6Filter = C.sizeof_struct_icmp6_filter
+)
+
+type sysSockaddrStorage C.struct_sockaddr_storage
+
+type sysSockaddrInet6 C.struct_sockaddr_in6
+
+type sysInet6Pktinfo C.struct_in6_pktinfo
+
+type sysIPv6Mtuinfo C.struct_ip6_mtuinfo
+
+type sysIPv6Mreq C.struct_ipv6_mreq
+
+type sysGroupReq C.struct_group_req
+
+type sysGroupSourceReq C.struct_group_source_req
+
+type sysICMPv6Filter C.struct_icmp6_filter
diff --git a/vendor/golang.org/x/net/ipv6/defs_linux.go b/vendor/golang.org/x/net/ipv6/defs_linux.go
new file mode 100644 (file)
index 0000000..d83abce
--- /dev/null
@@ -0,0 +1,136 @@
+// Copyright 2014 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.
+
+// +build ignore
+
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package ipv6
+
+/*
+#include <linux/in.h>
+#include <linux/in6.h>
+#include <linux/ipv6.h>
+#include <linux/icmpv6.h>
+*/
+import "C"
+
+const (
+       sysIPV6_ADDRFORM       = C.IPV6_ADDRFORM
+       sysIPV6_2292PKTINFO    = C.IPV6_2292PKTINFO
+       sysIPV6_2292HOPOPTS    = C.IPV6_2292HOPOPTS
+       sysIPV6_2292DSTOPTS    = C.IPV6_2292DSTOPTS
+       sysIPV6_2292RTHDR      = C.IPV6_2292RTHDR
+       sysIPV6_2292PKTOPTIONS = C.IPV6_2292PKTOPTIONS
+       sysIPV6_CHECKSUM       = C.IPV6_CHECKSUM
+       sysIPV6_2292HOPLIMIT   = C.IPV6_2292HOPLIMIT
+       sysIPV6_NEXTHOP        = C.IPV6_NEXTHOP
+       sysIPV6_FLOWINFO       = C.IPV6_FLOWINFO
+
+       sysIPV6_UNICAST_HOPS        = C.IPV6_UNICAST_HOPS
+       sysIPV6_MULTICAST_IF        = C.IPV6_MULTICAST_IF
+       sysIPV6_MULTICAST_HOPS      = C.IPV6_MULTICAST_HOPS
+       sysIPV6_MULTICAST_LOOP      = C.IPV6_MULTICAST_LOOP
+       sysIPV6_ADD_MEMBERSHIP      = C.IPV6_ADD_MEMBERSHIP
+       sysIPV6_DROP_MEMBERSHIP     = C.IPV6_DROP_MEMBERSHIP
+       sysMCAST_JOIN_GROUP         = C.MCAST_JOIN_GROUP
+       sysMCAST_LEAVE_GROUP        = C.MCAST_LEAVE_GROUP
+       sysMCAST_JOIN_SOURCE_GROUP  = C.MCAST_JOIN_SOURCE_GROUP
+       sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP
+       sysMCAST_BLOCK_SOURCE       = C.MCAST_BLOCK_SOURCE
+       sysMCAST_UNBLOCK_SOURCE     = C.MCAST_UNBLOCK_SOURCE
+       sysMCAST_MSFILTER           = C.MCAST_MSFILTER
+       sysIPV6_ROUTER_ALERT        = C.IPV6_ROUTER_ALERT
+       sysIPV6_MTU_DISCOVER        = C.IPV6_MTU_DISCOVER
+       sysIPV6_MTU                 = C.IPV6_MTU
+       sysIPV6_RECVERR             = C.IPV6_RECVERR
+       sysIPV6_V6ONLY              = C.IPV6_V6ONLY
+       sysIPV6_JOIN_ANYCAST        = C.IPV6_JOIN_ANYCAST
+       sysIPV6_LEAVE_ANYCAST       = C.IPV6_LEAVE_ANYCAST
+
+       //sysIPV6_PMTUDISC_DONT      = C.IPV6_PMTUDISC_DONT
+       //sysIPV6_PMTUDISC_WANT      = C.IPV6_PMTUDISC_WANT
+       //sysIPV6_PMTUDISC_DO        = C.IPV6_PMTUDISC_DO
+       //sysIPV6_PMTUDISC_PROBE     = C.IPV6_PMTUDISC_PROBE
+       //sysIPV6_PMTUDISC_INTERFACE = C.IPV6_PMTUDISC_INTERFACE
+       //sysIPV6_PMTUDISC_OMIT      = C.IPV6_PMTUDISC_OMIT
+
+       sysIPV6_FLOWLABEL_MGR = C.IPV6_FLOWLABEL_MGR
+       sysIPV6_FLOWINFO_SEND = C.IPV6_FLOWINFO_SEND
+
+       sysIPV6_IPSEC_POLICY = C.IPV6_IPSEC_POLICY
+       sysIPV6_XFRM_POLICY  = C.IPV6_XFRM_POLICY
+
+       sysIPV6_RECVPKTINFO  = C.IPV6_RECVPKTINFO
+       sysIPV6_PKTINFO      = C.IPV6_PKTINFO
+       sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT
+       sysIPV6_HOPLIMIT     = C.IPV6_HOPLIMIT
+       sysIPV6_RECVHOPOPTS  = C.IPV6_RECVHOPOPTS
+       sysIPV6_HOPOPTS      = C.IPV6_HOPOPTS
+       sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS
+       sysIPV6_RECVRTHDR    = C.IPV6_RECVRTHDR
+       sysIPV6_RTHDR        = C.IPV6_RTHDR
+       sysIPV6_RECVDSTOPTS  = C.IPV6_RECVDSTOPTS
+       sysIPV6_DSTOPTS      = C.IPV6_DSTOPTS
+       sysIPV6_RECVPATHMTU  = C.IPV6_RECVPATHMTU
+       sysIPV6_PATHMTU      = C.IPV6_PATHMTU
+       sysIPV6_DONTFRAG     = C.IPV6_DONTFRAG
+
+       sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS
+       sysIPV6_TCLASS     = C.IPV6_TCLASS
+
+       sysIPV6_ADDR_PREFERENCES = C.IPV6_ADDR_PREFERENCES
+
+       sysIPV6_PREFER_SRC_TMP            = C.IPV6_PREFER_SRC_TMP
+       sysIPV6_PREFER_SRC_PUBLIC         = C.IPV6_PREFER_SRC_PUBLIC
+       sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = C.IPV6_PREFER_SRC_PUBTMP_DEFAULT
+       sysIPV6_PREFER_SRC_COA            = C.IPV6_PREFER_SRC_COA
+       sysIPV6_PREFER_SRC_HOME           = C.IPV6_PREFER_SRC_HOME
+       sysIPV6_PREFER_SRC_CGA            = C.IPV6_PREFER_SRC_CGA
+       sysIPV6_PREFER_SRC_NONCGA         = C.IPV6_PREFER_SRC_NONCGA
+
+       sysIPV6_MINHOPCOUNT = C.IPV6_MINHOPCOUNT
+
+       sysIPV6_ORIGDSTADDR     = C.IPV6_ORIGDSTADDR
+       sysIPV6_RECVORIGDSTADDR = C.IPV6_RECVORIGDSTADDR
+       sysIPV6_TRANSPARENT     = C.IPV6_TRANSPARENT
+       sysIPV6_UNICAST_IF      = C.IPV6_UNICAST_IF
+
+       sysICMPV6_FILTER = C.ICMPV6_FILTER
+
+       sysICMPV6_FILTER_BLOCK       = C.ICMPV6_FILTER_BLOCK
+       sysICMPV6_FILTER_PASS        = C.ICMPV6_FILTER_PASS
+       sysICMPV6_FILTER_BLOCKOTHERS = C.ICMPV6_FILTER_BLOCKOTHERS
+       sysICMPV6_FILTER_PASSONLY    = C.ICMPV6_FILTER_PASSONLY
+
+       sysSizeofKernelSockaddrStorage = C.sizeof_struct___kernel_sockaddr_storage
+       sysSizeofSockaddrInet6         = C.sizeof_struct_sockaddr_in6
+       sysSizeofInet6Pktinfo          = C.sizeof_struct_in6_pktinfo
+       sysSizeofIPv6Mtuinfo           = C.sizeof_struct_ip6_mtuinfo
+       sysSizeofIPv6FlowlabelReq      = C.sizeof_struct_in6_flowlabel_req
+
+       sysSizeofIPv6Mreq       = C.sizeof_struct_ipv6_mreq
+       sysSizeofGroupReq       = C.sizeof_struct_group_req
+       sysSizeofGroupSourceReq = C.sizeof_struct_group_source_req
+
+       sysSizeofICMPv6Filter = C.sizeof_struct_icmp6_filter
+)
+
+type sysKernelSockaddrStorage C.struct___kernel_sockaddr_storage
+
+type sysSockaddrInet6 C.struct_sockaddr_in6
+
+type sysInet6Pktinfo C.struct_in6_pktinfo
+
+type sysIPv6Mtuinfo C.struct_ip6_mtuinfo
+
+type sysIPv6FlowlabelReq C.struct_in6_flowlabel_req
+
+type sysIPv6Mreq C.struct_ipv6_mreq
+
+type sysGroupReq C.struct_group_req
+
+type sysGroupSourceReq C.struct_group_source_req
+
+type sysICMPv6Filter C.struct_icmp6_filter
diff --git a/vendor/golang.org/x/net/ipv6/defs_netbsd.go b/vendor/golang.org/x/net/ipv6/defs_netbsd.go
new file mode 100644 (file)
index 0000000..7bd09e8
--- /dev/null
@@ -0,0 +1,80 @@
+// Copyright 2014 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.
+
+// +build ignore
+
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package ipv6
+
+/*
+#include <sys/param.h>
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+#include <netinet/icmp6.h>
+*/
+import "C"
+
+const (
+       sysIPV6_UNICAST_HOPS   = C.IPV6_UNICAST_HOPS
+       sysIPV6_MULTICAST_IF   = C.IPV6_MULTICAST_IF
+       sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS
+       sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP
+       sysIPV6_JOIN_GROUP     = C.IPV6_JOIN_GROUP
+       sysIPV6_LEAVE_GROUP    = C.IPV6_LEAVE_GROUP
+       sysIPV6_PORTRANGE      = C.IPV6_PORTRANGE
+       sysICMP6_FILTER        = C.ICMP6_FILTER
+
+       sysIPV6_CHECKSUM = C.IPV6_CHECKSUM
+       sysIPV6_V6ONLY   = C.IPV6_V6ONLY
+
+       sysIPV6_IPSEC_POLICY = C.IPV6_IPSEC_POLICY
+
+       sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS
+
+       sysIPV6_RECVPKTINFO  = C.IPV6_RECVPKTINFO
+       sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT
+       sysIPV6_RECVRTHDR    = C.IPV6_RECVRTHDR
+       sysIPV6_RECVHOPOPTS  = C.IPV6_RECVHOPOPTS
+       sysIPV6_RECVDSTOPTS  = C.IPV6_RECVDSTOPTS
+
+       sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU
+       sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU
+       sysIPV6_PATHMTU     = C.IPV6_PATHMTU
+
+       sysIPV6_PKTINFO  = C.IPV6_PKTINFO
+       sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT
+       sysIPV6_NEXTHOP  = C.IPV6_NEXTHOP
+       sysIPV6_HOPOPTS  = C.IPV6_HOPOPTS
+       sysIPV6_DSTOPTS  = C.IPV6_DSTOPTS
+       sysIPV6_RTHDR    = C.IPV6_RTHDR
+
+       sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS
+
+       sysIPV6_TCLASS   = C.IPV6_TCLASS
+       sysIPV6_DONTFRAG = C.IPV6_DONTFRAG
+
+       sysIPV6_PORTRANGE_DEFAULT = C.IPV6_PORTRANGE_DEFAULT
+       sysIPV6_PORTRANGE_HIGH    = C.IPV6_PORTRANGE_HIGH
+       sysIPV6_PORTRANGE_LOW     = C.IPV6_PORTRANGE_LOW
+
+       sysSizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6
+       sysSizeofInet6Pktinfo  = C.sizeof_struct_in6_pktinfo
+       sysSizeofIPv6Mtuinfo   = C.sizeof_struct_ip6_mtuinfo
+
+       sysSizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq
+
+       sysSizeofICMPv6Filter = C.sizeof_struct_icmp6_filter
+)
+
+type sysSockaddrInet6 C.struct_sockaddr_in6
+
+type sysInet6Pktinfo C.struct_in6_pktinfo
+
+type sysIPv6Mtuinfo C.struct_ip6_mtuinfo
+
+type sysIPv6Mreq C.struct_ipv6_mreq
+
+type sysICMPv6Filter C.struct_icmp6_filter
diff --git a/vendor/golang.org/x/net/ipv6/defs_openbsd.go b/vendor/golang.org/x/net/ipv6/defs_openbsd.go
new file mode 100644 (file)
index 0000000..6796d9b
--- /dev/null
@@ -0,0 +1,89 @@
+// Copyright 2014 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.
+
+// +build ignore
+
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package ipv6
+
+/*
+#include <sys/param.h>
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+#include <netinet/icmp6.h>
+*/
+import "C"
+
+const (
+       sysIPV6_UNICAST_HOPS   = C.IPV6_UNICAST_HOPS
+       sysIPV6_MULTICAST_IF   = C.IPV6_MULTICAST_IF
+       sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS
+       sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP
+       sysIPV6_JOIN_GROUP     = C.IPV6_JOIN_GROUP
+       sysIPV6_LEAVE_GROUP    = C.IPV6_LEAVE_GROUP
+       sysIPV6_PORTRANGE      = C.IPV6_PORTRANGE
+       sysICMP6_FILTER        = C.ICMP6_FILTER
+
+       sysIPV6_CHECKSUM = C.IPV6_CHECKSUM
+       sysIPV6_V6ONLY   = C.IPV6_V6ONLY
+
+       sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS
+
+       sysIPV6_RECVPKTINFO  = C.IPV6_RECVPKTINFO
+       sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT
+       sysIPV6_RECVRTHDR    = C.IPV6_RECVRTHDR
+       sysIPV6_RECVHOPOPTS  = C.IPV6_RECVHOPOPTS
+       sysIPV6_RECVDSTOPTS  = C.IPV6_RECVDSTOPTS
+
+       sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU
+       sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU
+
+       sysIPV6_PATHMTU = C.IPV6_PATHMTU
+
+       sysIPV6_PKTINFO  = C.IPV6_PKTINFO
+       sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT
+       sysIPV6_NEXTHOP  = C.IPV6_NEXTHOP
+       sysIPV6_HOPOPTS  = C.IPV6_HOPOPTS
+       sysIPV6_DSTOPTS  = C.IPV6_DSTOPTS
+       sysIPV6_RTHDR    = C.IPV6_RTHDR
+
+       sysIPV6_AUTH_LEVEL        = C.IPV6_AUTH_LEVEL
+       sysIPV6_ESP_TRANS_LEVEL   = C.IPV6_ESP_TRANS_LEVEL
+       sysIPV6_ESP_NETWORK_LEVEL = C.IPV6_ESP_NETWORK_LEVEL
+       sysIPSEC6_OUTSA           = C.IPSEC6_OUTSA
+       sysIPV6_RECVTCLASS        = C.IPV6_RECVTCLASS
+
+       sysIPV6_AUTOFLOWLABEL = C.IPV6_AUTOFLOWLABEL
+       sysIPV6_IPCOMP_LEVEL  = C.IPV6_IPCOMP_LEVEL
+
+       sysIPV6_TCLASS   = C.IPV6_TCLASS
+       sysIPV6_DONTFRAG = C.IPV6_DONTFRAG
+       sysIPV6_PIPEX    = C.IPV6_PIPEX
+
+       sysIPV6_RTABLE = C.IPV6_RTABLE
+
+       sysIPV6_PORTRANGE_DEFAULT = C.IPV6_PORTRANGE_DEFAULT
+       sysIPV6_PORTRANGE_HIGH    = C.IPV6_PORTRANGE_HIGH
+       sysIPV6_PORTRANGE_LOW     = C.IPV6_PORTRANGE_LOW
+
+       sysSizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6
+       sysSizeofInet6Pktinfo  = C.sizeof_struct_in6_pktinfo
+       sysSizeofIPv6Mtuinfo   = C.sizeof_struct_ip6_mtuinfo
+
+       sysSizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq
+
+       sysSizeofICMPv6Filter = C.sizeof_struct_icmp6_filter
+)
+
+type sysSockaddrInet6 C.struct_sockaddr_in6
+
+type sysInet6Pktinfo C.struct_in6_pktinfo
+
+type sysIPv6Mtuinfo C.struct_ip6_mtuinfo
+
+type sysIPv6Mreq C.struct_ipv6_mreq
+
+type sysICMPv6Filter C.struct_icmp6_filter
diff --git a/vendor/golang.org/x/net/ipv6/defs_solaris.go b/vendor/golang.org/x/net/ipv6/defs_solaris.go
new file mode 100644 (file)
index 0000000..972b171
--- /dev/null
@@ -0,0 +1,96 @@
+// Copyright 2014 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.
+
+// +build ignore
+
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package ipv6
+
+/*
+#include <netinet/in.h>
+#include <netinet/icmp6.h>
+*/
+import "C"
+
+const (
+       sysIPV6_UNICAST_HOPS   = C.IPV6_UNICAST_HOPS
+       sysIPV6_MULTICAST_IF   = C.IPV6_MULTICAST_IF
+       sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS
+       sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP
+       sysIPV6_JOIN_GROUP     = C.IPV6_JOIN_GROUP
+       sysIPV6_LEAVE_GROUP    = C.IPV6_LEAVE_GROUP
+
+       sysIPV6_PKTINFO = C.IPV6_PKTINFO
+
+       sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT
+       sysIPV6_NEXTHOP  = C.IPV6_NEXTHOP
+       sysIPV6_HOPOPTS  = C.IPV6_HOPOPTS
+       sysIPV6_DSTOPTS  = C.IPV6_DSTOPTS
+
+       sysIPV6_RTHDR        = C.IPV6_RTHDR
+       sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS
+
+       sysIPV6_RECVPKTINFO  = C.IPV6_RECVPKTINFO
+       sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT
+       sysIPV6_RECVHOPOPTS  = C.IPV6_RECVHOPOPTS
+
+       sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR
+
+       sysIPV6_RECVRTHDRDSTOPTS = C.IPV6_RECVRTHDRDSTOPTS
+
+       sysIPV6_CHECKSUM        = C.IPV6_CHECKSUM
+       sysIPV6_RECVTCLASS      = C.IPV6_RECVTCLASS
+       sysIPV6_USE_MIN_MTU     = C.IPV6_USE_MIN_MTU
+       sysIPV6_DONTFRAG        = C.IPV6_DONTFRAG
+       sysIPV6_SEC_OPT         = C.IPV6_SEC_OPT
+       sysIPV6_SRC_PREFERENCES = C.IPV6_SRC_PREFERENCES
+       sysIPV6_RECVPATHMTU     = C.IPV6_RECVPATHMTU
+       sysIPV6_PATHMTU         = C.IPV6_PATHMTU
+       sysIPV6_TCLASS          = C.IPV6_TCLASS
+       sysIPV6_V6ONLY          = C.IPV6_V6ONLY
+
+       sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS
+
+       sysIPV6_PREFER_SRC_HOME   = C.IPV6_PREFER_SRC_HOME
+       sysIPV6_PREFER_SRC_COA    = C.IPV6_PREFER_SRC_COA
+       sysIPV6_PREFER_SRC_PUBLIC = C.IPV6_PREFER_SRC_PUBLIC
+       sysIPV6_PREFER_SRC_TMP    = C.IPV6_PREFER_SRC_TMP
+       sysIPV6_PREFER_SRC_NONCGA = C.IPV6_PREFER_SRC_NONCGA
+       sysIPV6_PREFER_SRC_CGA    = C.IPV6_PREFER_SRC_CGA
+
+       sysIPV6_PREFER_SRC_MIPMASK    = C.IPV6_PREFER_SRC_MIPMASK
+       sysIPV6_PREFER_SRC_MIPDEFAULT = C.IPV6_PREFER_SRC_MIPDEFAULT
+       sysIPV6_PREFER_SRC_TMPMASK    = C.IPV6_PREFER_SRC_TMPMASK
+       sysIPV6_PREFER_SRC_TMPDEFAULT = C.IPV6_PREFER_SRC_TMPDEFAULT
+       sysIPV6_PREFER_SRC_CGAMASK    = C.IPV6_PREFER_SRC_CGAMASK
+       sysIPV6_PREFER_SRC_CGADEFAULT = C.IPV6_PREFER_SRC_CGADEFAULT
+
+       sysIPV6_PREFER_SRC_MASK = C.IPV6_PREFER_SRC_MASK
+
+       sysIPV6_PREFER_SRC_DEFAULT = C.IPV6_PREFER_SRC_DEFAULT
+
+       sysIPV6_BOUND_IF   = C.IPV6_BOUND_IF
+       sysIPV6_UNSPEC_SRC = C.IPV6_UNSPEC_SRC
+
+       sysICMP6_FILTER = C.ICMP6_FILTER
+
+       sysSizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6
+       sysSizeofInet6Pktinfo  = C.sizeof_struct_in6_pktinfo
+       sysSizeofIPv6Mtuinfo   = C.sizeof_struct_ip6_mtuinfo
+
+       sysSizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq
+
+       sysSizeofICMPv6Filter = C.sizeof_struct_icmp6_filter
+)
+
+type sysSockaddrInet6 C.struct_sockaddr_in6
+
+type sysInet6Pktinfo C.struct_in6_pktinfo
+
+type sysIPv6Mtuinfo C.struct_ip6_mtuinfo
+
+type sysIPv6Mreq C.struct_ipv6_mreq
+
+type sysICMPv6Filter C.struct_icmp6_filter
diff --git a/vendor/golang.org/x/net/ipv6/dgramopt_posix.go b/vendor/golang.org/x/net/ipv6/dgramopt_posix.go
new file mode 100644 (file)
index 0000000..93ff2f1
--- /dev/null
@@ -0,0 +1,288 @@
+// Copyright 2013 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.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd windows
+
+package ipv6
+
+import (
+       "net"
+       "syscall"
+)
+
+// MulticastHopLimit returns the hop limit field value for outgoing
+// multicast packets.
+func (c *dgramOpt) MulticastHopLimit() (int, error) {
+       if !c.ok() {
+               return 0, syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return 0, err
+       }
+       return getInt(fd, &sockOpts[ssoMulticastHopLimit])
+}
+
+// SetMulticastHopLimit sets the hop limit field value for future
+// outgoing multicast packets.
+func (c *dgramOpt) SetMulticastHopLimit(hoplim int) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return err
+       }
+       return setInt(fd, &sockOpts[ssoMulticastHopLimit], hoplim)
+}
+
+// MulticastInterface returns the default interface for multicast
+// packet transmissions.
+func (c *dgramOpt) MulticastInterface() (*net.Interface, error) {
+       if !c.ok() {
+               return nil, syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return nil, err
+       }
+       return getInterface(fd, &sockOpts[ssoMulticastInterface])
+}
+
+// SetMulticastInterface sets the default interface for future
+// multicast packet transmissions.
+func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return err
+       }
+       return setInterface(fd, &sockOpts[ssoMulticastInterface], ifi)
+}
+
+// MulticastLoopback reports whether transmitted multicast packets
+// should be copied and send back to the originator.
+func (c *dgramOpt) MulticastLoopback() (bool, error) {
+       if !c.ok() {
+               return false, syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return false, err
+       }
+       on, err := getInt(fd, &sockOpts[ssoMulticastLoopback])
+       if err != nil {
+               return false, err
+       }
+       return on == 1, nil
+}
+
+// SetMulticastLoopback sets whether transmitted multicast packets
+// should be copied and send back to the originator.
+func (c *dgramOpt) SetMulticastLoopback(on bool) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return err
+       }
+       return setInt(fd, &sockOpts[ssoMulticastLoopback], boolint(on))
+}
+
+// JoinGroup joins the group address group on the interface ifi.
+// By default all sources that can cast data to group are accepted.
+// It's possible to mute and unmute data transmission from a specific
+// source by using ExcludeSourceSpecificGroup and
+// IncludeSourceSpecificGroup.
+// JoinGroup uses the system assigned multicast interface when ifi is
+// nil, although this is not recommended because the assignment
+// depends on platforms and sometimes it might require routing
+// configuration.
+func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return err
+       }
+       grp := netAddrToIP16(group)
+       if grp == nil {
+               return errMissingAddress
+       }
+       return setGroup(fd, &sockOpts[ssoJoinGroup], ifi, grp)
+}
+
+// LeaveGroup leaves the group address group on the interface ifi
+// regardless of whether the group is any-source group or
+// source-specific group.
+func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return err
+       }
+       grp := netAddrToIP16(group)
+       if grp == nil {
+               return errMissingAddress
+       }
+       return setGroup(fd, &sockOpts[ssoLeaveGroup], ifi, grp)
+}
+
+// JoinSourceSpecificGroup joins the source-specific group comprising
+// group and source on the interface ifi.
+// JoinSourceSpecificGroup uses the system assigned multicast
+// interface when ifi is nil, although this is not recommended because
+// the assignment depends on platforms and sometimes it might require
+// routing configuration.
+func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return err
+       }
+       grp := netAddrToIP16(group)
+       if grp == nil {
+               return errMissingAddress
+       }
+       src := netAddrToIP16(source)
+       if src == nil {
+               return errMissingAddress
+       }
+       return setSourceGroup(fd, &sockOpts[ssoJoinSourceGroup], ifi, grp, src)
+}
+
+// LeaveSourceSpecificGroup leaves the source-specific group on the
+// interface ifi.
+func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return err
+       }
+       grp := netAddrToIP16(group)
+       if grp == nil {
+               return errMissingAddress
+       }
+       src := netAddrToIP16(source)
+       if src == nil {
+               return errMissingAddress
+       }
+       return setSourceGroup(fd, &sockOpts[ssoLeaveSourceGroup], ifi, grp, src)
+}
+
+// ExcludeSourceSpecificGroup excludes the source-specific group from
+// the already joined any-source groups by JoinGroup on the interface
+// ifi.
+func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return err
+       }
+       grp := netAddrToIP16(group)
+       if grp == nil {
+               return errMissingAddress
+       }
+       src := netAddrToIP16(source)
+       if src == nil {
+               return errMissingAddress
+       }
+       return setSourceGroup(fd, &sockOpts[ssoBlockSourceGroup], ifi, grp, src)
+}
+
+// IncludeSourceSpecificGroup includes the excluded source-specific
+// group by ExcludeSourceSpecificGroup again on the interface ifi.
+func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return err
+       }
+       grp := netAddrToIP16(group)
+       if grp == nil {
+               return errMissingAddress
+       }
+       src := netAddrToIP16(source)
+       if src == nil {
+               return errMissingAddress
+       }
+       return setSourceGroup(fd, &sockOpts[ssoUnblockSourceGroup], ifi, grp, src)
+}
+
+// Checksum reports whether the kernel will compute, store or verify a
+// checksum for both incoming and outgoing packets.  If on is true, it
+// returns an offset in bytes into the data of where the checksum
+// field is located.
+func (c *dgramOpt) Checksum() (on bool, offset int, err error) {
+       if !c.ok() {
+               return false, 0, syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return false, 0, err
+       }
+       offset, err = getInt(fd, &sockOpts[ssoChecksum])
+       if err != nil {
+               return false, 0, err
+       }
+       if offset < 0 {
+               return false, 0, nil
+       }
+       return true, offset, nil
+}
+
+// SetChecksum enables the kernel checksum processing.  If on is ture,
+// the offset should be an offset in bytes into the data of where the
+// checksum field is located.
+func (c *dgramOpt) SetChecksum(on bool, offset int) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return err
+       }
+       if !on {
+               offset = -1
+       }
+       return setInt(fd, &sockOpts[ssoChecksum], offset)
+}
+
+// ICMPFilter returns an ICMP filter.
+func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) {
+       if !c.ok() {
+               return nil, syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return nil, err
+       }
+       return getICMPFilter(fd, &sockOpts[ssoICMPFilter])
+}
+
+// SetICMPFilter deploys the ICMP filter.
+func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return err
+       }
+       return setICMPFilter(fd, &sockOpts[ssoICMPFilter], f)
+}
diff --git a/vendor/golang.org/x/net/ipv6/dgramopt_stub.go b/vendor/golang.org/x/net/ipv6/dgramopt_stub.go
new file mode 100644 (file)
index 0000000..fb067fb
--- /dev/null
@@ -0,0 +1,119 @@
+// Copyright 2013 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.
+
+// +build nacl plan9 solaris
+
+package ipv6
+
+import "net"
+
+// MulticastHopLimit returns the hop limit field value for outgoing
+// multicast packets.
+func (c *dgramOpt) MulticastHopLimit() (int, error) {
+       return 0, errOpNoSupport
+}
+
+// SetMulticastHopLimit sets the hop limit field value for future
+// outgoing multicast packets.
+func (c *dgramOpt) SetMulticastHopLimit(hoplim int) error {
+       return errOpNoSupport
+}
+
+// MulticastInterface returns the default interface for multicast
+// packet transmissions.
+func (c *dgramOpt) MulticastInterface() (*net.Interface, error) {
+       return nil, errOpNoSupport
+}
+
+// SetMulticastInterface sets the default interface for future
+// multicast packet transmissions.
+func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error {
+       return errOpNoSupport
+}
+
+// MulticastLoopback reports whether transmitted multicast packets
+// should be copied and send back to the originator.
+func (c *dgramOpt) MulticastLoopback() (bool, error) {
+       return false, errOpNoSupport
+}
+
+// SetMulticastLoopback sets whether transmitted multicast packets
+// should be copied and send back to the originator.
+func (c *dgramOpt) SetMulticastLoopback(on bool) error {
+       return errOpNoSupport
+}
+
+// JoinGroup joins the group address group on the interface ifi.
+// By default all sources that can cast data to group are accepted.
+// It's possible to mute and unmute data transmission from a specific
+// source by using ExcludeSourceSpecificGroup and
+// IncludeSourceSpecificGroup.
+// JoinGroup uses the system assigned multicast interface when ifi is
+// nil, although this is not recommended because the assignment
+// depends on platforms and sometimes it might require routing
+// configuration.
+func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error {
+       return errOpNoSupport
+}
+
+// LeaveGroup leaves the group address group on the interface ifi
+// regardless of whether the group is any-source group or
+// source-specific group.
+func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error {
+       return errOpNoSupport
+}
+
+// JoinSourceSpecificGroup joins the source-specific group comprising
+// group and source on the interface ifi.
+// JoinSourceSpecificGroup uses the system assigned multicast
+// interface when ifi is nil, although this is not recommended because
+// the assignment depends on platforms and sometimes it might require
+// routing configuration.
+func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
+       return errOpNoSupport
+}
+
+// LeaveSourceSpecificGroup leaves the source-specific group on the
+// interface ifi.
+func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
+       return errOpNoSupport
+}
+
+// ExcludeSourceSpecificGroup excludes the source-specific group from
+// the already joined any-source groups by JoinGroup on the interface
+// ifi.
+func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
+       return errOpNoSupport
+}
+
+// IncludeSourceSpecificGroup includes the excluded source-specific
+// group by ExcludeSourceSpecificGroup again on the interface ifi.
+func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error {
+       return errOpNoSupport
+}
+
+// Checksum reports whether the kernel will compute, store or verify a
+// checksum for both incoming and outgoing packets.  If on is true, it
+// returns an offset in bytes into the data of where the checksum
+// field is located.
+func (c *dgramOpt) Checksum() (on bool, offset int, err error) {
+       return false, 0, errOpNoSupport
+}
+
+// SetChecksum enables the kernel checksum processing.  If on is ture,
+// the offset should be an offset in bytes into the data of where the
+// checksum field is located.
+func (c *dgramOpt) SetChecksum(on bool, offset int) error {
+       return errOpNoSupport
+}
+
+// ICMPFilter returns an ICMP filter.
+func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) {
+       return nil, errOpNoSupport
+}
+
+// SetICMPFilter deploys the ICMP filter.
+func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error {
+       return errOpNoSupport
+}
diff --git a/vendor/golang.org/x/net/ipv6/doc.go b/vendor/golang.org/x/net/ipv6/doc.go
new file mode 100644 (file)
index 0000000..dd13aa2
--- /dev/null
@@ -0,0 +1,240 @@
+// Copyright 2013 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 ipv6 implements IP-level socket options for the Internet
+// Protocol version 6.
+//
+// The package provides IP-level socket options that allow
+// manipulation of IPv6 facilities.
+//
+// The IPv6 protocol is defined in RFC 2460.
+// Basic and advanced socket interface extensions are defined in RFC
+// 3493 and RFC 3542.
+// Socket interface extensions for multicast source filters are
+// defined in RFC 3678.
+// MLDv1 and MLDv2 are defined in RFC 2710 and RFC 3810.
+// Source-specific multicast is defined in RFC 4607.
+//
+//
+// Unicasting
+//
+// The options for unicasting are available for net.TCPConn,
+// net.UDPConn and net.IPConn which are created as network connections
+// that use the IPv6 transport.  When a single TCP connection carrying
+// a data flow of multiple packets needs to indicate the flow is
+// important, ipv6.Conn is used to set the traffic class field on the
+// IPv6 header for each packet.
+//
+//     ln, err := net.Listen("tcp6", "[::]:1024")
+//     if err != nil {
+//             // error handling
+//     }
+//     defer ln.Close()
+//     for {
+//             c, err := ln.Accept()
+//             if err != nil {
+//                     // error handling
+//             }
+//             go func(c net.Conn) {
+//                     defer c.Close()
+//
+// The outgoing packets will be labeled DiffServ assured forwarding
+// class 1 low drop precedence, known as AF11 packets.
+//
+//                     if err := ipv6.NewConn(c).SetTrafficClass(0x28); err != nil {
+//                             // error handling
+//                     }
+//                     if _, err := c.Write(data); err != nil {
+//                             // error handling
+//                     }
+//             }(c)
+//     }
+//
+//
+// Multicasting
+//
+// The options for multicasting are available for net.UDPConn and
+// net.IPconn which are created as network connections that use the
+// IPv6 transport.  A few network facilities must be prepared before
+// you begin multicasting, at a minimum joining network interfaces and
+// multicast groups.
+//
+//     en0, err := net.InterfaceByName("en0")
+//     if err != nil {
+//             // error handling
+//     }
+//     en1, err := net.InterfaceByIndex(911)
+//     if err != nil {
+//             // error handling
+//     }
+//     group := net.ParseIP("ff02::114")
+//
+// First, an application listens to an appropriate address with an
+// appropriate service port.
+//
+//     c, err := net.ListenPacket("udp6", "[::]:1024")
+//     if err != nil {
+//             // error handling
+//     }
+//     defer c.Close()
+//
+// Second, the application joins multicast groups, starts listening to
+// the groups on the specified network interfaces.  Note that the
+// service port for transport layer protocol does not matter with this
+// operation as joining groups affects only network and link layer
+// protocols, such as IPv6 and Ethernet.
+//
+//     p := ipv6.NewPacketConn(c)
+//     if err := p.JoinGroup(en0, &net.UDPAddr{IP: group}); err != nil {
+//             // error handling
+//     }
+//     if err := p.JoinGroup(en1, &net.UDPAddr{IP: group}); err != nil {
+//             // error handling
+//     }
+//
+// The application might set per packet control message transmissions
+// between the protocol stack within the kernel.  When the application
+// needs a destination address on an incoming packet,
+// SetControlMessage of ipv6.PacketConn is used to enable control
+// message transmissons.
+//
+//     if err := p.SetControlMessage(ipv6.FlagDst, true); err != nil {
+//             // error handling
+//     }
+//
+// The application could identify whether the received packets are
+// of interest by using the control message that contains the
+// destination address of the received packet.
+//
+//     b := make([]byte, 1500)
+//     for {
+//             n, rcm, src, err := p.ReadFrom(b)
+//             if err != nil {
+//                     // error handling
+//             }
+//             if rcm.Dst.IsMulticast() {
+//                     if rcm.Dst.Equal(group) {
+//                             // joined group, do something
+//                     } else {
+//                             // unknown group, discard
+//                             continue
+//                     }
+//             }
+//
+// The application can also send both unicast and multicast packets.
+//
+//             p.SetTrafficClass(0x0)
+//             p.SetHopLimit(16)
+//             if _, err := p.WriteTo(data[:n], nil, src); err != nil {
+//                     // error handling
+//             }
+//             dst := &net.UDPAddr{IP: group, Port: 1024}
+//             wcm := ipv6.ControlMessage{TrafficClass: 0xe0, HopLimit: 1}
+//             for _, ifi := range []*net.Interface{en0, en1} {
+//                     wcm.IfIndex = ifi.Index
+//                     if _, err := p.WriteTo(data[:n], &wcm, dst); err != nil {
+//                             // error handling
+//                     }
+//             }
+//     }
+//
+//
+// More multicasting
+//
+// An application that uses PacketConn may join multiple multicast
+// groups.  For example, a UDP listener with port 1024 might join two
+// different groups across over two different network interfaces by
+// using:
+//
+//     c, err := net.ListenPacket("udp6", "[::]:1024")
+//     if err != nil {
+//             // error handling
+//     }
+//     defer c.Close()
+//     p := ipv6.NewPacketConn(c)
+//     if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff02::1:114")}); err != nil {
+//             // error handling
+//     }
+//     if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff02::2:114")}); err != nil {
+//             // error handling
+//     }
+//     if err := p.JoinGroup(en1, &net.UDPAddr{IP: net.ParseIP("ff02::2:114")}); err != nil {
+//             // error handling
+//     }
+//
+// It is possible for multiple UDP listeners that listen on the same
+// UDP port to join the same multicast group.  The net package will
+// provide a socket that listens to a wildcard address with reusable
+// UDP port when an appropriate multicast address prefix is passed to
+// the net.ListenPacket or net.ListenUDP.
+//
+//     c1, err := net.ListenPacket("udp6", "[ff02::]:1024")
+//     if err != nil {
+//             // error handling
+//     }
+//     defer c1.Close()
+//     c2, err := net.ListenPacket("udp6", "[ff02::]:1024")
+//     if err != nil {
+//             // error handling
+//     }
+//     defer c2.Close()
+//     p1 := ipv6.NewPacketConn(c1)
+//     if err := p1.JoinGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff02::114")}); err != nil {
+//             // error handling
+//     }
+//     p2 := ipv6.NewPacketConn(c2)
+//     if err := p2.JoinGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff02::114")}); err != nil {
+//             // error handling
+//     }
+//
+// Also it is possible for the application to leave or rejoin a
+// multicast group on the network interface.
+//
+//     if err := p.LeaveGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff02::114")}); err != nil {
+//             // error handling
+//     }
+//     if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff01::114")}); err != nil {
+//             // error handling
+//     }
+//
+//
+// Source-specific multicasting
+//
+// An application that uses PacketConn on MLDv2 supported platform is
+// able to join source-specific multicast groups.
+// The application may use JoinSourceSpecificGroup and
+// LeaveSourceSpecificGroup for the operation known as "include" mode,
+//
+//     ssmgroup := net.UDPAddr{IP: net.ParseIP("ff32::8000:9")}
+//     ssmsource := net.UDPAddr{IP: net.ParseIP("fe80::cafe")}
+//     if err := p.JoinSourceSpecificGroup(en0, &ssmgroup, &ssmsource); err != nil {
+//             // error handling
+//     }
+//     if err := p.LeaveSourceSpecificGroup(en0, &ssmgroup, &ssmsource); err != nil {
+//             // error handling
+//     }
+//
+// or JoinGroup, ExcludeSourceSpecificGroup,
+// IncludeSourceSpecificGroup and LeaveGroup for the operation known
+// as "exclude" mode.
+//
+//     exclsource := net.UDPAddr{IP: net.ParseIP("fe80::dead")}
+//     if err := p.JoinGroup(en0, &ssmgroup); err != nil {
+//             // error handling
+//     }
+//     if err := p.ExcludeSourceSpecificGroup(en0, &ssmgroup, &exclsource); err != nil {
+//             // error handling
+//     }
+//     if err := p.LeaveGroup(en0, &ssmgroup); err != nil {
+//             // error handling
+//     }
+//
+// Note that it depends on each platform implementation what happens
+// when an application which runs on MLDv2 unsupported platform uses
+// JoinSourceSpecificGroup and LeaveSourceSpecificGroup.
+// In general the platform tries to fall back to conversations using
+// MLDv1 and starts to listen to multicast traffic.
+// In the fallback case, ExcludeSourceSpecificGroup and
+// IncludeSourceSpecificGroup may return an error.
+package ipv6 // import "golang.org/x/net/ipv6"
diff --git a/vendor/golang.org/x/net/ipv6/endpoint.go b/vendor/golang.org/x/net/ipv6/endpoint.go
new file mode 100644 (file)
index 0000000..966eaa8
--- /dev/null
@@ -0,0 +1,123 @@
+// Copyright 2013 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 ipv6
+
+import (
+       "net"
+       "syscall"
+       "time"
+)
+
+// A Conn represents a network endpoint that uses IPv6 transport.
+// It allows to set basic IP-level socket options such as traffic
+// class and hop limit.
+type Conn struct {
+       genericOpt
+}
+
+type genericOpt struct {
+       net.Conn
+}
+
+func (c *genericOpt) ok() bool { return c != nil && c.Conn != nil }
+
+// PathMTU returns a path MTU value for the destination associated
+// with the endpoint.
+func (c *Conn) PathMTU() (int, error) {
+       if !c.genericOpt.ok() {
+               return 0, syscall.EINVAL
+       }
+       fd, err := c.genericOpt.sysfd()
+       if err != nil {
+               return 0, err
+       }
+       _, mtu, err := getMTUInfo(fd, &sockOpts[ssoPathMTU])
+       if err != nil {
+               return 0, err
+       }
+       return mtu, nil
+}
+
+// NewConn returns a new Conn.
+func NewConn(c net.Conn) *Conn {
+       return &Conn{
+               genericOpt: genericOpt{Conn: c},
+       }
+}
+
+// A PacketConn represents a packet network endpoint that uses IPv6
+// transport.  It is used to control several IP-level socket options
+// including IPv6 header manipulation.  It also provides datagram
+// based network I/O methods specific to the IPv6 and higher layer
+// protocols such as OSPF, GRE, and UDP.
+type PacketConn struct {
+       genericOpt
+       dgramOpt
+       payloadHandler
+}
+
+type dgramOpt struct {
+       net.PacketConn
+}
+
+func (c *dgramOpt) ok() bool { return c != nil && c.PacketConn != nil }
+
+// SetControlMessage allows to receive the per packet basis IP-level
+// socket options.
+func (c *PacketConn) SetControlMessage(cf ControlFlags, on bool) error {
+       if !c.payloadHandler.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.payloadHandler.sysfd()
+       if err != nil {
+               return err
+       }
+       return setControlMessage(fd, &c.payloadHandler.rawOpt, cf, on)
+}
+
+// SetDeadline sets the read and write deadlines associated with the
+// endpoint.
+func (c *PacketConn) SetDeadline(t time.Time) error {
+       if !c.payloadHandler.ok() {
+               return syscall.EINVAL
+       }
+       return c.payloadHandler.SetDeadline(t)
+}
+
+// SetReadDeadline sets the read deadline associated with the
+// endpoint.
+func (c *PacketConn) SetReadDeadline(t time.Time) error {
+       if !c.payloadHandler.ok() {
+               return syscall.EINVAL
+       }
+       return c.payloadHandler.SetReadDeadline(t)
+}
+
+// SetWriteDeadline sets the write deadline associated with the
+// endpoint.
+func (c *PacketConn) SetWriteDeadline(t time.Time) error {
+       if !c.payloadHandler.ok() {
+               return syscall.EINVAL
+       }
+       return c.payloadHandler.SetWriteDeadline(t)
+}
+
+// Close closes the endpoint.
+func (c *PacketConn) Close() error {
+       if !c.payloadHandler.ok() {
+               return syscall.EINVAL
+       }
+       return c.payloadHandler.Close()
+}
+
+// NewPacketConn returns a new PacketConn using c as its underlying
+// transport.
+func NewPacketConn(c net.PacketConn) *PacketConn {
+       return &PacketConn{
+               genericOpt:     genericOpt{Conn: c.(net.Conn)},
+               dgramOpt:       dgramOpt{PacketConn: c},
+               payloadHandler: payloadHandler{PacketConn: c},
+       }
+}
diff --git a/vendor/golang.org/x/net/ipv6/gen.go b/vendor/golang.org/x/net/ipv6/gen.go
new file mode 100644 (file)
index 0000000..b1e0ea3
--- /dev/null
@@ -0,0 +1,208 @@
+// Copyright 2013 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.
+
+// +build ignore
+
+//go:generate go run gen.go
+
+// This program generates system adaptation constants and types,
+// internet protocol constants and tables by reading template files
+// and IANA protocol registries.
+package main
+
+import (
+       "bytes"
+       "encoding/xml"
+       "fmt"
+       "go/format"
+       "io"
+       "io/ioutil"
+       "net/http"
+       "os"
+       "os/exec"
+       "runtime"
+       "strconv"
+       "strings"
+)
+
+func main() {
+       if err := genzsys(); err != nil {
+               fmt.Fprintln(os.Stderr, err)
+               os.Exit(1)
+       }
+       if err := geniana(); err != nil {
+               fmt.Fprintln(os.Stderr, err)
+               os.Exit(1)
+       }
+}
+
+func genzsys() error {
+       defs := "defs_" + runtime.GOOS + ".go"
+       f, err := os.Open(defs)
+       if err != nil {
+               if os.IsNotExist(err) {
+                       return nil
+               }
+               return err
+       }
+       f.Close()
+       cmd := exec.Command("go", "tool", "cgo", "-godefs", defs)
+       b, err := cmd.Output()
+       if err != nil {
+               return err
+       }
+       // The ipv6 pacakge still supports go1.2, and so we need to
+       // take care of additional platforms in go1.3 and above for
+       // working with go1.2.
+       switch {
+       case runtime.GOOS == "dragonfly" || runtime.GOOS == "solaris":
+               b = bytes.Replace(b, []byte("package ipv6\n"), []byte("// +build "+runtime.GOOS+"\n\npackage ipv6\n"), 1)
+       case runtime.GOOS == "linux" && (runtime.GOARCH == "arm64" || runtime.GOARCH == "mips64" || runtime.GOARCH == "mips64le" || runtime.GOARCH == "ppc64" || runtime.GOARCH == "ppc64le"):
+               b = bytes.Replace(b, []byte("package ipv6\n"), []byte("// +build "+runtime.GOOS+","+runtime.GOARCH+"\n\npackage ipv6\n"), 1)
+       }
+       b, err = format.Source(b)
+       if err != nil {
+               return err
+       }
+       zsys := "zsys_" + runtime.GOOS + ".go"
+       switch runtime.GOOS {
+       case "freebsd", "linux":
+               zsys = "zsys_" + runtime.GOOS + "_" + runtime.GOARCH + ".go"
+       }
+       if err := ioutil.WriteFile(zsys, b, 0644); err != nil {
+               return err
+       }
+       return nil
+}
+
+var registries = []struct {
+       url   string
+       parse func(io.Writer, io.Reader) error
+}{
+       {
+               "http://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xml",
+               parseICMPv6Parameters,
+       },
+}
+
+func geniana() error {
+       var bb bytes.Buffer
+       fmt.Fprintf(&bb, "// go generate gen.go\n")
+       fmt.Fprintf(&bb, "// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT\n\n")
+       fmt.Fprintf(&bb, "package ipv6\n\n")
+       for _, r := range registries {
+               resp, err := http.Get(r.url)
+               if err != nil {
+                       return err
+               }
+               defer resp.Body.Close()
+               if resp.StatusCode != http.StatusOK {
+                       return fmt.Errorf("got HTTP status code %v for %v\n", resp.StatusCode, r.url)
+               }
+               if err := r.parse(&bb, resp.Body); err != nil {
+                       return err
+               }
+               fmt.Fprintf(&bb, "\n")
+       }
+       b, err := format.Source(bb.Bytes())
+       if err != nil {
+               return err
+       }
+       if err := ioutil.WriteFile("iana.go", b, 0644); err != nil {
+               return err
+       }
+       return nil
+}
+
+func parseICMPv6Parameters(w io.Writer, r io.Reader) error {
+       dec := xml.NewDecoder(r)
+       var icp icmpv6Parameters
+       if err := dec.Decode(&icp); err != nil {
+               return err
+       }
+       prs := icp.escape()
+       fmt.Fprintf(w, "// %s, Updated: %s\n", icp.Title, icp.Updated)
+       fmt.Fprintf(w, "const (\n")
+       for _, pr := range prs {
+               if pr.Name == "" {
+                       continue
+               }
+               fmt.Fprintf(w, "ICMPType%s ICMPType = %d", pr.Name, pr.Value)
+               fmt.Fprintf(w, "// %s\n", pr.OrigName)
+       }
+       fmt.Fprintf(w, ")\n\n")
+       fmt.Fprintf(w, "// %s, Updated: %s\n", icp.Title, icp.Updated)
+       fmt.Fprintf(w, "var icmpTypes = map[ICMPType]string{\n")
+       for _, pr := range prs {
+               if pr.Name == "" {
+                       continue
+               }
+               fmt.Fprintf(w, "%d: %q,\n", pr.Value, strings.ToLower(pr.OrigName))
+       }
+       fmt.Fprintf(w, "}\n")
+       return nil
+}
+
+type icmpv6Parameters struct {
+       XMLName    xml.Name `xml:"registry"`
+       Title      string   `xml:"title"`
+       Updated    string   `xml:"updated"`
+       Registries []struct {
+               Title   string `xml:"title"`
+               Records []struct {
+                       Value string `xml:"value"`
+                       Name  string `xml:"name"`
+               } `xml:"record"`
+       } `xml:"registry"`
+}
+
+type canonICMPv6ParamRecord struct {
+       OrigName string
+       Name     string
+       Value    int
+}
+
+func (icp *icmpv6Parameters) escape() []canonICMPv6ParamRecord {
+       id := -1
+       for i, r := range icp.Registries {
+               if strings.Contains(r.Title, "Type") || strings.Contains(r.Title, "type") {
+                       id = i
+                       break
+               }
+       }
+       if id < 0 {
+               return nil
+       }
+       prs := make([]canonICMPv6ParamRecord, len(icp.Registries[id].Records))
+       sr := strings.NewReplacer(
+               "Messages", "",
+               "Message", "",
+               "ICMP", "",
+               "+", "P",
+               "-", "",
+               "/", "",
+               ".", "",
+               " ", "",
+       )
+       for i, pr := range icp.Registries[id].Records {
+               if strings.Contains(pr.Name, "Reserved") ||
+                       strings.Contains(pr.Name, "Unassigned") ||
+                       strings.Contains(pr.Name, "Deprecated") ||
+                       strings.Contains(pr.Name, "Experiment") ||
+                       strings.Contains(pr.Name, "experiment") {
+                       continue
+               }
+               ss := strings.Split(pr.Name, "\n")
+               if len(ss) > 1 {
+                       prs[i].Name = strings.Join(ss, " ")
+               } else {
+                       prs[i].Name = ss[0]
+               }
+               s := strings.TrimSpace(prs[i].Name)
+               prs[i].OrigName = s
+               prs[i].Name = sr.Replace(s)
+               prs[i].Value, _ = strconv.Atoi(pr.Value)
+       }
+       return prs
+}
diff --git a/vendor/golang.org/x/net/ipv6/genericopt_posix.go b/vendor/golang.org/x/net/ipv6/genericopt_posix.go
new file mode 100644 (file)
index 0000000..dd77a01
--- /dev/null
@@ -0,0 +1,60 @@
+// Copyright 2013 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.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd windows
+
+package ipv6
+
+import "syscall"
+
+// TrafficClass returns the traffic class field value for outgoing
+// packets.
+func (c *genericOpt) TrafficClass() (int, error) {
+       if !c.ok() {
+               return 0, syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return 0, err
+       }
+       return getInt(fd, &sockOpts[ssoTrafficClass])
+}
+
+// SetTrafficClass sets the traffic class field value for future
+// outgoing packets.
+func (c *genericOpt) SetTrafficClass(tclass int) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return err
+       }
+       return setInt(fd, &sockOpts[ssoTrafficClass], tclass)
+}
+
+// HopLimit returns the hop limit field value for outgoing packets.
+func (c *genericOpt) HopLimit() (int, error) {
+       if !c.ok() {
+               return 0, syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return 0, err
+       }
+       return getInt(fd, &sockOpts[ssoHopLimit])
+}
+
+// SetHopLimit sets the hop limit field value for future outgoing
+// packets.
+func (c *genericOpt) SetHopLimit(hoplim int) error {
+       if !c.ok() {
+               return syscall.EINVAL
+       }
+       fd, err := c.sysfd()
+       if err != nil {
+               return err
+       }
+       return setInt(fd, &sockOpts[ssoHopLimit], hoplim)
+}
diff --git a/vendor/golang.org/x/net/ipv6/genericopt_stub.go b/vendor/golang.org/x/net/ipv6/genericopt_stub.go
new file mode 100644 (file)
index 0000000..f5c3722
--- /dev/null
@@ -0,0 +1,30 @@
+// Copyright 2013 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.
+
+// +build nacl plan9 solaris
+
+package ipv6
+
+// TrafficClass returns the traffic class field value for outgoing
+// packets.
+func (c *genericOpt) TrafficClass() (int, error) {
+       return 0, errOpNoSupport
+}
+
+// SetTrafficClass sets the traffic class field value for future
+// outgoing packets.
+func (c *genericOpt) SetTrafficClass(tclass int) error {
+       return errOpNoSupport
+}
+
+// HopLimit returns the hop limit field value for outgoing packets.
+func (c *genericOpt) HopLimit() (int, error) {
+       return 0, errOpNoSupport
+}
+
+// SetHopLimit sets the hop limit field value for future outgoing
+// packets.
+func (c *genericOpt) SetHopLimit(hoplim int) error {
+       return errOpNoSupport
+}
diff --git a/vendor/golang.org/x/net/ipv6/header.go b/vendor/golang.org/x/net/ipv6/header.go
new file mode 100644 (file)
index 0000000..e05cb08
--- /dev/null
@@ -0,0 +1,55 @@
+// Copyright 2014 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 ipv6
+
+import (
+       "encoding/binary"
+       "fmt"
+       "net"
+)
+
+const (
+       Version   = 6  // protocol version
+       HeaderLen = 40 // header length
+)
+
+// A Header represents an IPv6 base header.
+type Header struct {
+       Version      int    // protocol version
+       TrafficClass int    // traffic class
+       FlowLabel    int    // flow label
+       PayloadLen   int    // payload length
+       NextHeader   int    // next header
+       HopLimit     int    // hop limit
+       Src          net.IP // source address
+       Dst          net.IP // destination address
+}
+
+func (h *Header) String() string {
+       if h == nil {
+               return "<nil>"
+       }
+       return fmt.Sprintf("ver=%d tclass=%#x flowlbl=%#x payloadlen=%d nxthdr=%d hoplim=%d src=%v dst=%v", h.Version, h.TrafficClass, h.FlowLabel, h.PayloadLen, h.NextHeader, h.HopLimit, h.Src, h.Dst)
+}
+
+// ParseHeader parses b as an IPv6 base header.
+func ParseHeader(b []byte) (*Header, error) {
+       if len(b) < HeaderLen {
+               return nil, errHeaderTooShort
+       }
+       h := &Header{
+               Version:      int(b[0]) >> 4,
+               TrafficClass: int(b[0]&0x0f)<<4 | int(b[1])>>4,
+               FlowLabel:    int(b[1]&0x0f)<<16 | int(b[2])<<8 | int(b[3]),
+               PayloadLen:   int(binary.BigEndian.Uint16(b[4:6])),
+               NextHeader:   int(b[6]),
+               HopLimit:     int(b[7]),
+       }
+       h.Src = make(net.IP, net.IPv6len)
+       copy(h.Src, b[8:24])
+       h.Dst = make(net.IP, net.IPv6len)
+       copy(h.Dst, b[24:40])
+       return h, nil
+}
diff --git a/vendor/golang.org/x/net/ipv6/helper.go b/vendor/golang.org/x/net/ipv6/helper.go
new file mode 100644 (file)
index 0000000..53b9999
--- /dev/null
@@ -0,0 +1,53 @@
+// Copyright 2013 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 ipv6
+
+import (
+       "encoding/binary"
+       "errors"
+       "net"
+       "unsafe"
+)
+
+var (
+       errMissingAddress  = errors.New("missing address")
+       errHeaderTooShort  = errors.New("header too short")
+       errInvalidConnType = errors.New("invalid conn type")
+       errOpNoSupport     = errors.New("operation not supported")
+       errNoSuchInterface = errors.New("no such interface")
+
+       nativeEndian binary.ByteOrder
+)
+
+func init() {
+       i := uint32(1)
+       b := (*[4]byte)(unsafe.Pointer(&i))
+       if b[0] == 1 {
+               nativeEndian = binary.LittleEndian
+       } else {
+               nativeEndian = binary.BigEndian
+       }
+}
+
+func boolint(b bool) int {
+       if b {
+               return 1
+       }
+       return 0
+}
+
+func netAddrToIP16(a net.Addr) net.IP {
+       switch v := a.(type) {
+       case *net.UDPAddr:
+               if ip := v.IP.To16(); ip != nil && ip.To4() == nil {
+                       return ip
+               }
+       case *net.IPAddr:
+               if ip := v.IP.To16(); ip != nil && ip.To4() == nil {
+                       return ip
+               }
+       }
+       return nil
+}
diff --git a/vendor/golang.org/x/net/ipv6/helper_stub.go b/vendor/golang.org/x/net/ipv6/helper_stub.go
new file mode 100644 (file)
index 0000000..20354ab
--- /dev/null
@@ -0,0 +1,19 @@
+// Copyright 2013 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.
+
+// +build nacl plan9 solaris
+
+package ipv6
+
+func (c *genericOpt) sysfd() (int, error) {
+       return 0, errOpNoSupport
+}
+
+func (c *dgramOpt) sysfd() (int, error) {
+       return 0, errOpNoSupport
+}
+
+func (c *payloadHandler) sysfd() (int, error) {
+       return 0, errOpNoSupport
+}
diff --git a/vendor/golang.org/x/net/ipv6/helper_unix.go b/vendor/golang.org/x/net/ipv6/helper_unix.go
new file mode 100644 (file)
index 0000000..92868ed
--- /dev/null
@@ -0,0 +1,46 @@
+// Copyright 2013 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.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd
+
+package ipv6
+
+import (
+       "net"
+       "reflect"
+)
+
+func (c *genericOpt) sysfd() (int, error) {
+       switch p := c.Conn.(type) {
+       case *net.TCPConn, *net.UDPConn, *net.IPConn:
+               return sysfd(p)
+       }
+       return 0, errInvalidConnType
+}
+
+func (c *dgramOpt) sysfd() (int, error) {
+       switch p := c.PacketConn.(type) {
+       case *net.UDPConn, *net.IPConn:
+               return sysfd(p.(net.Conn))
+       }
+       return 0, errInvalidConnType
+}
+
+func (c *payloadHandler) sysfd() (int, error) {
+       return sysfd(c.PacketConn.(net.Conn))
+}
+
+func sysfd(c net.Conn) (int, error) {
+       cv := reflect.ValueOf(c)
+       switch ce := cv.Elem(); ce.Kind() {
+       case reflect.Struct:
+               nfd := ce.FieldByName("conn").FieldByName("fd")
+               switch fe := nfd.Elem(); fe.Kind() {
+               case reflect.Struct:
+                       fd := fe.FieldByName("sysfd")
+                       return int(fd.Int()), nil
+               }
+       }
+       return 0, errInvalidConnType
+}
diff --git a/vendor/golang.org/x/net/ipv6/helper_windows.go b/vendor/golang.org/x/net/ipv6/helper_windows.go
new file mode 100644 (file)
index 0000000..28c401b
--- /dev/null
@@ -0,0 +1,45 @@
+// Copyright 2013 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 ipv6
+
+import (
+       "net"
+       "reflect"
+       "syscall"
+)
+
+func (c *genericOpt) sysfd() (syscall.Handle, error) {
+       switch p := c.Conn.(type) {
+       case *net.TCPConn, *net.UDPConn, *net.IPConn:
+               return sysfd(p)
+       }
+       return syscall.InvalidHandle, errInvalidConnType
+}
+
+func (c *dgramOpt) sysfd() (syscall.Handle, error) {
+       switch p := c.PacketConn.(type) {
+       case *net.UDPConn, *net.IPConn:
+               return sysfd(p.(net.Conn))
+       }
+       return syscall.InvalidHandle, errInvalidConnType
+}
+
+func (c *payloadHandler) sysfd() (syscall.Handle, error) {
+       return sysfd(c.PacketConn.(net.Conn))
+}
+
+func sysfd(c net.Conn) (syscall.Handle, error) {
+       cv := reflect.ValueOf(c)
+       switch ce := cv.Elem(); ce.Kind() {
+       case reflect.Struct:
+               netfd := ce.FieldByName("conn").FieldByName("fd")
+               switch fe := netfd.Elem(); fe.Kind() {
+               case reflect.Struct:
+                       fd := fe.FieldByName("sysfd")
+                       return syscall.Handle(fd.Uint()), nil
+               }
+       }
+       return syscall.InvalidHandle, errInvalidConnType
+}
diff --git a/vendor/golang.org/x/net/ipv6/iana.go b/vendor/golang.org/x/net/ipv6/iana.go
new file mode 100644 (file)
index 0000000..3c6214f
--- /dev/null
@@ -0,0 +1,82 @@
+// go generate gen.go
+// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+package ipv6
+
+// Internet Control Message Protocol version 6 (ICMPv6) Parameters, Updated: 2015-07-07
+const (
+       ICMPTypeDestinationUnreachable                ICMPType = 1   // Destination Unreachable
+       ICMPTypePacketTooBig                          ICMPType = 2   // Packet Too Big
+       ICMPTypeTimeExceeded                          ICMPType = 3   // Time Exceeded
+       ICMPTypeParameterProblem                      ICMPType = 4   // Parameter Problem
+       ICMPTypeEchoRequest                           ICMPType = 128 // Echo Request
+       ICMPTypeEchoReply                             ICMPType = 129 // Echo Reply
+       ICMPTypeMulticastListenerQuery                ICMPType = 130 // Multicast Listener Query
+       ICMPTypeMulticastListenerReport               ICMPType = 131 // Multicast Listener Report
+       ICMPTypeMulticastListenerDone                 ICMPType = 132 // Multicast Listener Done
+       ICMPTypeRouterSolicitation                    ICMPType = 133 // Router Solicitation
+       ICMPTypeRouterAdvertisement                   ICMPType = 134 // Router Advertisement
+       ICMPTypeNeighborSolicitation                  ICMPType = 135 // Neighbor Solicitation
+       ICMPTypeNeighborAdvertisement                 ICMPType = 136 // Neighbor Advertisement
+       ICMPTypeRedirect                              ICMPType = 137 // Redirect Message
+       ICMPTypeRouterRenumbering                     ICMPType = 138 // Router Renumbering
+       ICMPTypeNodeInformationQuery                  ICMPType = 139 // ICMP Node Information Query
+       ICMPTypeNodeInformationResponse               ICMPType = 140 // ICMP Node Information Response
+       ICMPTypeInverseNeighborDiscoverySolicitation  ICMPType = 141 // Inverse Neighbor Discovery Solicitation Message
+       ICMPTypeInverseNeighborDiscoveryAdvertisement ICMPType = 142 // Inverse Neighbor Discovery Advertisement Message
+       ICMPTypeVersion2MulticastListenerReport       ICMPType = 143 // Version 2 Multicast Listener Report
+       ICMPTypeHomeAgentAddressDiscoveryRequest      ICMPType = 144 // Home Agent Address Discovery Request Message
+       ICMPTypeHomeAgentAddressDiscoveryReply        ICMPType = 145 // Home Agent Address Discovery Reply Message
+       ICMPTypeMobilePrefixSolicitation              ICMPType = 146 // Mobile Prefix Solicitation
+       ICMPTypeMobilePrefixAdvertisement             ICMPType = 147 // Mobile Prefix Advertisement
+       ICMPTypeCertificationPathSolicitation         ICMPType = 148 // Certification Path Solicitation Message
+       ICMPTypeCertificationPathAdvertisement        ICMPType = 149 // Certification Path Advertisement Message
+       ICMPTypeMulticastRouterAdvertisement          ICMPType = 151 // Multicast Router Advertisement
+       ICMPTypeMulticastRouterSolicitation           ICMPType = 152 // Multicast Router Solicitation
+       ICMPTypeMulticastRouterTermination            ICMPType = 153 // Multicast Router Termination
+       ICMPTypeFMIPv6                                ICMPType = 154 // FMIPv6 Messages
+       ICMPTypeRPLControl                            ICMPType = 155 // RPL Control Message
+       ICMPTypeILNPv6LocatorUpdate                   ICMPType = 156 // ILNPv6 Locator Update Message
+       ICMPTypeDuplicateAddressRequest               ICMPType = 157 // Duplicate Address Request
+       ICMPTypeDuplicateAddressConfirmation          ICMPType = 158 // Duplicate Address Confirmation
+       ICMPTypeMPLControl                            ICMPType = 159 // MPL Control Message
+)
+
+// Internet Control Message Protocol version 6 (ICMPv6) Parameters, Updated: 2015-07-07
+var icmpTypes = map[ICMPType]string{
+       1:   "destination unreachable",
+       2:   "packet too big",
+       3:   "time exceeded",
+       4:   "parameter problem",
+       128: "echo request",
+       129: "echo reply",
+       130: "multicast listener query",
+       131: "multicast listener report",
+       132: "multicast listener done",
+       133: "router solicitation",
+       134: "router advertisement",
+       135: "neighbor solicitation",
+       136: "neighbor advertisement",
+       137: "redirect message",
+       138: "router renumbering",
+       139: "icmp node information query",
+       140: "icmp node information response",
+       141: "inverse neighbor discovery solicitation message",
+       142: "inverse neighbor discovery advertisement message",
+       143: "version 2 multicast listener report",
+       144: "home agent address discovery request message",
+       145: "home agent address discovery reply message",
+       146: "mobile prefix solicitation",
+       147: "mobile prefix advertisement",
+       148: "certification path solicitation message",
+       149: "certification path advertisement message",
+       151: "multicast router advertisement",
+       152: "multicast router solicitation",
+       153: "multicast router termination",
+       154: "fmipv6 messages",
+       155: "rpl control message",
+       156: "ilnpv6 locator update message",
+       157: "duplicate address request",
+       158: "duplicate address confirmation",
+       159: "mpl control message",
+}
diff --git a/vendor/golang.org/x/net/ipv6/icmp.go b/vendor/golang.org/x/net/ipv6/icmp.go
new file mode 100644 (file)
index 0000000..a2de65a
--- /dev/null
@@ -0,0 +1,57 @@
+// Copyright 2013 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 ipv6
+
+import "golang.org/x/net/internal/iana"
+
+// An ICMPType represents a type of ICMP message.
+type ICMPType int
+
+func (typ ICMPType) String() string {
+       s, ok := icmpTypes[typ]
+       if !ok {
+               return "<nil>"
+       }
+       return s
+}
+
+// Protocol returns the ICMPv6 protocol number.
+func (typ ICMPType) Protocol() int {
+       return iana.ProtocolIPv6ICMP
+}
+
+// An ICMPFilter represents an ICMP message filter for incoming
+// packets. The filter belongs to a packet delivery path on a host and
+// it cannot interact with forwarding packets or tunnel-outer packets.
+//
+// Note: RFC 2460 defines a reasonable role model. A node means a
+// device that implements IP. A router means a node that forwards IP
+// packets not explicitly addressed to itself, and a host means a node
+// that is not a router.
+type ICMPFilter struct {
+       sysICMPv6Filter
+}
+
+// Accept accepts incoming ICMP packets including the type field value
+// typ.
+func (f *ICMPFilter) Accept(typ ICMPType) {
+       f.accept(typ)
+}
+
+// Block blocks incoming ICMP packets including the type field value
+// typ.
+func (f *ICMPFilter) Block(typ ICMPType) {
+       f.block(typ)
+}
+
+// SetAll sets the filter action to the filter.
+func (f *ICMPFilter) SetAll(block bool) {
+       f.setAll(block)
+}
+
+// WillBlock reports whether the ICMP type will be blocked.
+func (f *ICMPFilter) WillBlock(typ ICMPType) bool {
+       return f.willBlock(typ)
+}
diff --git a/vendor/golang.org/x/net/ipv6/icmp_bsd.go b/vendor/golang.org/x/net/ipv6/icmp_bsd.go
new file mode 100644 (file)
index 0000000..30e3ce4
--- /dev/null
@@ -0,0 +1,29 @@
+// Copyright 2013 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.
+
+// +build darwin dragonfly freebsd netbsd openbsd
+
+package ipv6
+
+func (f *sysICMPv6Filter) accept(typ ICMPType) {
+       f.Filt[typ>>5] |= 1 << (uint32(typ) & 31)
+}
+
+func (f *sysICMPv6Filter) block(typ ICMPType) {
+       f.Filt[typ>>5] &^= 1 << (uint32(typ) & 31)
+}
+
+func (f *sysICMPv6Filter) setAll(block bool) {
+       for i := range f.Filt {
+               if block {
+                       f.Filt[i] = 0
+               } else {
+                       f.Filt[i] = 1<<32 - 1
+               }
+       }
+}
+
+func (f *sysICMPv6Filter) willBlock(typ ICMPType) bool {
+       return f.Filt[typ>>5]&(1<<(uint32(typ)&31)) == 0
+}
diff --git a/vendor/golang.org/x/net/ipv6/icmp_linux.go b/vendor/golang.org/x/net/ipv6/icmp_linux.go
new file mode 100644 (file)
index 0000000..a67ecf6
--- /dev/null
@@ -0,0 +1,27 @@
+// Copyright 2013 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 ipv6
+
+func (f *sysICMPv6Filter) accept(typ ICMPType) {
+       f.Data[typ>>5] &^= 1 << (uint32(typ) & 31)
+}
+
+func (f *sysICMPv6Filter) block(typ ICMPType) {
+       f.Data[typ>>5] |= 1 << (uint32(typ) & 31)
+}
+
+func (f *sysICMPv6Filter) setAll(block bool) {
+       for i := range f.Data {
+               if block {
+                       f.Data[i] = 1<<32 - 1
+               } else {
+                       f.Data[i] = 0
+               }
+       }
+}
+
+func (f *sysICMPv6Filter) willBlock(typ ICMPType) bool {
+       return f.Data[typ>>5]&(1<<(uint32(typ)&31)) != 0
+}
diff --git a/vendor/golang.org/x/net/ipv6/icmp_solaris.go b/vendor/golang.org/x/net/ipv6/icmp_solaris.go
new file mode 100644 (file)
index 0000000..a942f35
--- /dev/null
@@ -0,0 +1,24 @@
+// Copyright 2013 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.
+
+// +build solaris
+
+package ipv6
+
+func (f *sysICMPv6Filter) accept(typ ICMPType) {
+       // TODO(mikio): implement this
+}
+
+func (f *sysICMPv6Filter) block(typ ICMPType) {
+       // TODO(mikio): implement this
+}
+
+func (f *sysICMPv6Filter) setAll(block bool) {
+       // TODO(mikio): implement this
+}
+
+func (f *sysICMPv6Filter) willBlock(typ ICMPType) bool {
+       // TODO(mikio): implement this
+       return false
+}
diff --git a/vendor/golang.org/x/net/ipv6/icmp_stub.go b/vendor/golang.org/x/net/ipv6/icmp_stub.go
new file mode 100644 (file)
index 0000000..c1263ec
--- /dev/null
@@ -0,0 +1,23 @@
+// Copyright 2013 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.
+
+// +build nacl plan9
+
+package ipv6
+
+type sysICMPv6Filter struct {
+}
+
+func (f *sysICMPv6Filter) accept(typ ICMPType) {
+}
+
+func (f *sysICMPv6Filter) block(typ ICMPType) {
+}
+
+func (f *sysICMPv6Filter) setAll(block bool) {
+}
+
+func (f *sysICMPv6Filter) willBlock(typ ICMPType) bool {
+       return false
+}
diff --git a/vendor/golang.org/x/net/ipv6/icmp_windows.go b/vendor/golang.org/x/net/ipv6/icmp_windows.go
new file mode 100644 (file)
index 0000000..9dcfb81
--- /dev/null
@@ -0,0 +1,26 @@
+// Copyright 2013 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 ipv6
+
+type sysICMPv6Filter struct {
+       // TODO(mikio): implement this
+}
+
+func (f *sysICMPv6Filter) accept(typ ICMPType) {
+       // TODO(mikio): implement this
+}
+
+func (f *sysICMPv6Filter) block(typ ICMPType) {
+       // TODO(mikio): implement this
+}
+
+func (f *sysICMPv6Filter) setAll(block bool) {
+       // TODO(mikio): implement this
+}
+
+func (f *sysICMPv6Filter) willBlock(typ ICMPType) bool {
+       // TODO(mikio): implement this
+       return false
+}
diff --git a/vendor/golang.org/x/net/ipv6/payload.go b/vendor/golang.org/x/net/ipv6/payload.go
new file mode 100644 (file)
index 0000000..529b20b
--- /dev/null
@@ -0,0 +1,15 @@
+// Copyright 2013 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 ipv6
+
+import "net"
+
+// A payloadHandler represents the IPv6 datagram payload handler.
+type payloadHandler struct {
+       net.PacketConn
+       rawOpt
+}
+
+func (c *payloadHandler) ok() bool { return c != nil && c.PacketConn != nil }
diff --git a/vendor/golang.org/x/net/ipv6/payload_cmsg.go b/vendor/golang.org/x/net/ipv6/payload_cmsg.go
new file mode 100644 (file)
index 0000000..8e90d32
--- /dev/null
@@ -0,0 +1,70 @@
+// Copyright 2013 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.
+
+// +build !nacl,!plan9,!windows
+
+package ipv6
+
+import (
+       "net"
+       "syscall"
+)
+
+// ReadFrom reads a payload of the received IPv6 datagram, from the
+// endpoint c, copying the payload into b.  It returns the number of
+// bytes copied into b, the control message cm and the source address
+// src of the received datagram.
+func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) {
+       if !c.ok() {
+               return 0, nil, nil, syscall.EINVAL
+       }
+       oob := newControlMessage(&c.rawOpt)
+       var oobn int
+       switch c := c.PacketConn.(type) {
+       case *net.UDPConn:
+               if n, oobn, _, src, err = c.ReadMsgUDP(b, oob); err != nil {
+                       return 0, nil, nil, err
+               }
+       case *net.IPConn:
+               if n, oobn, _, src, err = c.ReadMsgIP(b, oob); err != nil {
+                       return 0, nil, nil, err
+               }
+       default:
+               return 0, nil, nil, errInvalidConnType
+       }
+       if cm, err = parseControlMessage(oob[:oobn]); err != nil {
+               return 0, nil, nil, err
+       }
+       if cm != nil {
+               cm.Src = netAddrToIP16(src)
+       }
+       return
+}
+
+// WriteTo writes a payload of the IPv6 datagram, to the destination
+// address dst through the endpoint c, copying the payload from b.  It
+// returns the number of bytes written.  The control message cm allows
+// the IPv6 header fields and the datagram path to be specified.  The
+// cm may be nil if control of the outgoing datagram is not required.
+func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) {
+       if !c.ok() {
+               return 0, syscall.EINVAL
+       }
+       oob := marshalControlMessage(cm)
+       if dst == nil {
+               return 0, errMissingAddress
+       }
+       switch c := c.PacketConn.(type) {
+       case *net.UDPConn:
+               n, _, err = c.WriteMsgUDP(b, oob, dst.(*net.UDPAddr))
+       case *net.IPConn:
+               n, _, err = c.WriteMsgIP(b, oob, dst.(*net.IPAddr))
+       default:
+               return 0, errInvalidConnType
+       }
+       if err != nil {
+               return 0, err
+       }
+       return
+}
diff --git a/vendor/golang.org/x/net/ipv6/payload_nocmsg.go b/vendor/golang.org/x/net/ipv6/payload_nocmsg.go
new file mode 100644 (file)
index 0000000..499204d
--- /dev/null
@@ -0,0 +1,41 @@
+// Copyright 2013 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.
+
+// +build nacl plan9 windows
+
+package ipv6
+
+import (
+       "net"
+       "syscall"
+)
+
+// ReadFrom reads a payload of the received IPv6 datagram, from the
+// endpoint c, copying the payload into b.  It returns the number of
+// bytes copied into b, the control message cm and the source address
+// src of the received datagram.
+func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) {
+       if !c.ok() {
+               return 0, nil, nil, syscall.EINVAL
+       }
+       if n, src, err = c.PacketConn.ReadFrom(b); err != nil {
+               return 0, nil, nil, err
+       }
+       return
+}
+
+// WriteTo writes a payload of the IPv6 datagram, to the destination
+// address dst through the endpoint c, copying the payload from b.  It
+// returns the number of bytes written.  The control message cm allows
+// the IPv6 header fields and the datagram path to be specified.  The
+// cm may be nil if control of the outgoing datagram is not required.
+func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) {
+       if !c.ok() {
+               return 0, syscall.EINVAL
+       }
+       if dst == nil {
+               return 0, errMissingAddress
+       }
+       return c.PacketConn.WriteTo(b, dst)
+}
diff --git a/vendor/golang.org/x/net/ipv6/sockopt.go b/vendor/golang.org/x/net/ipv6/sockopt.go
new file mode 100644 (file)
index 0000000..f0cfc2f
--- /dev/null
@@ -0,0 +1,46 @@
+// Copyright 2014 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 ipv6
+
+// Sticky socket options
+const (
+       ssoTrafficClass        = iota // header field for unicast packet, RFC 3542
+       ssoHopLimit                   // header field for unicast packet, RFC 3493
+       ssoMulticastInterface         // outbound interface for multicast packet, RFC 3493
+       ssoMulticastHopLimit          // header field for multicast packet, RFC 3493
+       ssoMulticastLoopback          // loopback for multicast packet, RFC 3493
+       ssoReceiveTrafficClass        // header field on received packet, RFC 3542
+       ssoReceiveHopLimit            // header field on received packet, RFC 2292 or 3542
+       ssoReceivePacketInfo          // incbound or outbound packet path, RFC 2292 or 3542
+       ssoReceivePathMTU             // path mtu, RFC 3542
+       ssoPathMTU                    // path mtu, RFC 3542
+       ssoChecksum                   // packet checksum, RFC 2292 or 3542
+       ssoICMPFilter                 // icmp filter, RFC 2292 or 3542
+       ssoJoinGroup                  // any-source multicast, RFC 3493
+       ssoLeaveGroup                 // any-source multicast, RFC 3493
+       ssoJoinSourceGroup            // source-specific multicast
+       ssoLeaveSourceGroup           // source-specific multicast
+       ssoBlockSourceGroup           // any-source or source-specific multicast
+       ssoUnblockSourceGroup         // any-source or source-specific multicast
+       ssoMax
+)
+
+// Sticky socket option value types
+const (
+       ssoTypeInt = iota + 1
+       ssoTypeInterface
+       ssoTypeICMPFilter
+       ssoTypeMTUInfo
+       ssoTypeIPMreq
+       ssoTypeGroupReq
+       ssoTypeGroupSourceReq
+)
+
+// A sockOpt represents a binding for sticky socket option.
+type sockOpt struct {
+       level int // option level
+       name  int // option name, must be equal or greater than 1
+       typ   int // option value type, must be equal or greater than 1
+}
diff --git a/vendor/golang.org/x/net/ipv6/sockopt_asmreq_unix.go b/vendor/golang.org/x/net/ipv6/sockopt_asmreq_unix.go
new file mode 100644 (file)
index 0000000..b7fd4fe
--- /dev/null
@@ -0,0 +1,22 @@
+// Copyright 2013 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.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd
+
+package ipv6
+
+import (
+       "net"
+       "os"
+       "unsafe"
+)
+
+func setsockoptIPMreq(fd int, opt *sockOpt, ifi *net.Interface, grp net.IP) error {
+       var mreq sysIPv6Mreq
+       copy(mreq.Multiaddr[:], grp)
+       if ifi != nil {
+               mreq.setIfindex(ifi.Index)
+       }
+       return os.NewSyscallError("setsockopt", setsockopt(fd, opt.level, opt.name, unsafe.Pointer(&mreq), sysSizeofIPv6Mreq))
+}
diff --git a/vendor/golang.org/x/net/ipv6/sockopt_asmreq_windows.go b/vendor/golang.org/x/net/ipv6/sockopt_asmreq_windows.go
new file mode 100644 (file)
index 0000000..c03c731
--- /dev/null
@@ -0,0 +1,21 @@
+// Copyright 2013 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 ipv6
+
+import (
+       "net"
+       "os"
+       "syscall"
+       "unsafe"
+)
+
+func setsockoptIPMreq(fd syscall.Handle, opt *sockOpt, ifi *net.Interface, grp net.IP) error {
+       var mreq sysIPv6Mreq
+       copy(mreq.Multiaddr[:], grp)
+       if ifi != nil {
+               mreq.setIfindex(ifi.Index)
+       }
+       return os.NewSyscallError("setsockopt", syscall.Setsockopt(fd, int32(opt.level), int32(opt.name), (*byte)(unsafe.Pointer(&mreq)), sysSizeofIPv6Mreq))
+}
diff --git a/vendor/golang.org/x/net/ipv6/sockopt_ssmreq_stub.go b/vendor/golang.org/x/net/ipv6/sockopt_ssmreq_stub.go
new file mode 100644 (file)
index 0000000..7732e49
--- /dev/null
@@ -0,0 +1,17 @@
+// Copyright 2014 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.
+
+// +build !darwin,!freebsd,!linux
+
+package ipv6
+
+import "net"
+
+func setsockoptGroupReq(fd int, opt *sockOpt, ifi *net.Interface, grp net.IP) error {
+       return errOpNoSupport
+}
+
+func setsockoptGroupSourceReq(fd int, opt *sockOpt, ifi *net.Interface, grp, src net.IP) error {
+       return errOpNoSupport
+}
diff --git a/vendor/golang.org/x/net/ipv6/sockopt_ssmreq_unix.go b/vendor/golang.org/x/net/ipv6/sockopt_ssmreq_unix.go
new file mode 100644 (file)
index 0000000..c64d6d5
--- /dev/null
@@ -0,0 +1,59 @@
+// Copyright 2014 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.
+
+// +build darwin freebsd linux
+
+package ipv6
+
+import (
+       "net"
+       "os"
+       "unsafe"
+)
+
+var freebsd32o64 bool
+
+func setsockoptGroupReq(fd int, opt *sockOpt, ifi *net.Interface, grp net.IP) error {
+       var gr sysGroupReq
+       if ifi != nil {
+               gr.Interface = uint32(ifi.Index)
+       }
+       gr.setGroup(grp)
+       var p unsafe.Pointer
+       var l sysSockoptLen
+       if freebsd32o64 {
+               var d [sysSizeofGroupReq + 4]byte
+               s := (*[sysSizeofGroupReq]byte)(unsafe.Pointer(&gr))
+               copy(d[:4], s[:4])
+               copy(d[8:], s[4:])
+               p = unsafe.Pointer(&d[0])
+               l = sysSizeofGroupReq + 4
+       } else {
+               p = unsafe.Pointer(&gr)
+               l = sysSizeofGroupReq
+       }
+       return os.NewSyscallError("setsockopt", setsockopt(fd, opt.level, opt.name, p, l))
+}
+
+func setsockoptGroupSourceReq(fd int, opt *sockOpt, ifi *net.Interface, grp, src net.IP) error {
+       var gsr sysGroupSourceReq
+       if ifi != nil {
+               gsr.Interface = uint32(ifi.Index)
+       }
+       gsr.setSourceGroup(grp, src)
+       var p unsafe.Pointer
+       var l sysSockoptLen
+       if freebsd32o64 {
+               var d [sysSizeofGroupSourceReq + 4]byte
+               s := (*[sysSizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr))
+               copy(d[:4], s[:4])
+               copy(d[8:], s[4:])
+               p = unsafe.Pointer(&d[0])
+               l = sysSizeofGroupSourceReq + 4
+       } else {
+               p = unsafe.Pointer(&gsr)
+               l = sysSizeofGroupSourceReq
+       }
+       return os.NewSyscallError("setsockopt", setsockopt(fd, opt.level, opt.name, p, l))
+}
diff --git a/vendor/golang.org/x/net/ipv6/sockopt_stub.go b/vendor/golang.org/x/net/ipv6/sockopt_stub.go
new file mode 100644 (file)
index 0000000..b8dacfd
--- /dev/null
@@ -0,0 +1,13 @@
+// Copyright 2013 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.
+
+// +build nacl plan9 solaris
+
+package ipv6
+
+import "net"
+
+func getMTUInfo(fd int, opt *sockOpt) (*net.Interface, int, error) {
+       return nil, 0, errOpNoSupport
+}
diff --git a/vendor/golang.org/x/net/ipv6/sockopt_unix.go b/vendor/golang.org/x/net/ipv6/sockopt_unix.go
new file mode 100644 (file)
index 0000000..25ea545
--- /dev/null
@@ -0,0 +1,122 @@
+// Copyright 2013 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.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd
+
+package ipv6
+
+import (
+       "net"
+       "os"
+       "unsafe"
+)
+
+func getInt(fd int, opt *sockOpt) (int, error) {
+       if opt.name < 1 || opt.typ != ssoTypeInt {
+               return 0, errOpNoSupport
+       }
+       var i int32
+       l := sysSockoptLen(4)
+       if err := getsockopt(fd, opt.level, opt.name, unsafe.Pointer(&i), &l); err != nil {
+               return 0, os.NewSyscallError("getsockopt", err)
+       }
+       return int(i), nil
+}
+
+func setInt(fd int, opt *sockOpt, v int) error {
+       if opt.name < 1 || opt.typ != ssoTypeInt {
+               return errOpNoSupport
+       }
+       i := int32(v)
+       return os.NewSyscallError("setsockopt", setsockopt(fd, opt.level, opt.name, unsafe.Pointer(&i), sysSockoptLen(4)))
+}
+
+func getInterface(fd int, opt *sockOpt) (*net.Interface, error) {
+       if opt.name < 1 || opt.typ != ssoTypeInterface {
+               return nil, errOpNoSupport
+       }
+       var i int32
+       l := sysSockoptLen(4)
+       if err := getsockopt(fd, opt.level, opt.name, unsafe.Pointer(&i), &l); err != nil {
+               return nil, os.NewSyscallError("getsockopt", err)
+       }
+       if i == 0 {
+               return nil, nil
+       }
+       ifi, err := net.InterfaceByIndex(int(i))
+       if err != nil {
+               return nil, err
+       }
+       return ifi, nil
+}
+
+func setInterface(fd int, opt *sockOpt, ifi *net.Interface) error {
+       if opt.name < 1 || opt.typ != ssoTypeInterface {
+               return errOpNoSupport
+       }
+       var i int32
+       if ifi != nil {
+               i = int32(ifi.Index)
+       }
+       return os.NewSyscallError("setsockopt", setsockopt(fd, opt.level, opt.name, unsafe.Pointer(&i), sysSockoptLen(4)))
+}
+
+func getICMPFilter(fd int, opt *sockOpt) (*ICMPFilter, error) {
+       if opt.name < 1 || opt.typ != ssoTypeICMPFilter {
+               return nil, errOpNoSupport
+       }
+       var f ICMPFilter
+       l := sysSockoptLen(sysSizeofICMPv6Filter)
+       if err := getsockopt(fd, opt.level, opt.name, unsafe.Pointer(&f.sysICMPv6Filter), &l); err != nil {
+               return nil, os.NewSyscallError("getsockopt", err)
+       }
+       return &f, nil
+}
+
+func setICMPFilter(fd int, opt *sockOpt, f *ICMPFilter) error {
+       if opt.name < 1 || opt.typ != ssoTypeICMPFilter {
+               return errOpNoSupport
+       }
+       return os.NewSyscallError("setsockopt", setsockopt(fd, opt.level, opt.name, unsafe.Pointer(&f.sysICMPv6Filter), sysSizeofICMPv6Filter))
+}
+
+func getMTUInfo(fd int, opt *sockOpt) (*net.Interface, int, error) {
+       if opt.name < 1 || opt.typ != ssoTypeMTUInfo {
+               return nil, 0, errOpNoSupport
+       }
+       var mi sysIPv6Mtuinfo
+       l := sysSockoptLen(sysSizeofIPv6Mtuinfo)
+       if err := getsockopt(fd, opt.level, opt.name, unsafe.Pointer(&mi), &l); err != nil {
+               return nil, 0, os.NewSyscallError("getsockopt", err)
+       }
+       if mi.Addr.Scope_id == 0 {
+               return nil, int(mi.Mtu), nil
+       }
+       ifi, err := net.InterfaceByIndex(int(mi.Addr.Scope_id))
+       if err != nil {
+               return nil, 0, err
+       }
+       return ifi, int(mi.Mtu), nil
+}
+
+func setGroup(fd int, opt *sockOpt, ifi *net.Interface, grp net.IP) error {
+       if opt.name < 1 {
+               return errOpNoSupport
+       }
+       switch opt.typ {
+       case ssoTypeIPMreq:
+               return setsockoptIPMreq(fd, opt, ifi, grp)
+       case ssoTypeGroupReq:
+               return setsockoptGroupReq(fd, opt, ifi, grp)
+       default:
+               return errOpNoSupport
+       }
+}
+
+func setSourceGroup(fd int, opt *sockOpt, ifi *net.Interface, grp, src net.IP) error {
+       if opt.name < 1 || opt.typ != ssoTypeGroupSourceReq {
+               return errOpNoSupport
+       }
+       return setsockoptGroupSourceReq(fd, opt, ifi, grp, src)
+}
diff --git a/vendor/golang.org/x/net/ipv6/sockopt_windows.go b/vendor/golang.org/x/net/ipv6/sockopt_windows.go
new file mode 100644 (file)
index 0000000..32c73b7
--- /dev/null
@@ -0,0 +1,86 @@
+// Copyright 2013 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 ipv6
+
+import (
+       "net"
+       "os"
+       "syscall"
+       "unsafe"
+)
+
+func getInt(fd syscall.Handle, opt *sockOpt) (int, error) {
+       if opt.name < 1 || opt.typ != ssoTypeInt {
+               return 0, errOpNoSupport
+       }
+       var i int32
+       l := int32(4)
+       if err := syscall.Getsockopt(fd, int32(opt.level), int32(opt.name), (*byte)(unsafe.Pointer(&i)), &l); err != nil {
+               return 0, os.NewSyscallError("getsockopt", err)
+       }
+       return int(i), nil
+}
+
+func setInt(fd syscall.Handle, opt *sockOpt, v int) error {
+       if opt.name < 1 || opt.typ != ssoTypeInt {
+               return errOpNoSupport
+       }
+       i := int32(v)
+       return os.NewSyscallError("setsockopt", syscall.Setsockopt(fd, int32(opt.level), int32(opt.name), (*byte)(unsafe.Pointer(&i)), 4))
+}
+
+func getInterface(fd syscall.Handle, opt *sockOpt) (*net.Interface, error) {
+       if opt.name < 1 || opt.typ != ssoTypeInterface {
+               return nil, errOpNoSupport
+       }
+       var i int32
+       l := int32(4)
+       if err := syscall.Getsockopt(fd, int32(opt.level), int32(opt.name), (*byte)(unsafe.Pointer(&i)), &l); err != nil {
+               return nil, os.NewSyscallError("getsockopt", err)
+       }
+       if i == 0 {
+               return nil, nil
+       }
+       ifi, err := net.InterfaceByIndex(int(i))
+       if err != nil {
+               return nil, err
+       }
+       return ifi, nil
+}
+
+func setInterface(fd syscall.Handle, opt *sockOpt, ifi *net.Interface) error {
+       if opt.name < 1 || opt.typ != ssoTypeInterface {
+               return errOpNoSupport
+       }
+       var i int32
+       if ifi != nil {
+               i = int32(ifi.Index)
+       }
+       return os.NewSyscallError("setsockopt", syscall.Setsockopt(fd, int32(opt.level), int32(opt.name), (*byte)(unsafe.Pointer(&i)), 4))
+}
+
+func getICMPFilter(fd syscall.Handle, opt *sockOpt) (*ICMPFilter, error) {
+       return nil, errOpNoSupport
+}
+
+func setICMPFilter(fd syscall.Handle, opt *sockOpt, f *ICMPFilter) error {
+       return errOpNoSupport
+}
+
+func getMTUInfo(fd syscall.Handle, opt *sockOpt) (*net.Interface, int, error) {
+       return nil, 0, errOpNoSupport
+}
+
+func setGroup(fd syscall.Handle, opt *sockOpt, ifi *net.Interface, grp net.IP) error {
+       if opt.name < 1 || opt.typ != ssoTypeIPMreq {
+               return errOpNoSupport
+       }
+       return setsockoptIPMreq(fd, opt, ifi, grp)
+}
+
+func setSourceGroup(fd syscall.Handle, opt *sockOpt, ifi *net.Interface, grp, src net.IP) error {
+       // TODO(mikio): implement this
+       return errOpNoSupport
+}
diff --git a/vendor/golang.org/x/net/ipv6/sys_bsd.go b/vendor/golang.org/x/net/ipv6/sys_bsd.go
new file mode 100644 (file)
index 0000000..75a8863
--- /dev/null
@@ -0,0 +1,58 @@
+// Copyright 2013 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.
+
+// +build dragonfly netbsd openbsd
+
+package ipv6
+
+import (
+       "net"
+       "syscall"
+
+       "golang.org/x/net/internal/iana"
+)
+
+type sysSockoptLen int32
+
+var (
+       ctlOpts = [ctlMax]ctlOpt{
+               ctlTrafficClass: {sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass},
+               ctlHopLimit:     {sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit},
+               ctlPacketInfo:   {sysIPV6_PKTINFO, sysSizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo},
+               ctlNextHop:      {sysIPV6_NEXTHOP, sysSizeofSockaddrInet6, marshalNextHop, parseNextHop},
+               ctlPathMTU:      {sysIPV6_PATHMTU, sysSizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU},
+       }
+
+       sockOpts = [ssoMax]sockOpt{
+               ssoTrafficClass:        {iana.ProtocolIPv6, sysIPV6_TCLASS, ssoTypeInt},
+               ssoHopLimit:            {iana.ProtocolIPv6, sysIPV6_UNICAST_HOPS, ssoTypeInt},
+               ssoMulticastInterface:  {iana.ProtocolIPv6, sysIPV6_MULTICAST_IF, ssoTypeInterface},
+               ssoMulticastHopLimit:   {iana.ProtocolIPv6, sysIPV6_MULTICAST_HOPS, ssoTypeInt},
+               ssoMulticastLoopback:   {iana.ProtocolIPv6, sysIPV6_MULTICAST_LOOP, ssoTypeInt},
+               ssoReceiveTrafficClass: {iana.ProtocolIPv6, sysIPV6_RECVTCLASS, ssoTypeInt},
+               ssoReceiveHopLimit:     {iana.ProtocolIPv6, sysIPV6_RECVHOPLIMIT, ssoTypeInt},
+               ssoReceivePacketInfo:   {iana.ProtocolIPv6, sysIPV6_RECVPKTINFO, ssoTypeInt},
+               ssoReceivePathMTU:      {iana.ProtocolIPv6, sysIPV6_RECVPATHMTU, ssoTypeInt},
+               ssoPathMTU:             {iana.ProtocolIPv6, sysIPV6_PATHMTU, ssoTypeMTUInfo},
+               ssoChecksum:            {iana.ProtocolIPv6, sysIPV6_CHECKSUM, ssoTypeInt},
+               ssoICMPFilter:          {iana.ProtocolIPv6ICMP, sysICMP6_FILTER, ssoTypeICMPFilter},
+               ssoJoinGroup:           {iana.ProtocolIPv6, sysIPV6_JOIN_GROUP, ssoTypeIPMreq},
+               ssoLeaveGroup:          {iana.ProtocolIPv6, sysIPV6_LEAVE_GROUP, ssoTypeIPMreq},
+       }
+)
+
+func (sa *sysSockaddrInet6) setSockaddr(ip net.IP, i int) {
+       sa.Len = sysSizeofSockaddrInet6
+       sa.Family = syscall.AF_INET6
+       copy(sa.Addr[:], ip)
+       sa.Scope_id = uint32(i)
+}
+
+func (pi *sysInet6Pktinfo) setIfindex(i int) {
+       pi.Ifindex = uint32(i)
+}
+
+func (mreq *sysIPv6Mreq) setIfindex(i int) {
+       mreq.Interface = uint32(i)
+}
diff --git a/vendor/golang.org/x/net/ipv6/sys_darwin.go b/vendor/golang.org/x/net/ipv6/sys_darwin.go
new file mode 100644 (file)
index 0000000..411fb49
--- /dev/null
@@ -0,0 +1,135 @@
+// Copyright 2013 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 ipv6
+
+import (
+       "net"
+       "syscall"
+       "unsafe"
+
+       "golang.org/x/net/internal/iana"
+)
+
+type sysSockoptLen int32
+
+var (
+       ctlOpts = [ctlMax]ctlOpt{
+               ctlHopLimit:   {sysIPV6_2292HOPLIMIT, 4, marshal2292HopLimit, parseHopLimit},
+               ctlPacketInfo: {sysIPV6_2292PKTINFO, sysSizeofInet6Pktinfo, marshal2292PacketInfo, parsePacketInfo},
+       }
+
+       sockOpts = [ssoMax]sockOpt{
+               ssoHopLimit:           {iana.ProtocolIPv6, sysIPV6_UNICAST_HOPS, ssoTypeInt},
+               ssoMulticastInterface: {iana.ProtocolIPv6, sysIPV6_MULTICAST_IF, ssoTypeInterface},
+               ssoMulticastHopLimit:  {iana.ProtocolIPv6, sysIPV6_MULTICAST_HOPS, ssoTypeInt},
+               ssoMulticastLoopback:  {iana.ProtocolIPv6, sysIPV6_MULTICAST_LOOP, ssoTypeInt},
+               ssoReceiveHopLimit:    {iana.ProtocolIPv6, sysIPV6_2292HOPLIMIT, ssoTypeInt},
+               ssoReceivePacketInfo:  {iana.ProtocolIPv6, sysIPV6_2292PKTINFO, ssoTypeInt},
+               ssoChecksum:           {iana.ProtocolIPv6, sysIPV6_CHECKSUM, ssoTypeInt},
+               ssoICMPFilter:         {iana.ProtocolIPv6ICMP, sysICMP6_FILTER, ssoTypeICMPFilter},
+               ssoJoinGroup:          {iana.ProtocolIPv6, sysIPV6_JOIN_GROUP, ssoTypeIPMreq},
+               ssoLeaveGroup:         {iana.ProtocolIPv6, sysIPV6_LEAVE_GROUP, ssoTypeIPMreq},
+       }
+)
+
+func init() {
+       // Seems like kern.osreldate is veiled on latest OS X. We use
+       // kern.osrelease instead.
+       osver, err := syscall.Sysctl("kern.osrelease")
+       if err != nil {
+               return
+       }
+       var i int
+       for i = range osver {
+               if osver[i] == '.' {
+                       break
+               }
+       }
+       // The IP_PKTINFO and protocol-independent multicast API were
+       // introduced in OS X 10.7 (Darwin 11.0.0). But it looks like
+       // those features require OS X 10.8 (Darwin 12.0.0) and above.
+       // See http://support.apple.com/kb/HT1633.
+       if i > 2 || i == 2 && osver[0] >= '1' && osver[1] >= '2' {
+               ctlOpts[ctlTrafficClass].name = sysIPV6_TCLASS
+               ctlOpts[ctlTrafficClass].length = 4
+               ctlOpts[ctlTrafficClass].marshal = marshalTrafficClass
+               ctlOpts[ctlTrafficClass].parse = parseTrafficClass
+               ctlOpts[ctlHopLimit].name = sysIPV6_HOPLIMIT
+               ctlOpts[ctlHopLimit].marshal = marshalHopLimit
+               ctlOpts[ctlPacketInfo].name = sysIPV6_PKTINFO
+               ctlOpts[ctlPacketInfo].marshal = marshalPacketInfo
+               ctlOpts[ctlNextHop].name = sysIPV6_NEXTHOP
+               ctlOpts[ctlNextHop].length = sysSizeofSockaddrInet6
+               ctlOpts[ctlNextHop].marshal = marshalNextHop
+               ctlOpts[ctlNextHop].parse = parseNextHop
+               ctlOpts[ctlPathMTU].name = sysIPV6_PATHMTU
+               ctlOpts[ctlPathMTU].length = sysSizeofIPv6Mtuinfo
+               ctlOpts[ctlPathMTU].marshal = marshalPathMTU
+               ctlOpts[ctlPathMTU].parse = parsePathMTU
+               sockOpts[ssoTrafficClass].level = iana.ProtocolIPv6
+               sockOpts[ssoTrafficClass].name = sysIPV6_TCLASS
+               sockOpts[ssoTrafficClass].typ = ssoTypeInt
+               sockOpts[ssoReceiveTrafficClass].level = iana.ProtocolIPv6
+               sockOpts[ssoReceiveTrafficClass].name = sysIPV6_RECVTCLASS
+               sockOpts[ssoReceiveTrafficClass].typ = ssoTypeInt
+               sockOpts[ssoReceiveHopLimit].name = sysIPV6_RECVHOPLIMIT
+               sockOpts[ssoReceivePacketInfo].name = sysIPV6_RECVPKTINFO
+               sockOpts[ssoReceivePathMTU].level = iana.ProtocolIPv6
+               sockOpts[ssoReceivePathMTU].name = sysIPV6_RECVPATHMTU
+               sockOpts[ssoReceivePathMTU].typ = ssoTypeInt
+               sockOpts[ssoPathMTU].level = iana.ProtocolIPv6
+               sockOpts[ssoPathMTU].name = sysIPV6_PATHMTU
+               sockOpts[ssoPathMTU].typ = ssoTypeMTUInfo
+               sockOpts[ssoJoinGroup].name = sysMCAST_JOIN_GROUP
+               sockOpts[ssoJoinGroup].typ = ssoTypeGroupReq
+               sockOpts[ssoLeaveGroup].name = sysMCAST_LEAVE_GROUP
+               sockOpts[ssoLeaveGroup].typ = ssoTypeGroupReq
+               sockOpts[ssoJoinSourceGroup].level = iana.ProtocolIPv6
+               sockOpts[ssoJoinSourceGroup].name = sysMCAST_JOIN_SOURCE_GROUP
+               sockOpts[ssoJoinSourceGroup].typ = ssoTypeGroupSourceReq
+               sockOpts[ssoLeaveSourceGroup].level = iana.ProtocolIPv6
+               sockOpts[ssoLeaveSourceGroup].name = sysMCAST_LEAVE_SOURCE_GROUP
+               sockOpts[ssoLeaveSourceGroup].typ = ssoTypeGroupSourceReq
+               sockOpts[ssoBlockSourceGroup].level = iana.ProtocolIPv6
+               sockOpts[ssoBlockSourceGroup].name = sysMCAST_BLOCK_SOURCE
+               sockOpts[ssoBlockSourceGroup].typ = ssoTypeGroupSourceReq
+               sockOpts[ssoUnblockSourceGroup].level = iana.ProtocolIPv6
+               sockOpts[ssoUnblockSourceGroup].name = sysMCAST_UNBLOCK_SOURCE
+               sockOpts[ssoUnblockSourceGroup].typ = ssoTypeGroupSourceReq
+       }
+}
+
+func (sa *sysSockaddrInet6) setSockaddr(ip net.IP, i int) {
+       sa.Len = sysSizeofSockaddrInet6
+       sa.Family = syscall.AF_INET6
+       copy(sa.Addr[:], ip)
+       sa.Scope_id = uint32(i)
+}
+
+func (pi *sysInet6Pktinfo) setIfindex(i int) {
+       pi.Ifindex = uint32(i)
+}
+
+func (mreq *sysIPv6Mreq) setIfindex(i int) {
+       mreq.Interface = uint32(i)
+}
+
+func (gr *sysGroupReq) setGroup(grp net.IP) {
+       sa := (*sysSockaddrInet6)(unsafe.Pointer(&gr.Pad_cgo_0[0]))
+       sa.Len = sysSizeofSockaddrInet6
+       sa.Family = syscall.AF_INET6
+       copy(sa.Addr[:], grp)
+}
+
+func (gsr *sysGroupSourceReq) setSourceGroup(grp, src net.IP) {
+       sa := (*sysSockaddrInet6)(unsafe.Pointer(&gsr.Pad_cgo_0[0]))
+       sa.Len = sysSizeofSockaddrInet6
+       sa.Family = syscall.AF_INET6
+       copy(sa.Addr[:], grp)
+       sa = (*sysSockaddrInet6)(unsafe.Pointer(&gsr.Pad_cgo_1[0]))
+       sa.Len = sysSizeofSockaddrInet6
+       sa.Family = syscall.AF_INET6
+       copy(sa.Addr[:], src)
+}
diff --git a/vendor/golang.org/x/net/ipv6/sys_freebsd.go b/vendor/golang.org/x/net/ipv6/sys_freebsd.go
new file mode 100644 (file)
index 0000000..b68725c
--- /dev/null
@@ -0,0 +1,93 @@
+// Copyright 2013 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 ipv6
+
+import (
+       "net"
+       "runtime"
+       "strings"
+       "syscall"
+       "unsafe"
+
+       "golang.org/x/net/internal/iana"
+)
+
+type sysSockoptLen int32
+
+var (
+       ctlOpts = [ctlMax]ctlOpt{
+               ctlTrafficClass: {sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass},
+               ctlHopLimit:     {sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit},
+               ctlPacketInfo:   {sysIPV6_PKTINFO, sysSizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo},
+               ctlNextHop:      {sysIPV6_NEXTHOP, sysSizeofSockaddrInet6, marshalNextHop, parseNextHop},
+               ctlPathMTU:      {sysIPV6_PATHMTU, sysSizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU},
+       }
+
+       sockOpts = [ssoMax]sockOpt{
+               ssoTrafficClass:        {iana.ProtocolIPv6, sysIPV6_TCLASS, ssoTypeInt},
+               ssoHopLimit:            {iana.ProtocolIPv6, sysIPV6_UNICAST_HOPS, ssoTypeInt},
+               ssoMulticastInterface:  {iana.ProtocolIPv6, sysIPV6_MULTICAST_IF, ssoTypeInterface},
+               ssoMulticastHopLimit:   {iana.ProtocolIPv6, sysIPV6_MULTICAST_HOPS, ssoTypeInt},
+               ssoMulticastLoopback:   {iana.ProtocolIPv6, sysIPV6_MULTICAST_LOOP, ssoTypeInt},
+               ssoReceiveTrafficClass: {iana.ProtocolIPv6, sysIPV6_RECVTCLASS, ssoTypeInt},
+               ssoReceiveHopLimit:     {iana.ProtocolIPv6, sysIPV6_RECVHOPLIMIT, ssoTypeInt},
+               ssoReceivePacketInfo:   {iana.ProtocolIPv6, sysIPV6_RECVPKTINFO, ssoTypeInt},
+               ssoReceivePathMTU:      {iana.ProtocolIPv6, sysIPV6_RECVPATHMTU, ssoTypeInt},
+               ssoPathMTU:             {iana.ProtocolIPv6, sysIPV6_PATHMTU, ssoTypeMTUInfo},
+               ssoChecksum:            {iana.ProtocolIPv6, sysIPV6_CHECKSUM, ssoTypeInt},
+               ssoICMPFilter:          {iana.ProtocolIPv6ICMP, sysICMP6_FILTER, ssoTypeICMPFilter},
+               ssoJoinGroup:           {iana.ProtocolIPv6, sysMCAST_JOIN_GROUP, ssoTypeGroupReq},
+               ssoLeaveGroup:          {iana.ProtocolIPv6, sysMCAST_LEAVE_GROUP, ssoTypeGroupReq},
+               ssoJoinSourceGroup:     {iana.ProtocolIPv6, sysMCAST_JOIN_SOURCE_GROUP, ssoTypeGroupSourceReq},
+               ssoLeaveSourceGroup:    {iana.ProtocolIPv6, sysMCAST_LEAVE_SOURCE_GROUP, ssoTypeGroupSourceReq},
+               ssoBlockSourceGroup:    {iana.ProtocolIPv6, sysMCAST_BLOCK_SOURCE, ssoTypeGroupSourceReq},
+               ssoUnblockSourceGroup:  {iana.ProtocolIPv6, sysMCAST_UNBLOCK_SOURCE, ssoTypeGroupSourceReq},
+       }
+)
+
+func init() {
+       if runtime.GOOS == "freebsd" && runtime.GOARCH == "386" {
+               archs, _ := syscall.Sysctl("kern.supported_archs")
+               for _, s := range strings.Fields(archs) {
+                       if s == "amd64" {
+                               freebsd32o64 = true
+                               break
+                       }
+               }
+       }
+}
+
+func (sa *sysSockaddrInet6) setSockaddr(ip net.IP, i int) {
+       sa.Len = sysSizeofSockaddrInet6
+       sa.Family = syscall.AF_INET6
+       copy(sa.Addr[:], ip)
+       sa.Scope_id = uint32(i)
+}
+
+func (pi *sysInet6Pktinfo) setIfindex(i int) {
+       pi.Ifindex = uint32(i)
+}
+
+func (mreq *sysIPv6Mreq) setIfindex(i int) {
+       mreq.Interface = uint32(i)
+}
+
+func (gr *sysGroupReq) setGroup(grp net.IP) {
+       sa := (*sysSockaddrInet6)(unsafe.Pointer(&gr.Group))
+       sa.Len = sysSizeofSockaddrInet6
+       sa.Family = syscall.AF_INET6
+       copy(sa.Addr[:], grp)
+}
+
+func (gsr *sysGroupSourceReq) setSourceGroup(grp, src net.IP) {
+       sa := (*sysSockaddrInet6)(unsafe.Pointer(&gsr.Group))
+       sa.Len = sysSizeofSockaddrInet6
+       sa.Family = syscall.AF_INET6
+       copy(sa.Addr[:], grp)
+       sa = (*sysSockaddrInet6)(unsafe.Pointer(&gsr.Source))
+       sa.Len = sysSizeofSockaddrInet6
+       sa.Family = syscall.AF_INET6
+       copy(sa.Addr[:], src)
+}
diff --git a/vendor/golang.org/x/net/ipv6/sys_linux.go b/vendor/golang.org/x/net/ipv6/sys_linux.go
new file mode 100644 (file)
index 0000000..2fa6088
--- /dev/null
@@ -0,0 +1,74 @@
+// Copyright 2013 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 ipv6
+
+import (
+       "net"
+       "syscall"
+       "unsafe"
+
+       "golang.org/x/net/internal/iana"
+)
+
+type sysSockoptLen int32
+
+var (
+       ctlOpts = [ctlMax]ctlOpt{
+               ctlTrafficClass: {sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass},
+               ctlHopLimit:     {sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit},
+               ctlPacketInfo:   {sysIPV6_PKTINFO, sysSizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo},
+               ctlPathMTU:      {sysIPV6_PATHMTU, sysSizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU},
+       }
+
+       sockOpts = [ssoMax]sockOpt{
+               ssoTrafficClass:        {iana.ProtocolIPv6, sysIPV6_TCLASS, ssoTypeInt},
+               ssoHopLimit:            {iana.ProtocolIPv6, sysIPV6_UNICAST_HOPS, ssoTypeInt},
+               ssoMulticastInterface:  {iana.ProtocolIPv6, sysIPV6_MULTICAST_IF, ssoTypeInterface},
+               ssoMulticastHopLimit:   {iana.ProtocolIPv6, sysIPV6_MULTICAST_HOPS, ssoTypeInt},
+               ssoMulticastLoopback:   {iana.ProtocolIPv6, sysIPV6_MULTICAST_LOOP, ssoTypeInt},
+               ssoReceiveTrafficClass: {iana.ProtocolIPv6, sysIPV6_RECVTCLASS, ssoTypeInt},
+               ssoReceiveHopLimit:     {iana.ProtocolIPv6, sysIPV6_RECVHOPLIMIT, ssoTypeInt},
+               ssoReceivePacketInfo:   {iana.ProtocolIPv6, sysIPV6_RECVPKTINFO, ssoTypeInt},
+               ssoReceivePathMTU:      {iana.ProtocolIPv6, sysIPV6_RECVPATHMTU, ssoTypeInt},
+               ssoPathMTU:             {iana.ProtocolIPv6, sysIPV6_PATHMTU, ssoTypeMTUInfo},
+               ssoChecksum:            {iana.ProtocolReserved, sysIPV6_CHECKSUM, ssoTypeInt},
+               ssoICMPFilter:          {iana.ProtocolIPv6ICMP, sysICMPV6_FILTER, ssoTypeICMPFilter},
+               ssoJoinGroup:           {iana.ProtocolIPv6, sysMCAST_JOIN_GROUP, ssoTypeGroupReq},
+               ssoLeaveGroup:          {iana.ProtocolIPv6, sysMCAST_LEAVE_GROUP, ssoTypeGroupReq},
+               ssoJoinSourceGroup:     {iana.ProtocolIPv6, sysMCAST_JOIN_SOURCE_GROUP, ssoTypeGroupSourceReq},
+               ssoLeaveSourceGroup:    {iana.ProtocolIPv6, sysMCAST_LEAVE_SOURCE_GROUP, ssoTypeGroupSourceReq},
+               ssoBlockSourceGroup:    {iana.ProtocolIPv6, sysMCAST_BLOCK_SOURCE, ssoTypeGroupSourceReq},
+               ssoUnblockSourceGroup:  {iana.ProtocolIPv6, sysMCAST_UNBLOCK_SOURCE, ssoTypeGroupSourceReq},
+       }
+)
+
+func (sa *sysSockaddrInet6) setSockaddr(ip net.IP, i int) {
+       sa.Family = syscall.AF_INET6
+       copy(sa.Addr[:], ip)
+       sa.Scope_id = uint32(i)
+}
+
+func (pi *sysInet6Pktinfo) setIfindex(i int) {
+       pi.Ifindex = int32(i)
+}
+
+func (mreq *sysIPv6Mreq) setIfindex(i int) {
+       mreq.Ifindex = int32(i)
+}
+
+func (gr *sysGroupReq) setGroup(grp net.IP) {
+       sa := (*sysSockaddrInet6)(unsafe.Pointer(&gr.Group))
+       sa.Family = syscall.AF_INET6
+       copy(sa.Addr[:], grp)
+}
+
+func (gsr *sysGroupSourceReq) setSourceGroup(grp, src net.IP) {
+       sa := (*sysSockaddrInet6)(unsafe.Pointer(&gsr.Group))
+       sa.Family = syscall.AF_INET6
+       copy(sa.Addr[:], grp)
+       sa = (*sysSockaddrInet6)(unsafe.Pointer(&gsr.Source))
+       sa.Family = syscall.AF_INET6
+       copy(sa.Addr[:], src)
+}
diff --git a/vendor/golang.org/x/net/ipv6/sys_stub.go b/vendor/golang.org/x/net/ipv6/sys_stub.go
new file mode 100644 (file)
index 0000000..6c9a143
--- /dev/null
@@ -0,0 +1,15 @@
+// Copyright 2014 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.
+
+// +build nacl plan9 solaris
+
+package ipv6
+
+type sysSockoptLen int32
+
+var (
+       ctlOpts = [ctlMax]ctlOpt{}
+
+       sockOpts = [ssoMax]sockOpt{}
+)
diff --git a/vendor/golang.org/x/net/ipv6/sys_windows.go b/vendor/golang.org/x/net/ipv6/sys_windows.go
new file mode 100644 (file)
index 0000000..fda8757
--- /dev/null
@@ -0,0 +1,63 @@
+// Copyright 2013 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 ipv6
+
+import (
+       "net"
+       "syscall"
+
+       "golang.org/x/net/internal/iana"
+)
+
+const (
+       // See ws2tcpip.h.
+       sysIPV6_UNICAST_HOPS   = 0x4
+       sysIPV6_MULTICAST_IF   = 0x9
+       sysIPV6_MULTICAST_HOPS = 0xa
+       sysIPV6_MULTICAST_LOOP = 0xb
+       sysIPV6_JOIN_GROUP     = 0xc
+       sysIPV6_LEAVE_GROUP    = 0xd
+       sysIPV6_PKTINFO        = 0x13
+
+       sysSizeofSockaddrInet6 = 0x1c
+
+       sysSizeofIPv6Mreq = 0x14
+)
+
+type sysSockaddrInet6 struct {
+       Family   uint16
+       Port     uint16
+       Flowinfo uint32
+       Addr     [16]byte /* in6_addr */
+       Scope_id uint32
+}
+
+type sysIPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Interface uint32
+}
+
+var (
+       ctlOpts = [ctlMax]ctlOpt{}
+
+       sockOpts = [ssoMax]sockOpt{
+               ssoHopLimit:           {iana.ProtocolIPv6, sysIPV6_UNICAST_HOPS, ssoTypeInt},
+               ssoMulticastInterface: {iana.ProtocolIPv6, sysIPV6_MULTICAST_IF, ssoTypeInterface},
+               ssoMulticastHopLimit:  {iana.ProtocolIPv6, sysIPV6_MULTICAST_HOPS, ssoTypeInt},
+               ssoMulticastLoopback:  {iana.ProtocolIPv6, sysIPV6_MULTICAST_LOOP, ssoTypeInt},
+               ssoJoinGroup:          {iana.ProtocolIPv6, sysIPV6_JOIN_GROUP, ssoTypeIPMreq},
+               ssoLeaveGroup:         {iana.ProtocolIPv6, sysIPV6_LEAVE_GROUP, ssoTypeIPMreq},
+       }
+)
+
+func (sa *sysSockaddrInet6) setSockaddr(ip net.IP, i int) {
+       sa.Family = syscall.AF_INET6
+       copy(sa.Addr[:], ip)
+       sa.Scope_id = uint32(i)
+}
+
+func (mreq *sysIPv6Mreq) setIfindex(i int) {
+       mreq.Interface = uint32(i)
+}
diff --git a/vendor/golang.org/x/net/ipv6/syscall_linux_386.go b/vendor/golang.org/x/net/ipv6/syscall_linux_386.go
new file mode 100644 (file)
index 0000000..82633a5
--- /dev/null
@@ -0,0 +1,31 @@
+// 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 ipv6
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+const (
+       sysGETSOCKOPT = 0xf
+       sysSETSOCKOPT = 0xe
+)
+
+func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno)
+
+func getsockopt(fd, level, name int, v unsafe.Pointer, l *sysSockoptLen) error {
+       if _, errno := socketcall(sysGETSOCKOPT, uintptr(fd), uintptr(level), uintptr(name), uintptr(v), uintptr(unsafe.Pointer(l)), 0); errno != 0 {
+               return error(errno)
+       }
+       return nil
+}
+
+func setsockopt(fd, level, name int, v unsafe.Pointer, l sysSockoptLen) error {
+       if _, errno := socketcall(sysSETSOCKOPT, uintptr(fd), uintptr(level), uintptr(name), uintptr(v), uintptr(l), 0); errno != 0 {
+               return error(errno)
+       }
+       return nil
+}
diff --git a/vendor/golang.org/x/net/ipv6/syscall_unix.go b/vendor/golang.org/x/net/ipv6/syscall_unix.go
new file mode 100644 (file)
index 0000000..a2bd836
--- /dev/null
@@ -0,0 +1,26 @@
+// Copyright 2013 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.
+
+// +build darwin dragonfly freebsd linux,!386 netbsd openbsd
+
+package ipv6
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+func getsockopt(fd, level, name int, v unsafe.Pointer, l *sysSockoptLen) error {
+       if _, _, errno := syscall.Syscall6(syscall.SYS_GETSOCKOPT, uintptr(fd), uintptr(level), uintptr(name), uintptr(v), uintptr(unsafe.Pointer(l)), 0); errno != 0 {
+               return error(errno)
+       }
+       return nil
+}
+
+func setsockopt(fd, level, name int, v unsafe.Pointer, l sysSockoptLen) error {
+       if _, _, errno := syscall.Syscall6(syscall.SYS_SETSOCKOPT, uintptr(fd), uintptr(level), uintptr(name), uintptr(v), uintptr(l), 0); errno != 0 {
+               return error(errno)
+       }
+       return nil
+}
diff --git a/vendor/golang.org/x/net/ipv6/thunk_linux_386.s b/vendor/golang.org/x/net/ipv6/thunk_linux_386.s
new file mode 100644 (file)
index 0000000..daa78bc
--- /dev/null
@@ -0,0 +1,8 @@
+// Copyright 2014 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.
+
+// +build go1.2
+
+TEXT   ·socketcall(SB),4,$0-36
+       JMP     syscall·socketcall(SB)
diff --git a/vendor/golang.org/x/net/ipv6/zsys_darwin.go b/vendor/golang.org/x/net/ipv6/zsys_darwin.go
new file mode 100644 (file)
index 0000000..cb044b0
--- /dev/null
@@ -0,0 +1,131 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_darwin.go
+
+package ipv6
+
+const (
+       sysIPV6_UNICAST_HOPS   = 0x4
+       sysIPV6_MULTICAST_IF   = 0x9
+       sysIPV6_MULTICAST_HOPS = 0xa
+       sysIPV6_MULTICAST_LOOP = 0xb
+       sysIPV6_JOIN_GROUP     = 0xc
+       sysIPV6_LEAVE_GROUP    = 0xd
+
+       sysIPV6_PORTRANGE    = 0xe
+       sysICMP6_FILTER      = 0x12
+       sysIPV6_2292PKTINFO  = 0x13
+       sysIPV6_2292HOPLIMIT = 0x14
+       sysIPV6_2292NEXTHOP  = 0x15
+       sysIPV6_2292HOPOPTS  = 0x16
+       sysIPV6_2292DSTOPTS  = 0x17
+       sysIPV6_2292RTHDR    = 0x18
+
+       sysIPV6_2292PKTOPTIONS = 0x19
+
+       sysIPV6_CHECKSUM = 0x1a
+       sysIPV6_V6ONLY   = 0x1b
+
+       sysIPV6_IPSEC_POLICY = 0x1c
+
+       sysIPV6_RECVTCLASS = 0x23
+       sysIPV6_TCLASS     = 0x24
+
+       sysIPV6_RTHDRDSTOPTS = 0x39
+
+       sysIPV6_RECVPKTINFO = 0x3d
+
+       sysIPV6_RECVHOPLIMIT = 0x25
+       sysIPV6_RECVRTHDR    = 0x26
+       sysIPV6_RECVHOPOPTS  = 0x27
+       sysIPV6_RECVDSTOPTS  = 0x28
+
+       sysIPV6_USE_MIN_MTU = 0x2a
+       sysIPV6_RECVPATHMTU = 0x2b
+
+       sysIPV6_PATHMTU = 0x2c
+
+       sysIPV6_PKTINFO  = 0x2e
+       sysIPV6_HOPLIMIT = 0x2f
+       sysIPV6_NEXTHOP  = 0x30
+       sysIPV6_HOPOPTS  = 0x31
+       sysIPV6_DSTOPTS  = 0x32
+       sysIPV6_RTHDR    = 0x33
+
+       sysIPV6_AUTOFLOWLABEL = 0x3b
+
+       sysIPV6_DONTFRAG = 0x3e
+
+       sysIPV6_PREFER_TEMPADDR = 0x3f
+
+       sysIPV6_MSFILTER            = 0x4a
+       sysMCAST_JOIN_GROUP         = 0x50
+       sysMCAST_LEAVE_GROUP        = 0x51
+       sysMCAST_JOIN_SOURCE_GROUP  = 0x52
+       sysMCAST_LEAVE_SOURCE_GROUP = 0x53
+       sysMCAST_BLOCK_SOURCE       = 0x54
+       sysMCAST_UNBLOCK_SOURCE     = 0x55
+
+       sysIPV6_BOUND_IF = 0x7d
+
+       sysIPV6_PORTRANGE_DEFAULT = 0x0
+       sysIPV6_PORTRANGE_HIGH    = 0x1
+       sysIPV6_PORTRANGE_LOW     = 0x2
+
+       sysSizeofSockaddrStorage = 0x80
+       sysSizeofSockaddrInet6   = 0x1c
+       sysSizeofInet6Pktinfo    = 0x14
+       sysSizeofIPv6Mtuinfo     = 0x20
+
+       sysSizeofIPv6Mreq       = 0x14
+       sysSizeofGroupReq       = 0x84
+       sysSizeofGroupSourceReq = 0x104
+
+       sysSizeofICMPv6Filter = 0x20
+)
+
+type sysSockaddrStorage struct {
+       Len         uint8
+       Family      uint8
+       X__ss_pad1  [6]int8
+       X__ss_align int64
+       X__ss_pad2  [112]int8
+}
+
+type sysSockaddrInet6 struct {
+       Len      uint8
+       Family   uint8
+       Port     uint16
+       Flowinfo uint32
+       Addr     [16]byte /* in6_addr */
+       Scope_id uint32
+}
+
+type sysInet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex uint32
+}
+
+type sysIPv6Mtuinfo struct {
+       Addr sysSockaddrInet6
+       Mtu  uint32
+}
+
+type sysIPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Interface uint32
+}
+
+type sysICMPv6Filter struct {
+       Filt [8]uint32
+}
+
+type sysGroupReq struct {
+       Interface uint32
+       Pad_cgo_0 [128]byte
+}
+
+type sysGroupSourceReq struct {
+       Interface uint32
+       Pad_cgo_0 [128]byte
+       Pad_cgo_1 [128]byte
+}
diff --git a/vendor/golang.org/x/net/ipv6/zsys_dragonfly.go b/vendor/golang.org/x/net/ipv6/zsys_dragonfly.go
new file mode 100644 (file)
index 0000000..5a03ab7
--- /dev/null
@@ -0,0 +1,90 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_dragonfly.go
+
+// +build dragonfly
+
+package ipv6
+
+const (
+       sysIPV6_UNICAST_HOPS   = 0x4
+       sysIPV6_MULTICAST_IF   = 0x9
+       sysIPV6_MULTICAST_HOPS = 0xa
+       sysIPV6_MULTICAST_LOOP = 0xb
+       sysIPV6_JOIN_GROUP     = 0xc
+       sysIPV6_LEAVE_GROUP    = 0xd
+       sysIPV6_PORTRANGE      = 0xe
+       sysICMP6_FILTER        = 0x12
+
+       sysIPV6_CHECKSUM = 0x1a
+       sysIPV6_V6ONLY   = 0x1b
+
+       sysIPV6_IPSEC_POLICY = 0x1c
+
+       sysIPV6_RTHDRDSTOPTS = 0x23
+       sysIPV6_RECVPKTINFO  = 0x24
+       sysIPV6_RECVHOPLIMIT = 0x25
+       sysIPV6_RECVRTHDR    = 0x26
+       sysIPV6_RECVHOPOPTS  = 0x27
+       sysIPV6_RECVDSTOPTS  = 0x28
+
+       sysIPV6_USE_MIN_MTU = 0x2a
+       sysIPV6_RECVPATHMTU = 0x2b
+
+       sysIPV6_PATHMTU = 0x2c
+
+       sysIPV6_PKTINFO  = 0x2e
+       sysIPV6_HOPLIMIT = 0x2f
+       sysIPV6_NEXTHOP  = 0x30
+       sysIPV6_HOPOPTS  = 0x31
+       sysIPV6_DSTOPTS  = 0x32
+       sysIPV6_RTHDR    = 0x33
+
+       sysIPV6_RECVTCLASS = 0x39
+
+       sysIPV6_AUTOFLOWLABEL = 0x3b
+
+       sysIPV6_TCLASS   = 0x3d
+       sysIPV6_DONTFRAG = 0x3e
+
+       sysIPV6_PREFER_TEMPADDR = 0x3f
+
+       sysIPV6_PORTRANGE_DEFAULT = 0x0
+       sysIPV6_PORTRANGE_HIGH    = 0x1
+       sysIPV6_PORTRANGE_LOW     = 0x2
+
+       sysSizeofSockaddrInet6 = 0x1c
+       sysSizeofInet6Pktinfo  = 0x14
+       sysSizeofIPv6Mtuinfo   = 0x20
+
+       sysSizeofIPv6Mreq = 0x14
+
+       sysSizeofICMPv6Filter = 0x20
+)
+
+type sysSockaddrInet6 struct {
+       Len      uint8
+       Family   uint8
+       Port     uint16
+       Flowinfo uint32
+       Addr     [16]byte /* in6_addr */
+       Scope_id uint32
+}
+
+type sysInet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex uint32
+}
+
+type sysIPv6Mtuinfo struct {
+       Addr sysSockaddrInet6
+       Mtu  uint32
+}
+
+type sysIPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Interface uint32
+}
+
+type sysICMPv6Filter struct {
+       Filt [8]uint32
+}
diff --git a/vendor/golang.org/x/net/ipv6/zsys_freebsd_386.go b/vendor/golang.org/x/net/ipv6/zsys_freebsd_386.go
new file mode 100644 (file)
index 0000000..4ace96f
--- /dev/null
@@ -0,0 +1,122 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_freebsd.go
+
+package ipv6
+
+const (
+       sysIPV6_UNICAST_HOPS   = 0x4
+       sysIPV6_MULTICAST_IF   = 0x9
+       sysIPV6_MULTICAST_HOPS = 0xa
+       sysIPV6_MULTICAST_LOOP = 0xb
+       sysIPV6_JOIN_GROUP     = 0xc
+       sysIPV6_LEAVE_GROUP    = 0xd
+       sysIPV6_PORTRANGE      = 0xe
+       sysICMP6_FILTER        = 0x12
+
+       sysIPV6_CHECKSUM = 0x1a
+       sysIPV6_V6ONLY   = 0x1b
+
+       sysIPV6_IPSEC_POLICY = 0x1c
+
+       sysIPV6_RTHDRDSTOPTS = 0x23
+
+       sysIPV6_RECVPKTINFO  = 0x24
+       sysIPV6_RECVHOPLIMIT = 0x25
+       sysIPV6_RECVRTHDR    = 0x26
+       sysIPV6_RECVHOPOPTS  = 0x27
+       sysIPV6_RECVDSTOPTS  = 0x28
+
+       sysIPV6_USE_MIN_MTU = 0x2a
+       sysIPV6_RECVPATHMTU = 0x2b
+
+       sysIPV6_PATHMTU = 0x2c
+
+       sysIPV6_PKTINFO  = 0x2e
+       sysIPV6_HOPLIMIT = 0x2f
+       sysIPV6_NEXTHOP  = 0x30
+       sysIPV6_HOPOPTS  = 0x31
+       sysIPV6_DSTOPTS  = 0x32
+       sysIPV6_RTHDR    = 0x33
+
+       sysIPV6_RECVTCLASS = 0x39
+
+       sysIPV6_AUTOFLOWLABEL = 0x3b
+
+       sysIPV6_TCLASS   = 0x3d
+       sysIPV6_DONTFRAG = 0x3e
+
+       sysIPV6_PREFER_TEMPADDR = 0x3f
+
+       sysIPV6_BINDANY = 0x40
+
+       sysIPV6_MSFILTER = 0x4a
+
+       sysMCAST_JOIN_GROUP         = 0x50
+       sysMCAST_LEAVE_GROUP        = 0x51
+       sysMCAST_JOIN_SOURCE_GROUP  = 0x52
+       sysMCAST_LEAVE_SOURCE_GROUP = 0x53
+       sysMCAST_BLOCK_SOURCE       = 0x54
+       sysMCAST_UNBLOCK_SOURCE     = 0x55
+
+       sysIPV6_PORTRANGE_DEFAULT = 0x0
+       sysIPV6_PORTRANGE_HIGH    = 0x1
+       sysIPV6_PORTRANGE_LOW     = 0x2
+
+       sysSizeofSockaddrStorage = 0x80
+       sysSizeofSockaddrInet6   = 0x1c
+       sysSizeofInet6Pktinfo    = 0x14
+       sysSizeofIPv6Mtuinfo     = 0x20
+
+       sysSizeofIPv6Mreq       = 0x14
+       sysSizeofGroupReq       = 0x84
+       sysSizeofGroupSourceReq = 0x104
+
+       sysSizeofICMPv6Filter = 0x20
+)
+
+type sysSockaddrStorage struct {
+       Len         uint8
+       Family      uint8
+       X__ss_pad1  [6]int8
+       X__ss_align int64
+       X__ss_pad2  [112]int8
+}
+
+type sysSockaddrInet6 struct {
+       Len      uint8
+       Family   uint8
+       Port     uint16
+       Flowinfo uint32
+       Addr     [16]byte /* in6_addr */
+       Scope_id uint32
+}
+
+type sysInet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex uint32
+}
+
+type sysIPv6Mtuinfo struct {
+       Addr sysSockaddrInet6
+       Mtu  uint32
+}
+
+type sysIPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Interface uint32
+}
+
+type sysGroupReq struct {
+       Interface uint32
+       Group     sysSockaddrStorage
+}
+
+type sysGroupSourceReq struct {
+       Interface uint32
+       Group     sysSockaddrStorage
+       Source    sysSockaddrStorage
+}
+
+type sysICMPv6Filter struct {
+       Filt [8]uint32
+}
diff --git a/vendor/golang.org/x/net/ipv6/zsys_freebsd_amd64.go b/vendor/golang.org/x/net/ipv6/zsys_freebsd_amd64.go
new file mode 100644 (file)
index 0000000..4a62c2d
--- /dev/null
@@ -0,0 +1,124 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_freebsd.go
+
+package ipv6
+
+const (
+       sysIPV6_UNICAST_HOPS   = 0x4
+       sysIPV6_MULTICAST_IF   = 0x9
+       sysIPV6_MULTICAST_HOPS = 0xa
+       sysIPV6_MULTICAST_LOOP = 0xb
+       sysIPV6_JOIN_GROUP     = 0xc
+       sysIPV6_LEAVE_GROUP    = 0xd
+       sysIPV6_PORTRANGE      = 0xe
+       sysICMP6_FILTER        = 0x12
+
+       sysIPV6_CHECKSUM = 0x1a
+       sysIPV6_V6ONLY   = 0x1b
+
+       sysIPV6_IPSEC_POLICY = 0x1c
+
+       sysIPV6_RTHDRDSTOPTS = 0x23
+
+       sysIPV6_RECVPKTINFO  = 0x24
+       sysIPV6_RECVHOPLIMIT = 0x25
+       sysIPV6_RECVRTHDR    = 0x26
+       sysIPV6_RECVHOPOPTS  = 0x27
+       sysIPV6_RECVDSTOPTS  = 0x28
+
+       sysIPV6_USE_MIN_MTU = 0x2a
+       sysIPV6_RECVPATHMTU = 0x2b
+
+       sysIPV6_PATHMTU = 0x2c
+
+       sysIPV6_PKTINFO  = 0x2e
+       sysIPV6_HOPLIMIT = 0x2f
+       sysIPV6_NEXTHOP  = 0x30
+       sysIPV6_HOPOPTS  = 0x31
+       sysIPV6_DSTOPTS  = 0x32
+       sysIPV6_RTHDR    = 0x33
+
+       sysIPV6_RECVTCLASS = 0x39
+
+       sysIPV6_AUTOFLOWLABEL = 0x3b
+
+       sysIPV6_TCLASS   = 0x3d
+       sysIPV6_DONTFRAG = 0x3e
+
+       sysIPV6_PREFER_TEMPADDR = 0x3f
+
+       sysIPV6_BINDANY = 0x40
+
+       sysIPV6_MSFILTER = 0x4a
+
+       sysMCAST_JOIN_GROUP         = 0x50
+       sysMCAST_LEAVE_GROUP        = 0x51
+       sysMCAST_JOIN_SOURCE_GROUP  = 0x52
+       sysMCAST_LEAVE_SOURCE_GROUP = 0x53
+       sysMCAST_BLOCK_SOURCE       = 0x54
+       sysMCAST_UNBLOCK_SOURCE     = 0x55
+
+       sysIPV6_PORTRANGE_DEFAULT = 0x0
+       sysIPV6_PORTRANGE_HIGH    = 0x1
+       sysIPV6_PORTRANGE_LOW     = 0x2
+
+       sysSizeofSockaddrStorage = 0x80
+       sysSizeofSockaddrInet6   = 0x1c
+       sysSizeofInet6Pktinfo    = 0x14
+       sysSizeofIPv6Mtuinfo     = 0x20
+
+       sysSizeofIPv6Mreq       = 0x14
+       sysSizeofGroupReq       = 0x88
+       sysSizeofGroupSourceReq = 0x108
+
+       sysSizeofICMPv6Filter = 0x20
+)
+
+type sysSockaddrStorage struct {
+       Len         uint8
+       Family      uint8
+       X__ss_pad1  [6]int8
+       X__ss_align int64
+       X__ss_pad2  [112]int8
+}
+
+type sysSockaddrInet6 struct {
+       Len      uint8
+       Family   uint8
+       Port     uint16
+       Flowinfo uint32
+       Addr     [16]byte /* in6_addr */
+       Scope_id uint32
+}
+
+type sysInet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex uint32
+}
+
+type sysIPv6Mtuinfo struct {
+       Addr sysSockaddrInet6
+       Mtu  uint32
+}
+
+type sysIPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Interface uint32
+}
+
+type sysGroupReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysSockaddrStorage
+}
+
+type sysGroupSourceReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysSockaddrStorage
+       Source    sysSockaddrStorage
+}
+
+type sysICMPv6Filter struct {
+       Filt [8]uint32
+}
diff --git a/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm.go b/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm.go
new file mode 100644 (file)
index 0000000..4a62c2d
--- /dev/null
@@ -0,0 +1,124 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_freebsd.go
+
+package ipv6
+
+const (
+       sysIPV6_UNICAST_HOPS   = 0x4
+       sysIPV6_MULTICAST_IF   = 0x9
+       sysIPV6_MULTICAST_HOPS = 0xa
+       sysIPV6_MULTICAST_LOOP = 0xb
+       sysIPV6_JOIN_GROUP     = 0xc
+       sysIPV6_LEAVE_GROUP    = 0xd
+       sysIPV6_PORTRANGE      = 0xe
+       sysICMP6_FILTER        = 0x12
+
+       sysIPV6_CHECKSUM = 0x1a
+       sysIPV6_V6ONLY   = 0x1b
+
+       sysIPV6_IPSEC_POLICY = 0x1c
+
+       sysIPV6_RTHDRDSTOPTS = 0x23
+
+       sysIPV6_RECVPKTINFO  = 0x24
+       sysIPV6_RECVHOPLIMIT = 0x25
+       sysIPV6_RECVRTHDR    = 0x26
+       sysIPV6_RECVHOPOPTS  = 0x27
+       sysIPV6_RECVDSTOPTS  = 0x28
+
+       sysIPV6_USE_MIN_MTU = 0x2a
+       sysIPV6_RECVPATHMTU = 0x2b
+
+       sysIPV6_PATHMTU = 0x2c
+
+       sysIPV6_PKTINFO  = 0x2e
+       sysIPV6_HOPLIMIT = 0x2f
+       sysIPV6_NEXTHOP  = 0x30
+       sysIPV6_HOPOPTS  = 0x31
+       sysIPV6_DSTOPTS  = 0x32
+       sysIPV6_RTHDR    = 0x33
+
+       sysIPV6_RECVTCLASS = 0x39
+
+       sysIPV6_AUTOFLOWLABEL = 0x3b
+
+       sysIPV6_TCLASS   = 0x3d
+       sysIPV6_DONTFRAG = 0x3e
+
+       sysIPV6_PREFER_TEMPADDR = 0x3f
+
+       sysIPV6_BINDANY = 0x40
+
+       sysIPV6_MSFILTER = 0x4a
+
+       sysMCAST_JOIN_GROUP         = 0x50
+       sysMCAST_LEAVE_GROUP        = 0x51
+       sysMCAST_JOIN_SOURCE_GROUP  = 0x52
+       sysMCAST_LEAVE_SOURCE_GROUP = 0x53
+       sysMCAST_BLOCK_SOURCE       = 0x54
+       sysMCAST_UNBLOCK_SOURCE     = 0x55
+
+       sysIPV6_PORTRANGE_DEFAULT = 0x0
+       sysIPV6_PORTRANGE_HIGH    = 0x1
+       sysIPV6_PORTRANGE_LOW     = 0x2
+
+       sysSizeofSockaddrStorage = 0x80
+       sysSizeofSockaddrInet6   = 0x1c
+       sysSizeofInet6Pktinfo    = 0x14
+       sysSizeofIPv6Mtuinfo     = 0x20
+
+       sysSizeofIPv6Mreq       = 0x14
+       sysSizeofGroupReq       = 0x88
+       sysSizeofGroupSourceReq = 0x108
+
+       sysSizeofICMPv6Filter = 0x20
+)
+
+type sysSockaddrStorage struct {
+       Len         uint8
+       Family      uint8
+       X__ss_pad1  [6]int8
+       X__ss_align int64
+       X__ss_pad2  [112]int8
+}
+
+type sysSockaddrInet6 struct {
+       Len      uint8
+       Family   uint8
+       Port     uint16
+       Flowinfo uint32
+       Addr     [16]byte /* in6_addr */
+       Scope_id uint32
+}
+
+type sysInet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex uint32
+}
+
+type sysIPv6Mtuinfo struct {
+       Addr sysSockaddrInet6
+       Mtu  uint32
+}
+
+type sysIPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Interface uint32
+}
+
+type sysGroupReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysSockaddrStorage
+}
+
+type sysGroupSourceReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysSockaddrStorage
+       Source    sysSockaddrStorage
+}
+
+type sysICMPv6Filter struct {
+       Filt [8]uint32
+}
diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_386.go b/vendor/golang.org/x/net/ipv6/zsys_linux_386.go
new file mode 100644 (file)
index 0000000..2727929
--- /dev/null
@@ -0,0 +1,152 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+package ipv6
+
+const (
+       sysIPV6_ADDRFORM       = 0x1
+       sysIPV6_2292PKTINFO    = 0x2
+       sysIPV6_2292HOPOPTS    = 0x3
+       sysIPV6_2292DSTOPTS    = 0x4
+       sysIPV6_2292RTHDR      = 0x5
+       sysIPV6_2292PKTOPTIONS = 0x6
+       sysIPV6_CHECKSUM       = 0x7
+       sysIPV6_2292HOPLIMIT   = 0x8
+       sysIPV6_NEXTHOP        = 0x9
+       sysIPV6_FLOWINFO       = 0xb
+
+       sysIPV6_UNICAST_HOPS        = 0x10
+       sysIPV6_MULTICAST_IF        = 0x11
+       sysIPV6_MULTICAST_HOPS      = 0x12
+       sysIPV6_MULTICAST_LOOP      = 0x13
+       sysIPV6_ADD_MEMBERSHIP      = 0x14
+       sysIPV6_DROP_MEMBERSHIP     = 0x15
+       sysMCAST_JOIN_GROUP         = 0x2a
+       sysMCAST_LEAVE_GROUP        = 0x2d
+       sysMCAST_JOIN_SOURCE_GROUP  = 0x2e
+       sysMCAST_LEAVE_SOURCE_GROUP = 0x2f
+       sysMCAST_BLOCK_SOURCE       = 0x2b
+       sysMCAST_UNBLOCK_SOURCE     = 0x2c
+       sysMCAST_MSFILTER           = 0x30
+       sysIPV6_ROUTER_ALERT        = 0x16
+       sysIPV6_MTU_DISCOVER        = 0x17
+       sysIPV6_MTU                 = 0x18
+       sysIPV6_RECVERR             = 0x19
+       sysIPV6_V6ONLY              = 0x1a
+       sysIPV6_JOIN_ANYCAST        = 0x1b
+       sysIPV6_LEAVE_ANYCAST       = 0x1c
+
+       sysIPV6_FLOWLABEL_MGR = 0x20
+       sysIPV6_FLOWINFO_SEND = 0x21
+
+       sysIPV6_IPSEC_POLICY = 0x22
+       sysIPV6_XFRM_POLICY  = 0x23
+
+       sysIPV6_RECVPKTINFO  = 0x31
+       sysIPV6_PKTINFO      = 0x32
+       sysIPV6_RECVHOPLIMIT = 0x33
+       sysIPV6_HOPLIMIT     = 0x34
+       sysIPV6_RECVHOPOPTS  = 0x35
+       sysIPV6_HOPOPTS      = 0x36
+       sysIPV6_RTHDRDSTOPTS = 0x37
+       sysIPV6_RECVRTHDR    = 0x38
+       sysIPV6_RTHDR        = 0x39
+       sysIPV6_RECVDSTOPTS  = 0x3a
+       sysIPV6_DSTOPTS      = 0x3b
+       sysIPV6_RECVPATHMTU  = 0x3c
+       sysIPV6_PATHMTU      = 0x3d
+       sysIPV6_DONTFRAG     = 0x3e
+
+       sysIPV6_RECVTCLASS = 0x42
+       sysIPV6_TCLASS     = 0x43
+
+       sysIPV6_ADDR_PREFERENCES = 0x48
+
+       sysIPV6_PREFER_SRC_TMP            = 0x1
+       sysIPV6_PREFER_SRC_PUBLIC         = 0x2
+       sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100
+       sysIPV6_PREFER_SRC_COA            = 0x4
+       sysIPV6_PREFER_SRC_HOME           = 0x400
+       sysIPV6_PREFER_SRC_CGA            = 0x8
+       sysIPV6_PREFER_SRC_NONCGA         = 0x800
+
+       sysIPV6_MINHOPCOUNT = 0x49
+
+       sysIPV6_ORIGDSTADDR     = 0x4a
+       sysIPV6_RECVORIGDSTADDR = 0x4a
+       sysIPV6_TRANSPARENT     = 0x4b
+       sysIPV6_UNICAST_IF      = 0x4c
+
+       sysICMPV6_FILTER = 0x1
+
+       sysICMPV6_FILTER_BLOCK       = 0x1
+       sysICMPV6_FILTER_PASS        = 0x2
+       sysICMPV6_FILTER_BLOCKOTHERS = 0x3
+       sysICMPV6_FILTER_PASSONLY    = 0x4
+
+       sysSizeofKernelSockaddrStorage = 0x80
+       sysSizeofSockaddrInet6         = 0x1c
+       sysSizeofInet6Pktinfo          = 0x14
+       sysSizeofIPv6Mtuinfo           = 0x20
+       sysSizeofIPv6FlowlabelReq      = 0x20
+
+       sysSizeofIPv6Mreq       = 0x14
+       sysSizeofGroupReq       = 0x84
+       sysSizeofGroupSourceReq = 0x104
+
+       sysSizeofICMPv6Filter = 0x20
+)
+
+type sysKernelSockaddrStorage struct {
+       Family  uint16
+       X__data [126]int8
+}
+
+type sysSockaddrInet6 struct {
+       Family   uint16
+       Port     uint16
+       Flowinfo uint32
+       Addr     [16]byte /* in6_addr */
+       Scope_id uint32
+}
+
+type sysInet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex int32
+}
+
+type sysIPv6Mtuinfo struct {
+       Addr sysSockaddrInet6
+       Mtu  uint32
+}
+
+type sysIPv6FlowlabelReq struct {
+       Dst        [16]byte /* in6_addr */
+       Label      uint32
+       Action     uint8
+       Share      uint8
+       Flags      uint16
+       Expires    uint16
+       Linger     uint16
+       X__flr_pad uint32
+}
+
+type sysIPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Ifindex   int32
+}
+
+type sysGroupReq struct {
+       Interface uint32
+       Group     sysKernelSockaddrStorage
+}
+
+type sysGroupSourceReq struct {
+       Interface uint32
+       Group     sysKernelSockaddrStorage
+       Source    sysKernelSockaddrStorage
+}
+
+type sysICMPv6Filter struct {
+       Data [8]uint32
+}
diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go
new file mode 100644 (file)
index 0000000..2f742e9
--- /dev/null
@@ -0,0 +1,154 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+package ipv6
+
+const (
+       sysIPV6_ADDRFORM       = 0x1
+       sysIPV6_2292PKTINFO    = 0x2
+       sysIPV6_2292HOPOPTS    = 0x3
+       sysIPV6_2292DSTOPTS    = 0x4
+       sysIPV6_2292RTHDR      = 0x5
+       sysIPV6_2292PKTOPTIONS = 0x6
+       sysIPV6_CHECKSUM       = 0x7
+       sysIPV6_2292HOPLIMIT   = 0x8
+       sysIPV6_NEXTHOP        = 0x9
+       sysIPV6_FLOWINFO       = 0xb
+
+       sysIPV6_UNICAST_HOPS        = 0x10
+       sysIPV6_MULTICAST_IF        = 0x11
+       sysIPV6_MULTICAST_HOPS      = 0x12
+       sysIPV6_MULTICAST_LOOP      = 0x13
+       sysIPV6_ADD_MEMBERSHIP      = 0x14
+       sysIPV6_DROP_MEMBERSHIP     = 0x15
+       sysMCAST_JOIN_GROUP         = 0x2a
+       sysMCAST_LEAVE_GROUP        = 0x2d
+       sysMCAST_JOIN_SOURCE_GROUP  = 0x2e
+       sysMCAST_LEAVE_SOURCE_GROUP = 0x2f
+       sysMCAST_BLOCK_SOURCE       = 0x2b
+       sysMCAST_UNBLOCK_SOURCE     = 0x2c
+       sysMCAST_MSFILTER           = 0x30
+       sysIPV6_ROUTER_ALERT        = 0x16
+       sysIPV6_MTU_DISCOVER        = 0x17
+       sysIPV6_MTU                 = 0x18
+       sysIPV6_RECVERR             = 0x19
+       sysIPV6_V6ONLY              = 0x1a
+       sysIPV6_JOIN_ANYCAST        = 0x1b
+       sysIPV6_LEAVE_ANYCAST       = 0x1c
+
+       sysIPV6_FLOWLABEL_MGR = 0x20
+       sysIPV6_FLOWINFO_SEND = 0x21
+
+       sysIPV6_IPSEC_POLICY = 0x22
+       sysIPV6_XFRM_POLICY  = 0x23
+
+       sysIPV6_RECVPKTINFO  = 0x31
+       sysIPV6_PKTINFO      = 0x32
+       sysIPV6_RECVHOPLIMIT = 0x33
+       sysIPV6_HOPLIMIT     = 0x34
+       sysIPV6_RECVHOPOPTS  = 0x35
+       sysIPV6_HOPOPTS      = 0x36
+       sysIPV6_RTHDRDSTOPTS = 0x37
+       sysIPV6_RECVRTHDR    = 0x38
+       sysIPV6_RTHDR        = 0x39
+       sysIPV6_RECVDSTOPTS  = 0x3a
+       sysIPV6_DSTOPTS      = 0x3b
+       sysIPV6_RECVPATHMTU  = 0x3c
+       sysIPV6_PATHMTU      = 0x3d
+       sysIPV6_DONTFRAG     = 0x3e
+
+       sysIPV6_RECVTCLASS = 0x42
+       sysIPV6_TCLASS     = 0x43
+
+       sysIPV6_ADDR_PREFERENCES = 0x48
+
+       sysIPV6_PREFER_SRC_TMP            = 0x1
+       sysIPV6_PREFER_SRC_PUBLIC         = 0x2
+       sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100
+       sysIPV6_PREFER_SRC_COA            = 0x4
+       sysIPV6_PREFER_SRC_HOME           = 0x400
+       sysIPV6_PREFER_SRC_CGA            = 0x8
+       sysIPV6_PREFER_SRC_NONCGA         = 0x800
+
+       sysIPV6_MINHOPCOUNT = 0x49
+
+       sysIPV6_ORIGDSTADDR     = 0x4a
+       sysIPV6_RECVORIGDSTADDR = 0x4a
+       sysIPV6_TRANSPARENT     = 0x4b
+       sysIPV6_UNICAST_IF      = 0x4c
+
+       sysICMPV6_FILTER = 0x1
+
+       sysICMPV6_FILTER_BLOCK       = 0x1
+       sysICMPV6_FILTER_PASS        = 0x2
+       sysICMPV6_FILTER_BLOCKOTHERS = 0x3
+       sysICMPV6_FILTER_PASSONLY    = 0x4
+
+       sysSizeofKernelSockaddrStorage = 0x80
+       sysSizeofSockaddrInet6         = 0x1c
+       sysSizeofInet6Pktinfo          = 0x14
+       sysSizeofIPv6Mtuinfo           = 0x20
+       sysSizeofIPv6FlowlabelReq      = 0x20
+
+       sysSizeofIPv6Mreq       = 0x14
+       sysSizeofGroupReq       = 0x88
+       sysSizeofGroupSourceReq = 0x108
+
+       sysSizeofICMPv6Filter = 0x20
+)
+
+type sysKernelSockaddrStorage struct {
+       Family  uint16
+       X__data [126]int8
+}
+
+type sysSockaddrInet6 struct {
+       Family   uint16
+       Port     uint16
+       Flowinfo uint32
+       Addr     [16]byte /* in6_addr */
+       Scope_id uint32
+}
+
+type sysInet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex int32
+}
+
+type sysIPv6Mtuinfo struct {
+       Addr sysSockaddrInet6
+       Mtu  uint32
+}
+
+type sysIPv6FlowlabelReq struct {
+       Dst        [16]byte /* in6_addr */
+       Label      uint32
+       Action     uint8
+       Share      uint8
+       Flags      uint16
+       Expires    uint16
+       Linger     uint16
+       X__flr_pad uint32
+}
+
+type sysIPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Ifindex   int32
+}
+
+type sysGroupReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysKernelSockaddrStorage
+}
+
+type sysGroupSourceReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysKernelSockaddrStorage
+       Source    sysKernelSockaddrStorage
+}
+
+type sysICMPv6Filter struct {
+       Data [8]uint32
+}
diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go b/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go
new file mode 100644 (file)
index 0000000..2727929
--- /dev/null
@@ -0,0 +1,152 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+package ipv6
+
+const (
+       sysIPV6_ADDRFORM       = 0x1
+       sysIPV6_2292PKTINFO    = 0x2
+       sysIPV6_2292HOPOPTS    = 0x3
+       sysIPV6_2292DSTOPTS    = 0x4
+       sysIPV6_2292RTHDR      = 0x5
+       sysIPV6_2292PKTOPTIONS = 0x6
+       sysIPV6_CHECKSUM       = 0x7
+       sysIPV6_2292HOPLIMIT   = 0x8
+       sysIPV6_NEXTHOP        = 0x9
+       sysIPV6_FLOWINFO       = 0xb
+
+       sysIPV6_UNICAST_HOPS        = 0x10
+       sysIPV6_MULTICAST_IF        = 0x11
+       sysIPV6_MULTICAST_HOPS      = 0x12
+       sysIPV6_MULTICAST_LOOP      = 0x13
+       sysIPV6_ADD_MEMBERSHIP      = 0x14
+       sysIPV6_DROP_MEMBERSHIP     = 0x15
+       sysMCAST_JOIN_GROUP         = 0x2a
+       sysMCAST_LEAVE_GROUP        = 0x2d
+       sysMCAST_JOIN_SOURCE_GROUP  = 0x2e
+       sysMCAST_LEAVE_SOURCE_GROUP = 0x2f
+       sysMCAST_BLOCK_SOURCE       = 0x2b
+       sysMCAST_UNBLOCK_SOURCE     = 0x2c
+       sysMCAST_MSFILTER           = 0x30
+       sysIPV6_ROUTER_ALERT        = 0x16
+       sysIPV6_MTU_DISCOVER        = 0x17
+       sysIPV6_MTU                 = 0x18
+       sysIPV6_RECVERR             = 0x19
+       sysIPV6_V6ONLY              = 0x1a
+       sysIPV6_JOIN_ANYCAST        = 0x1b
+       sysIPV6_LEAVE_ANYCAST       = 0x1c
+
+       sysIPV6_FLOWLABEL_MGR = 0x20
+       sysIPV6_FLOWINFO_SEND = 0x21
+
+       sysIPV6_IPSEC_POLICY = 0x22
+       sysIPV6_XFRM_POLICY  = 0x23
+
+       sysIPV6_RECVPKTINFO  = 0x31
+       sysIPV6_PKTINFO      = 0x32
+       sysIPV6_RECVHOPLIMIT = 0x33
+       sysIPV6_HOPLIMIT     = 0x34
+       sysIPV6_RECVHOPOPTS  = 0x35
+       sysIPV6_HOPOPTS      = 0x36
+       sysIPV6_RTHDRDSTOPTS = 0x37
+       sysIPV6_RECVRTHDR    = 0x38
+       sysIPV6_RTHDR        = 0x39
+       sysIPV6_RECVDSTOPTS  = 0x3a
+       sysIPV6_DSTOPTS      = 0x3b
+       sysIPV6_RECVPATHMTU  = 0x3c
+       sysIPV6_PATHMTU      = 0x3d
+       sysIPV6_DONTFRAG     = 0x3e
+
+       sysIPV6_RECVTCLASS = 0x42
+       sysIPV6_TCLASS     = 0x43
+
+       sysIPV6_ADDR_PREFERENCES = 0x48
+
+       sysIPV6_PREFER_SRC_TMP            = 0x1
+       sysIPV6_PREFER_SRC_PUBLIC         = 0x2
+       sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100
+       sysIPV6_PREFER_SRC_COA            = 0x4
+       sysIPV6_PREFER_SRC_HOME           = 0x400
+       sysIPV6_PREFER_SRC_CGA            = 0x8
+       sysIPV6_PREFER_SRC_NONCGA         = 0x800
+
+       sysIPV6_MINHOPCOUNT = 0x49
+
+       sysIPV6_ORIGDSTADDR     = 0x4a
+       sysIPV6_RECVORIGDSTADDR = 0x4a
+       sysIPV6_TRANSPARENT     = 0x4b
+       sysIPV6_UNICAST_IF      = 0x4c
+
+       sysICMPV6_FILTER = 0x1
+
+       sysICMPV6_FILTER_BLOCK       = 0x1
+       sysICMPV6_FILTER_PASS        = 0x2
+       sysICMPV6_FILTER_BLOCKOTHERS = 0x3
+       sysICMPV6_FILTER_PASSONLY    = 0x4
+
+       sysSizeofKernelSockaddrStorage = 0x80
+       sysSizeofSockaddrInet6         = 0x1c
+       sysSizeofInet6Pktinfo          = 0x14
+       sysSizeofIPv6Mtuinfo           = 0x20
+       sysSizeofIPv6FlowlabelReq      = 0x20
+
+       sysSizeofIPv6Mreq       = 0x14
+       sysSizeofGroupReq       = 0x84
+       sysSizeofGroupSourceReq = 0x104
+
+       sysSizeofICMPv6Filter = 0x20
+)
+
+type sysKernelSockaddrStorage struct {
+       Family  uint16
+       X__data [126]int8
+}
+
+type sysSockaddrInet6 struct {
+       Family   uint16
+       Port     uint16
+       Flowinfo uint32
+       Addr     [16]byte /* in6_addr */
+       Scope_id uint32
+}
+
+type sysInet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex int32
+}
+
+type sysIPv6Mtuinfo struct {
+       Addr sysSockaddrInet6
+       Mtu  uint32
+}
+
+type sysIPv6FlowlabelReq struct {
+       Dst        [16]byte /* in6_addr */
+       Label      uint32
+       Action     uint8
+       Share      uint8
+       Flags      uint16
+       Expires    uint16
+       Linger     uint16
+       X__flr_pad uint32
+}
+
+type sysIPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Ifindex   int32
+}
+
+type sysGroupReq struct {
+       Interface uint32
+       Group     sysKernelSockaddrStorage
+}
+
+type sysGroupSourceReq struct {
+       Interface uint32
+       Group     sysKernelSockaddrStorage
+       Source    sysKernelSockaddrStorage
+}
+
+type sysICMPv6Filter struct {
+       Data [8]uint32
+}
diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go
new file mode 100644 (file)
index 0000000..ab10464
--- /dev/null
@@ -0,0 +1,156 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+// +build linux,arm64
+
+package ipv6
+
+const (
+       sysIPV6_ADDRFORM       = 0x1
+       sysIPV6_2292PKTINFO    = 0x2
+       sysIPV6_2292HOPOPTS    = 0x3
+       sysIPV6_2292DSTOPTS    = 0x4
+       sysIPV6_2292RTHDR      = 0x5
+       sysIPV6_2292PKTOPTIONS = 0x6
+       sysIPV6_CHECKSUM       = 0x7
+       sysIPV6_2292HOPLIMIT   = 0x8
+       sysIPV6_NEXTHOP        = 0x9
+       sysIPV6_FLOWINFO       = 0xb
+
+       sysIPV6_UNICAST_HOPS        = 0x10
+       sysIPV6_MULTICAST_IF        = 0x11
+       sysIPV6_MULTICAST_HOPS      = 0x12
+       sysIPV6_MULTICAST_LOOP      = 0x13
+       sysIPV6_ADD_MEMBERSHIP      = 0x14
+       sysIPV6_DROP_MEMBERSHIP     = 0x15
+       sysMCAST_JOIN_GROUP         = 0x2a
+       sysMCAST_LEAVE_GROUP        = 0x2d
+       sysMCAST_JOIN_SOURCE_GROUP  = 0x2e
+       sysMCAST_LEAVE_SOURCE_GROUP = 0x2f
+       sysMCAST_BLOCK_SOURCE       = 0x2b
+       sysMCAST_UNBLOCK_SOURCE     = 0x2c
+       sysMCAST_MSFILTER           = 0x30
+       sysIPV6_ROUTER_ALERT        = 0x16
+       sysIPV6_MTU_DISCOVER        = 0x17
+       sysIPV6_MTU                 = 0x18
+       sysIPV6_RECVERR             = 0x19
+       sysIPV6_V6ONLY              = 0x1a
+       sysIPV6_JOIN_ANYCAST        = 0x1b
+       sysIPV6_LEAVE_ANYCAST       = 0x1c
+
+       sysIPV6_FLOWLABEL_MGR = 0x20
+       sysIPV6_FLOWINFO_SEND = 0x21
+
+       sysIPV6_IPSEC_POLICY = 0x22
+       sysIPV6_XFRM_POLICY  = 0x23
+
+       sysIPV6_RECVPKTINFO  = 0x31
+       sysIPV6_PKTINFO      = 0x32
+       sysIPV6_RECVHOPLIMIT = 0x33
+       sysIPV6_HOPLIMIT     = 0x34
+       sysIPV6_RECVHOPOPTS  = 0x35
+       sysIPV6_HOPOPTS      = 0x36
+       sysIPV6_RTHDRDSTOPTS = 0x37
+       sysIPV6_RECVRTHDR    = 0x38
+       sysIPV6_RTHDR        = 0x39
+       sysIPV6_RECVDSTOPTS  = 0x3a
+       sysIPV6_DSTOPTS      = 0x3b
+       sysIPV6_RECVPATHMTU  = 0x3c
+       sysIPV6_PATHMTU      = 0x3d
+       sysIPV6_DONTFRAG     = 0x3e
+
+       sysIPV6_RECVTCLASS = 0x42
+       sysIPV6_TCLASS     = 0x43
+
+       sysIPV6_ADDR_PREFERENCES = 0x48
+
+       sysIPV6_PREFER_SRC_TMP            = 0x1
+       sysIPV6_PREFER_SRC_PUBLIC         = 0x2
+       sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100
+       sysIPV6_PREFER_SRC_COA            = 0x4
+       sysIPV6_PREFER_SRC_HOME           = 0x400
+       sysIPV6_PREFER_SRC_CGA            = 0x8
+       sysIPV6_PREFER_SRC_NONCGA         = 0x800
+
+       sysIPV6_MINHOPCOUNT = 0x49
+
+       sysIPV6_ORIGDSTADDR     = 0x4a
+       sysIPV6_RECVORIGDSTADDR = 0x4a
+       sysIPV6_TRANSPARENT     = 0x4b
+       sysIPV6_UNICAST_IF      = 0x4c
+
+       sysICMPV6_FILTER = 0x1
+
+       sysICMPV6_FILTER_BLOCK       = 0x1
+       sysICMPV6_FILTER_PASS        = 0x2
+       sysICMPV6_FILTER_BLOCKOTHERS = 0x3
+       sysICMPV6_FILTER_PASSONLY    = 0x4
+
+       sysSizeofKernelSockaddrStorage = 0x80
+       sysSizeofSockaddrInet6         = 0x1c
+       sysSizeofInet6Pktinfo          = 0x14
+       sysSizeofIPv6Mtuinfo           = 0x20
+       sysSizeofIPv6FlowlabelReq      = 0x20
+
+       sysSizeofIPv6Mreq       = 0x14
+       sysSizeofGroupReq       = 0x88
+       sysSizeofGroupSourceReq = 0x108
+
+       sysSizeofICMPv6Filter = 0x20
+)
+
+type sysKernelSockaddrStorage struct {
+       Family  uint16
+       X__data [126]int8
+}
+
+type sysSockaddrInet6 struct {
+       Family   uint16
+       Port     uint16
+       Flowinfo uint32
+       Addr     [16]byte /* in6_addr */
+       Scope_id uint32
+}
+
+type sysInet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex int32
+}
+
+type sysIPv6Mtuinfo struct {
+       Addr sysSockaddrInet6
+       Mtu  uint32
+}
+
+type sysIPv6FlowlabelReq struct {
+       Dst        [16]byte /* in6_addr */
+       Label      uint32
+       Action     uint8
+       Share      uint8
+       Flags      uint16
+       Expires    uint16
+       Linger     uint16
+       X__flr_pad uint32
+}
+
+type sysIPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Ifindex   int32
+}
+
+type sysGroupReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysKernelSockaddrStorage
+}
+
+type sysGroupSourceReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysKernelSockaddrStorage
+       Source    sysKernelSockaddrStorage
+}
+
+type sysICMPv6Filter struct {
+       Data [8]uint32
+}
diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go
new file mode 100644 (file)
index 0000000..ec8ce15
--- /dev/null
@@ -0,0 +1,156 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+// +build linux,mips64
+
+package ipv6
+
+const (
+       sysIPV6_ADDRFORM       = 0x1
+       sysIPV6_2292PKTINFO    = 0x2
+       sysIPV6_2292HOPOPTS    = 0x3
+       sysIPV6_2292DSTOPTS    = 0x4
+       sysIPV6_2292RTHDR      = 0x5
+       sysIPV6_2292PKTOPTIONS = 0x6
+       sysIPV6_CHECKSUM       = 0x7
+       sysIPV6_2292HOPLIMIT   = 0x8
+       sysIPV6_NEXTHOP        = 0x9
+       sysIPV6_FLOWINFO       = 0xb
+
+       sysIPV6_UNICAST_HOPS        = 0x10
+       sysIPV6_MULTICAST_IF        = 0x11
+       sysIPV6_MULTICAST_HOPS      = 0x12
+       sysIPV6_MULTICAST_LOOP      = 0x13
+       sysIPV6_ADD_MEMBERSHIP      = 0x14
+       sysIPV6_DROP_MEMBERSHIP     = 0x15
+       sysMCAST_JOIN_GROUP         = 0x2a
+       sysMCAST_LEAVE_GROUP        = 0x2d
+       sysMCAST_JOIN_SOURCE_GROUP  = 0x2e
+       sysMCAST_LEAVE_SOURCE_GROUP = 0x2f
+       sysMCAST_BLOCK_SOURCE       = 0x2b
+       sysMCAST_UNBLOCK_SOURCE     = 0x2c
+       sysMCAST_MSFILTER           = 0x30
+       sysIPV6_ROUTER_ALERT        = 0x16
+       sysIPV6_MTU_DISCOVER        = 0x17
+       sysIPV6_MTU                 = 0x18
+       sysIPV6_RECVERR             = 0x19
+       sysIPV6_V6ONLY              = 0x1a
+       sysIPV6_JOIN_ANYCAST        = 0x1b
+       sysIPV6_LEAVE_ANYCAST       = 0x1c
+
+       sysIPV6_FLOWLABEL_MGR = 0x20
+       sysIPV6_FLOWINFO_SEND = 0x21
+
+       sysIPV6_IPSEC_POLICY = 0x22
+       sysIPV6_XFRM_POLICY  = 0x23
+
+       sysIPV6_RECVPKTINFO  = 0x31
+       sysIPV6_PKTINFO      = 0x32
+       sysIPV6_RECVHOPLIMIT = 0x33
+       sysIPV6_HOPLIMIT     = 0x34
+       sysIPV6_RECVHOPOPTS  = 0x35
+       sysIPV6_HOPOPTS      = 0x36
+       sysIPV6_RTHDRDSTOPTS = 0x37
+       sysIPV6_RECVRTHDR    = 0x38
+       sysIPV6_RTHDR        = 0x39
+       sysIPV6_RECVDSTOPTS  = 0x3a
+       sysIPV6_DSTOPTS      = 0x3b
+       sysIPV6_RECVPATHMTU  = 0x3c
+       sysIPV6_PATHMTU      = 0x3d
+       sysIPV6_DONTFRAG     = 0x3e
+
+       sysIPV6_RECVTCLASS = 0x42
+       sysIPV6_TCLASS     = 0x43
+
+       sysIPV6_ADDR_PREFERENCES = 0x48
+
+       sysIPV6_PREFER_SRC_TMP            = 0x1
+       sysIPV6_PREFER_SRC_PUBLIC         = 0x2
+       sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100
+       sysIPV6_PREFER_SRC_COA            = 0x4
+       sysIPV6_PREFER_SRC_HOME           = 0x400
+       sysIPV6_PREFER_SRC_CGA            = 0x8
+       sysIPV6_PREFER_SRC_NONCGA         = 0x800
+
+       sysIPV6_MINHOPCOUNT = 0x49
+
+       sysIPV6_ORIGDSTADDR     = 0x4a
+       sysIPV6_RECVORIGDSTADDR = 0x4a
+       sysIPV6_TRANSPARENT     = 0x4b
+       sysIPV6_UNICAST_IF      = 0x4c
+
+       sysICMPV6_FILTER = 0x1
+
+       sysICMPV6_FILTER_BLOCK       = 0x1
+       sysICMPV6_FILTER_PASS        = 0x2
+       sysICMPV6_FILTER_BLOCKOTHERS = 0x3
+       sysICMPV6_FILTER_PASSONLY    = 0x4
+
+       sysSizeofKernelSockaddrStorage = 0x80
+       sysSizeofSockaddrInet6         = 0x1c
+       sysSizeofInet6Pktinfo          = 0x14
+       sysSizeofIPv6Mtuinfo           = 0x20
+       sysSizeofIPv6FlowlabelReq      = 0x20
+
+       sysSizeofIPv6Mreq       = 0x14
+       sysSizeofGroupReq       = 0x88
+       sysSizeofGroupSourceReq = 0x108
+
+       sysSizeofICMPv6Filter = 0x20
+)
+
+type sysKernelSockaddrStorage struct {
+       Family  uint16
+       X__data [126]int8
+}
+
+type sysSockaddrInet6 struct {
+       Family   uint16
+       Port     uint16
+       Flowinfo uint32
+       Addr     [16]byte /* in6_addr */
+       Scope_id uint32
+}
+
+type sysInet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex int32
+}
+
+type sysIPv6Mtuinfo struct {
+       Addr sysSockaddrInet6
+       Mtu  uint32
+}
+
+type sysIPv6FlowlabelReq struct {
+       Dst        [16]byte /* in6_addr */
+       Label      uint32
+       Action     uint8
+       Share      uint8
+       Flags      uint16
+       Expires    uint16
+       Linger     uint16
+       X__flr_pad uint32
+}
+
+type sysIPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Ifindex   int32
+}
+
+type sysGroupReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysKernelSockaddrStorage
+}
+
+type sysGroupSourceReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysKernelSockaddrStorage
+       Source    sysKernelSockaddrStorage
+}
+
+type sysICMPv6Filter struct {
+       Data [8]uint32
+}
diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go b/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go
new file mode 100644 (file)
index 0000000..2341ae6
--- /dev/null
@@ -0,0 +1,156 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+// +build linux,mips64le
+
+package ipv6
+
+const (
+       sysIPV6_ADDRFORM       = 0x1
+       sysIPV6_2292PKTINFO    = 0x2
+       sysIPV6_2292HOPOPTS    = 0x3
+       sysIPV6_2292DSTOPTS    = 0x4
+       sysIPV6_2292RTHDR      = 0x5
+       sysIPV6_2292PKTOPTIONS = 0x6
+       sysIPV6_CHECKSUM       = 0x7
+       sysIPV6_2292HOPLIMIT   = 0x8
+       sysIPV6_NEXTHOP        = 0x9
+       sysIPV6_FLOWINFO       = 0xb
+
+       sysIPV6_UNICAST_HOPS        = 0x10
+       sysIPV6_MULTICAST_IF        = 0x11
+       sysIPV6_MULTICAST_HOPS      = 0x12
+       sysIPV6_MULTICAST_LOOP      = 0x13
+       sysIPV6_ADD_MEMBERSHIP      = 0x14
+       sysIPV6_DROP_MEMBERSHIP     = 0x15
+       sysMCAST_JOIN_GROUP         = 0x2a
+       sysMCAST_LEAVE_GROUP        = 0x2d
+       sysMCAST_JOIN_SOURCE_GROUP  = 0x2e
+       sysMCAST_LEAVE_SOURCE_GROUP = 0x2f
+       sysMCAST_BLOCK_SOURCE       = 0x2b
+       sysMCAST_UNBLOCK_SOURCE     = 0x2c
+       sysMCAST_MSFILTER           = 0x30
+       sysIPV6_ROUTER_ALERT        = 0x16
+       sysIPV6_MTU_DISCOVER        = 0x17
+       sysIPV6_MTU                 = 0x18
+       sysIPV6_RECVERR             = 0x19
+       sysIPV6_V6ONLY              = 0x1a
+       sysIPV6_JOIN_ANYCAST        = 0x1b
+       sysIPV6_LEAVE_ANYCAST       = 0x1c
+
+       sysIPV6_FLOWLABEL_MGR = 0x20
+       sysIPV6_FLOWINFO_SEND = 0x21
+
+       sysIPV6_IPSEC_POLICY = 0x22
+       sysIPV6_XFRM_POLICY  = 0x23
+
+       sysIPV6_RECVPKTINFO  = 0x31
+       sysIPV6_PKTINFO      = 0x32
+       sysIPV6_RECVHOPLIMIT = 0x33
+       sysIPV6_HOPLIMIT     = 0x34
+       sysIPV6_RECVHOPOPTS  = 0x35
+       sysIPV6_HOPOPTS      = 0x36
+       sysIPV6_RTHDRDSTOPTS = 0x37
+       sysIPV6_RECVRTHDR    = 0x38
+       sysIPV6_RTHDR        = 0x39
+       sysIPV6_RECVDSTOPTS  = 0x3a
+       sysIPV6_DSTOPTS      = 0x3b
+       sysIPV6_RECVPATHMTU  = 0x3c
+       sysIPV6_PATHMTU      = 0x3d
+       sysIPV6_DONTFRAG     = 0x3e
+
+       sysIPV6_RECVTCLASS = 0x42
+       sysIPV6_TCLASS     = 0x43
+
+       sysIPV6_ADDR_PREFERENCES = 0x48
+
+       sysIPV6_PREFER_SRC_TMP            = 0x1
+       sysIPV6_PREFER_SRC_PUBLIC         = 0x2
+       sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100
+       sysIPV6_PREFER_SRC_COA            = 0x4
+       sysIPV6_PREFER_SRC_HOME           = 0x400
+       sysIPV6_PREFER_SRC_CGA            = 0x8
+       sysIPV6_PREFER_SRC_NONCGA         = 0x800
+
+       sysIPV6_MINHOPCOUNT = 0x49
+
+       sysIPV6_ORIGDSTADDR     = 0x4a
+       sysIPV6_RECVORIGDSTADDR = 0x4a
+       sysIPV6_TRANSPARENT     = 0x4b
+       sysIPV6_UNICAST_IF      = 0x4c
+
+       sysICMPV6_FILTER = 0x1
+
+       sysICMPV6_FILTER_BLOCK       = 0x1
+       sysICMPV6_FILTER_PASS        = 0x2
+       sysICMPV6_FILTER_BLOCKOTHERS = 0x3
+       sysICMPV6_FILTER_PASSONLY    = 0x4
+
+       sysSizeofKernelSockaddrStorage = 0x80
+       sysSizeofSockaddrInet6         = 0x1c
+       sysSizeofInet6Pktinfo          = 0x14
+       sysSizeofIPv6Mtuinfo           = 0x20
+       sysSizeofIPv6FlowlabelReq      = 0x20
+
+       sysSizeofIPv6Mreq       = 0x14
+       sysSizeofGroupReq       = 0x88
+       sysSizeofGroupSourceReq = 0x108
+
+       sysSizeofICMPv6Filter = 0x20
+)
+
+type sysKernelSockaddrStorage struct {
+       Family  uint16
+       X__data [126]int8
+}
+
+type sysSockaddrInet6 struct {
+       Family   uint16
+       Port     uint16
+       Flowinfo uint32
+       Addr     [16]byte /* in6_addr */
+       Scope_id uint32
+}
+
+type sysInet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex int32
+}
+
+type sysIPv6Mtuinfo struct {
+       Addr sysSockaddrInet6
+       Mtu  uint32
+}
+
+type sysIPv6FlowlabelReq struct {
+       Dst        [16]byte /* in6_addr */
+       Label      uint32
+       Action     uint8
+       Share      uint8
+       Flags      uint16
+       Expires    uint16
+       Linger     uint16
+       X__flr_pad uint32
+}
+
+type sysIPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Ifindex   int32
+}
+
+type sysGroupReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysKernelSockaddrStorage
+}
+
+type sysGroupSourceReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysKernelSockaddrStorage
+       Source    sysKernelSockaddrStorage
+}
+
+type sysICMPv6Filter struct {
+       Data [8]uint32
+}
diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go
new file mode 100644 (file)
index 0000000..b99b8a5
--- /dev/null
@@ -0,0 +1,156 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+// +build linux,ppc64
+
+package ipv6
+
+const (
+       sysIPV6_ADDRFORM       = 0x1
+       sysIPV6_2292PKTINFO    = 0x2
+       sysIPV6_2292HOPOPTS    = 0x3
+       sysIPV6_2292DSTOPTS    = 0x4
+       sysIPV6_2292RTHDR      = 0x5
+       sysIPV6_2292PKTOPTIONS = 0x6
+       sysIPV6_CHECKSUM       = 0x7
+       sysIPV6_2292HOPLIMIT   = 0x8
+       sysIPV6_NEXTHOP        = 0x9
+       sysIPV6_FLOWINFO       = 0xb
+
+       sysIPV6_UNICAST_HOPS        = 0x10
+       sysIPV6_MULTICAST_IF        = 0x11
+       sysIPV6_MULTICAST_HOPS      = 0x12
+       sysIPV6_MULTICAST_LOOP      = 0x13
+       sysIPV6_ADD_MEMBERSHIP      = 0x14
+       sysIPV6_DROP_MEMBERSHIP     = 0x15
+       sysMCAST_JOIN_GROUP         = 0x2a
+       sysMCAST_LEAVE_GROUP        = 0x2d
+       sysMCAST_JOIN_SOURCE_GROUP  = 0x2e
+       sysMCAST_LEAVE_SOURCE_GROUP = 0x2f
+       sysMCAST_BLOCK_SOURCE       = 0x2b
+       sysMCAST_UNBLOCK_SOURCE     = 0x2c
+       sysMCAST_MSFILTER           = 0x30
+       sysIPV6_ROUTER_ALERT        = 0x16
+       sysIPV6_MTU_DISCOVER        = 0x17
+       sysIPV6_MTU                 = 0x18
+       sysIPV6_RECVERR             = 0x19
+       sysIPV6_V6ONLY              = 0x1a
+       sysIPV6_JOIN_ANYCAST        = 0x1b
+       sysIPV6_LEAVE_ANYCAST       = 0x1c
+
+       sysIPV6_FLOWLABEL_MGR = 0x20
+       sysIPV6_FLOWINFO_SEND = 0x21
+
+       sysIPV6_IPSEC_POLICY = 0x22
+       sysIPV6_XFRM_POLICY  = 0x23
+
+       sysIPV6_RECVPKTINFO  = 0x31
+       sysIPV6_PKTINFO      = 0x32
+       sysIPV6_RECVHOPLIMIT = 0x33
+       sysIPV6_HOPLIMIT     = 0x34
+       sysIPV6_RECVHOPOPTS  = 0x35
+       sysIPV6_HOPOPTS      = 0x36
+       sysIPV6_RTHDRDSTOPTS = 0x37
+       sysIPV6_RECVRTHDR    = 0x38
+       sysIPV6_RTHDR        = 0x39
+       sysIPV6_RECVDSTOPTS  = 0x3a
+       sysIPV6_DSTOPTS      = 0x3b
+       sysIPV6_RECVPATHMTU  = 0x3c
+       sysIPV6_PATHMTU      = 0x3d
+       sysIPV6_DONTFRAG     = 0x3e
+
+       sysIPV6_RECVTCLASS = 0x42
+       sysIPV6_TCLASS     = 0x43
+
+       sysIPV6_ADDR_PREFERENCES = 0x48
+
+       sysIPV6_PREFER_SRC_TMP            = 0x1
+       sysIPV6_PREFER_SRC_PUBLIC         = 0x2
+       sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100
+       sysIPV6_PREFER_SRC_COA            = 0x4
+       sysIPV6_PREFER_SRC_HOME           = 0x400
+       sysIPV6_PREFER_SRC_CGA            = 0x8
+       sysIPV6_PREFER_SRC_NONCGA         = 0x800
+
+       sysIPV6_MINHOPCOUNT = 0x49
+
+       sysIPV6_ORIGDSTADDR     = 0x4a
+       sysIPV6_RECVORIGDSTADDR = 0x4a
+       sysIPV6_TRANSPARENT     = 0x4b
+       sysIPV6_UNICAST_IF      = 0x4c
+
+       sysICMPV6_FILTER = 0x1
+
+       sysICMPV6_FILTER_BLOCK       = 0x1
+       sysICMPV6_FILTER_PASS        = 0x2
+       sysICMPV6_FILTER_BLOCKOTHERS = 0x3
+       sysICMPV6_FILTER_PASSONLY    = 0x4
+
+       sysSizeofKernelSockaddrStorage = 0x80
+       sysSizeofSockaddrInet6         = 0x1c
+       sysSizeofInet6Pktinfo          = 0x14
+       sysSizeofIPv6Mtuinfo           = 0x20
+       sysSizeofIPv6FlowlabelReq      = 0x20
+
+       sysSizeofIPv6Mreq       = 0x14
+       sysSizeofGroupReq       = 0x88
+       sysSizeofGroupSourceReq = 0x108
+
+       sysSizeofICMPv6Filter = 0x20
+)
+
+type sysKernelSockaddrStorage struct {
+       Family  uint16
+       X__data [126]int8
+}
+
+type sysSockaddrInet6 struct {
+       Family   uint16
+       Port     uint16
+       Flowinfo uint32
+       Addr     [16]byte /* in6_addr */
+       Scope_id uint32
+}
+
+type sysInet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex int32
+}
+
+type sysIPv6Mtuinfo struct {
+       Addr sysSockaddrInet6
+       Mtu  uint32
+}
+
+type sysIPv6FlowlabelReq struct {
+       Dst        [16]byte /* in6_addr */
+       Label      uint32
+       Action     uint8
+       Share      uint8
+       Flags      uint16
+       Expires    uint16
+       Linger     uint16
+       X__flr_pad uint32
+}
+
+type sysIPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Ifindex   int32
+}
+
+type sysGroupReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysKernelSockaddrStorage
+}
+
+type sysGroupSourceReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysKernelSockaddrStorage
+       Source    sysKernelSockaddrStorage
+}
+
+type sysICMPv6Filter struct {
+       Data [8]uint32
+}
diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go
new file mode 100644 (file)
index 0000000..992b56e
--- /dev/null
@@ -0,0 +1,156 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_linux.go
+
+// +build linux,ppc64le
+
+package ipv6
+
+const (
+       sysIPV6_ADDRFORM       = 0x1
+       sysIPV6_2292PKTINFO    = 0x2
+       sysIPV6_2292HOPOPTS    = 0x3
+       sysIPV6_2292DSTOPTS    = 0x4
+       sysIPV6_2292RTHDR      = 0x5
+       sysIPV6_2292PKTOPTIONS = 0x6
+       sysIPV6_CHECKSUM       = 0x7
+       sysIPV6_2292HOPLIMIT   = 0x8
+       sysIPV6_NEXTHOP        = 0x9
+       sysIPV6_FLOWINFO       = 0xb
+
+       sysIPV6_UNICAST_HOPS        = 0x10
+       sysIPV6_MULTICAST_IF        = 0x11
+       sysIPV6_MULTICAST_HOPS      = 0x12
+       sysIPV6_MULTICAST_LOOP      = 0x13
+       sysIPV6_ADD_MEMBERSHIP      = 0x14
+       sysIPV6_DROP_MEMBERSHIP     = 0x15
+       sysMCAST_JOIN_GROUP         = 0x2a
+       sysMCAST_LEAVE_GROUP        = 0x2d
+       sysMCAST_JOIN_SOURCE_GROUP  = 0x2e
+       sysMCAST_LEAVE_SOURCE_GROUP = 0x2f
+       sysMCAST_BLOCK_SOURCE       = 0x2b
+       sysMCAST_UNBLOCK_SOURCE     = 0x2c
+       sysMCAST_MSFILTER           = 0x30
+       sysIPV6_ROUTER_ALERT        = 0x16
+       sysIPV6_MTU_DISCOVER        = 0x17
+       sysIPV6_MTU                 = 0x18
+       sysIPV6_RECVERR             = 0x19
+       sysIPV6_V6ONLY              = 0x1a
+       sysIPV6_JOIN_ANYCAST        = 0x1b
+       sysIPV6_LEAVE_ANYCAST       = 0x1c
+
+       sysIPV6_FLOWLABEL_MGR = 0x20
+       sysIPV6_FLOWINFO_SEND = 0x21
+
+       sysIPV6_IPSEC_POLICY = 0x22
+       sysIPV6_XFRM_POLICY  = 0x23
+
+       sysIPV6_RECVPKTINFO  = 0x31
+       sysIPV6_PKTINFO      = 0x32
+       sysIPV6_RECVHOPLIMIT = 0x33
+       sysIPV6_HOPLIMIT     = 0x34
+       sysIPV6_RECVHOPOPTS  = 0x35
+       sysIPV6_HOPOPTS      = 0x36
+       sysIPV6_RTHDRDSTOPTS = 0x37
+       sysIPV6_RECVRTHDR    = 0x38
+       sysIPV6_RTHDR        = 0x39
+       sysIPV6_RECVDSTOPTS  = 0x3a
+       sysIPV6_DSTOPTS      = 0x3b
+       sysIPV6_RECVPATHMTU  = 0x3c
+       sysIPV6_PATHMTU      = 0x3d
+       sysIPV6_DONTFRAG     = 0x3e
+
+       sysIPV6_RECVTCLASS = 0x42
+       sysIPV6_TCLASS     = 0x43
+
+       sysIPV6_ADDR_PREFERENCES = 0x48
+
+       sysIPV6_PREFER_SRC_TMP            = 0x1
+       sysIPV6_PREFER_SRC_PUBLIC         = 0x2
+       sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100
+       sysIPV6_PREFER_SRC_COA            = 0x4
+       sysIPV6_PREFER_SRC_HOME           = 0x400
+       sysIPV6_PREFER_SRC_CGA            = 0x8
+       sysIPV6_PREFER_SRC_NONCGA         = 0x800
+
+       sysIPV6_MINHOPCOUNT = 0x49
+
+       sysIPV6_ORIGDSTADDR     = 0x4a
+       sysIPV6_RECVORIGDSTADDR = 0x4a
+       sysIPV6_TRANSPARENT     = 0x4b
+       sysIPV6_UNICAST_IF      = 0x4c
+
+       sysICMPV6_FILTER = 0x1
+
+       sysICMPV6_FILTER_BLOCK       = 0x1
+       sysICMPV6_FILTER_PASS        = 0x2
+       sysICMPV6_FILTER_BLOCKOTHERS = 0x3
+       sysICMPV6_FILTER_PASSONLY    = 0x4
+
+       sysSizeofKernelSockaddrStorage = 0x80
+       sysSizeofSockaddrInet6         = 0x1c
+       sysSizeofInet6Pktinfo          = 0x14
+       sysSizeofIPv6Mtuinfo           = 0x20
+       sysSizeofIPv6FlowlabelReq      = 0x20
+
+       sysSizeofIPv6Mreq       = 0x14
+       sysSizeofGroupReq       = 0x88
+       sysSizeofGroupSourceReq = 0x108
+
+       sysSizeofICMPv6Filter = 0x20
+)
+
+type sysKernelSockaddrStorage struct {
+       Family  uint16
+       X__data [126]int8
+}
+
+type sysSockaddrInet6 struct {
+       Family   uint16
+       Port     uint16
+       Flowinfo uint32
+       Addr     [16]byte /* in6_addr */
+       Scope_id uint32
+}
+
+type sysInet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex int32
+}
+
+type sysIPv6Mtuinfo struct {
+       Addr sysSockaddrInet6
+       Mtu  uint32
+}
+
+type sysIPv6FlowlabelReq struct {
+       Dst        [16]byte /* in6_addr */
+       Label      uint32
+       Action     uint8
+       Share      uint8
+       Flags      uint16
+       Expires    uint16
+       Linger     uint16
+       X__flr_pad uint32
+}
+
+type sysIPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Ifindex   int32
+}
+
+type sysGroupReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysKernelSockaddrStorage
+}
+
+type sysGroupSourceReq struct {
+       Interface uint32
+       Pad_cgo_0 [4]byte
+       Group     sysKernelSockaddrStorage
+       Source    sysKernelSockaddrStorage
+}
+
+type sysICMPv6Filter struct {
+       Data [8]uint32
+}
diff --git a/vendor/golang.org/x/net/ipv6/zsys_netbsd.go b/vendor/golang.org/x/net/ipv6/zsys_netbsd.go
new file mode 100644 (file)
index 0000000..d6ec88e
--- /dev/null
@@ -0,0 +1,84 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_netbsd.go
+
+package ipv6
+
+const (
+       sysIPV6_UNICAST_HOPS   = 0x4
+       sysIPV6_MULTICAST_IF   = 0x9
+       sysIPV6_MULTICAST_HOPS = 0xa
+       sysIPV6_MULTICAST_LOOP = 0xb
+       sysIPV6_JOIN_GROUP     = 0xc
+       sysIPV6_LEAVE_GROUP    = 0xd
+       sysIPV6_PORTRANGE      = 0xe
+       sysICMP6_FILTER        = 0x12
+
+       sysIPV6_CHECKSUM = 0x1a
+       sysIPV6_V6ONLY   = 0x1b
+
+       sysIPV6_IPSEC_POLICY = 0x1c
+
+       sysIPV6_RTHDRDSTOPTS = 0x23
+
+       sysIPV6_RECVPKTINFO  = 0x24
+       sysIPV6_RECVHOPLIMIT = 0x25
+       sysIPV6_RECVRTHDR    = 0x26
+       sysIPV6_RECVHOPOPTS  = 0x27
+       sysIPV6_RECVDSTOPTS  = 0x28
+
+       sysIPV6_USE_MIN_MTU = 0x2a
+       sysIPV6_RECVPATHMTU = 0x2b
+       sysIPV6_PATHMTU     = 0x2c
+
+       sysIPV6_PKTINFO  = 0x2e
+       sysIPV6_HOPLIMIT = 0x2f
+       sysIPV6_NEXTHOP  = 0x30
+       sysIPV6_HOPOPTS  = 0x31
+       sysIPV6_DSTOPTS  = 0x32
+       sysIPV6_RTHDR    = 0x33
+
+       sysIPV6_RECVTCLASS = 0x39
+
+       sysIPV6_TCLASS   = 0x3d
+       sysIPV6_DONTFRAG = 0x3e
+
+       sysIPV6_PORTRANGE_DEFAULT = 0x0
+       sysIPV6_PORTRANGE_HIGH    = 0x1
+       sysIPV6_PORTRANGE_LOW     = 0x2
+
+       sysSizeofSockaddrInet6 = 0x1c
+       sysSizeofInet6Pktinfo  = 0x14
+       sysSizeofIPv6Mtuinfo   = 0x20
+
+       sysSizeofIPv6Mreq = 0x14
+
+       sysSizeofICMPv6Filter = 0x20
+)
+
+type sysSockaddrInet6 struct {
+       Len      uint8
+       Family   uint8
+       Port     uint16
+       Flowinfo uint32
+       Addr     [16]byte /* in6_addr */
+       Scope_id uint32
+}
+
+type sysInet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex uint32
+}
+
+type sysIPv6Mtuinfo struct {
+       Addr sysSockaddrInet6
+       Mtu  uint32
+}
+
+type sysIPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Interface uint32
+}
+
+type sysICMPv6Filter struct {
+       Filt [8]uint32
+}
diff --git a/vendor/golang.org/x/net/ipv6/zsys_openbsd.go b/vendor/golang.org/x/net/ipv6/zsys_openbsd.go
new file mode 100644 (file)
index 0000000..3e080b7
--- /dev/null
@@ -0,0 +1,93 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_openbsd.go
+
+package ipv6
+
+const (
+       sysIPV6_UNICAST_HOPS   = 0x4
+       sysIPV6_MULTICAST_IF   = 0x9
+       sysIPV6_MULTICAST_HOPS = 0xa
+       sysIPV6_MULTICAST_LOOP = 0xb
+       sysIPV6_JOIN_GROUP     = 0xc
+       sysIPV6_LEAVE_GROUP    = 0xd
+       sysIPV6_PORTRANGE      = 0xe
+       sysICMP6_FILTER        = 0x12
+
+       sysIPV6_CHECKSUM = 0x1a
+       sysIPV6_V6ONLY   = 0x1b
+
+       sysIPV6_RTHDRDSTOPTS = 0x23
+
+       sysIPV6_RECVPKTINFO  = 0x24
+       sysIPV6_RECVHOPLIMIT = 0x25
+       sysIPV6_RECVRTHDR    = 0x26
+       sysIPV6_RECVHOPOPTS  = 0x27
+       sysIPV6_RECVDSTOPTS  = 0x28
+
+       sysIPV6_USE_MIN_MTU = 0x2a
+       sysIPV6_RECVPATHMTU = 0x2b
+
+       sysIPV6_PATHMTU = 0x2c
+
+       sysIPV6_PKTINFO  = 0x2e
+       sysIPV6_HOPLIMIT = 0x2f
+       sysIPV6_NEXTHOP  = 0x30
+       sysIPV6_HOPOPTS  = 0x31
+       sysIPV6_DSTOPTS  = 0x32
+       sysIPV6_RTHDR    = 0x33
+
+       sysIPV6_AUTH_LEVEL        = 0x35
+       sysIPV6_ESP_TRANS_LEVEL   = 0x36
+       sysIPV6_ESP_NETWORK_LEVEL = 0x37
+       sysIPSEC6_OUTSA           = 0x38
+       sysIPV6_RECVTCLASS        = 0x39
+
+       sysIPV6_AUTOFLOWLABEL = 0x3b
+       sysIPV6_IPCOMP_LEVEL  = 0x3c
+
+       sysIPV6_TCLASS   = 0x3d
+       sysIPV6_DONTFRAG = 0x3e
+       sysIPV6_PIPEX    = 0x3f
+
+       sysIPV6_RTABLE = 0x1021
+
+       sysIPV6_PORTRANGE_DEFAULT = 0x0
+       sysIPV6_PORTRANGE_HIGH    = 0x1
+       sysIPV6_PORTRANGE_LOW     = 0x2
+
+       sysSizeofSockaddrInet6 = 0x1c
+       sysSizeofInet6Pktinfo  = 0x14
+       sysSizeofIPv6Mtuinfo   = 0x20
+
+       sysSizeofIPv6Mreq = 0x14
+
+       sysSizeofICMPv6Filter = 0x20
+)
+
+type sysSockaddrInet6 struct {
+       Len      uint8
+       Family   uint8
+       Port     uint16
+       Flowinfo uint32
+       Addr     [16]byte /* in6_addr */
+       Scope_id uint32
+}
+
+type sysInet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex uint32
+}
+
+type sysIPv6Mtuinfo struct {
+       Addr sysSockaddrInet6
+       Mtu  uint32
+}
+
+type sysIPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Interface uint32
+}
+
+type sysICMPv6Filter struct {
+       Filt [8]uint32
+}
diff --git a/vendor/golang.org/x/net/ipv6/zsys_solaris.go b/vendor/golang.org/x/net/ipv6/zsys_solaris.go
new file mode 100644 (file)
index 0000000..cdf00c2
--- /dev/null
@@ -0,0 +1,105 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs defs_solaris.go
+
+// +build solaris
+
+package ipv6
+
+const (
+       sysIPV6_UNICAST_HOPS   = 0x5
+       sysIPV6_MULTICAST_IF   = 0x6
+       sysIPV6_MULTICAST_HOPS = 0x7
+       sysIPV6_MULTICAST_LOOP = 0x8
+       sysIPV6_JOIN_GROUP     = 0x9
+       sysIPV6_LEAVE_GROUP    = 0xa
+
+       sysIPV6_PKTINFO = 0xb
+
+       sysIPV6_HOPLIMIT = 0xc
+       sysIPV6_NEXTHOP  = 0xd
+       sysIPV6_HOPOPTS  = 0xe
+       sysIPV6_DSTOPTS  = 0xf
+
+       sysIPV6_RTHDR        = 0x10
+       sysIPV6_RTHDRDSTOPTS = 0x11
+
+       sysIPV6_RECVPKTINFO  = 0x12
+       sysIPV6_RECVHOPLIMIT = 0x13
+       sysIPV6_RECVHOPOPTS  = 0x14
+
+       sysIPV6_RECVRTHDR = 0x16
+
+       sysIPV6_RECVRTHDRDSTOPTS = 0x17
+
+       sysIPV6_CHECKSUM        = 0x18
+       sysIPV6_RECVTCLASS      = 0x19
+       sysIPV6_USE_MIN_MTU     = 0x20
+       sysIPV6_DONTFRAG        = 0x21
+       sysIPV6_SEC_OPT         = 0x22
+       sysIPV6_SRC_PREFERENCES = 0x23
+       sysIPV6_RECVPATHMTU     = 0x24
+       sysIPV6_PATHMTU         = 0x25
+       sysIPV6_TCLASS          = 0x26
+       sysIPV6_V6ONLY          = 0x27
+
+       sysIPV6_RECVDSTOPTS = 0x28
+
+       sysIPV6_PREFER_SRC_HOME   = 0x1
+       sysIPV6_PREFER_SRC_COA    = 0x2
+       sysIPV6_PREFER_SRC_PUBLIC = 0x4
+       sysIPV6_PREFER_SRC_TMP    = 0x8
+       sysIPV6_PREFER_SRC_NONCGA = 0x10
+       sysIPV6_PREFER_SRC_CGA    = 0x20
+
+       sysIPV6_PREFER_SRC_MIPMASK    = 0x3
+       sysIPV6_PREFER_SRC_MIPDEFAULT = 0x1
+       sysIPV6_PREFER_SRC_TMPMASK    = 0xc
+       sysIPV6_PREFER_SRC_TMPDEFAULT = 0x4
+       sysIPV6_PREFER_SRC_CGAMASK    = 0x30
+       sysIPV6_PREFER_SRC_CGADEFAULT = 0x10
+
+       sysIPV6_PREFER_SRC_MASK = 0x3f
+
+       sysIPV6_PREFER_SRC_DEFAULT = 0x15
+
+       sysIPV6_BOUND_IF   = 0x41
+       sysIPV6_UNSPEC_SRC = 0x42
+
+       sysICMP6_FILTER = 0x1
+
+       sysSizeofSockaddrInet6 = 0x20
+       sysSizeofInet6Pktinfo  = 0x14
+       sysSizeofIPv6Mtuinfo   = 0x24
+
+       sysSizeofIPv6Mreq = 0x14
+
+       sysSizeofICMPv6Filter = 0x20
+)
+
+type sysSockaddrInet6 struct {
+       Family         uint16
+       Port           uint16
+       Flowinfo       uint32
+       Addr           [16]byte /* in6_addr */
+       Scope_id       uint32
+       X__sin6_src_id uint32
+}
+
+type sysInet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex uint32
+}
+
+type sysIPv6Mtuinfo struct {
+       Addr sysSockaddrInet6
+       Mtu  uint32
+}
+
+type sysIPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Interface uint32
+}
+
+type sysICMPv6Filter struct {
+       X__icmp6_filt [8]uint32
+}
diff --git a/vendor/golang.org/x/sys/LICENSE b/vendor/golang.org/x/sys/LICENSE
new file mode 100644 (file)
index 0000000..6a66aea
--- /dev/null
@@ -0,0 +1,27 @@
+Copyright (c) 2009 The Go Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+   * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+   * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/golang.org/x/sys/PATENTS b/vendor/golang.org/x/sys/PATENTS
new file mode 100644 (file)
index 0000000..7330990
--- /dev/null
@@ -0,0 +1,22 @@
+Additional IP Rights Grant (Patents)
+
+"This implementation" means the copyrightable works distributed by
+Google as part of the Go project.
+
+Google hereby grants to You a perpetual, worldwide, non-exclusive,
+no-charge, royalty-free, irrevocable (except as stated in this section)
+patent license to make, have made, use, offer to sell, sell, import,
+transfer and otherwise run, modify and propagate the contents of this
+implementation of Go, where such license applies only to those patent
+claims, both currently owned or controlled by Google and acquired in
+the future, licensable by Google that are necessarily infringed by this
+implementation of Go.  This grant does not include claims that would be
+infringed only as a consequence of further modification of this
+implementation.  If you or your agent or exclusive licensee institute or
+order or agree to the institution of patent litigation against any
+entity (including a cross-claim or counterclaim in a lawsuit) alleging
+that this implementation of Go or any code incorporated within this
+implementation of Go constitutes direct or contributory patent
+infringement, or inducement of patent infringement, then any patent
+rights granted to you under this License for this implementation of Go
+shall terminate as of the date such litigation is filed.
diff --git a/vendor/golang.org/x/sys/unix/asm.s b/vendor/golang.org/x/sys/unix/asm.s
new file mode 100644 (file)
index 0000000..8ed2fdb
--- /dev/null
@@ -0,0 +1,10 @@
+// Copyright 2014 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.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+TEXT ·use(SB),NOSPLIT,$0
+       RET
diff --git a/vendor/golang.org/x/sys/unix/asm_darwin_386.s b/vendor/golang.org/x/sys/unix/asm_darwin_386.s
new file mode 100644 (file)
index 0000000..8a72783
--- /dev/null
@@ -0,0 +1,29 @@
+// 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.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System call support for 386, Darwin
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT   ·Syscall(SB),NOSPLIT,$0-28
+       JMP     syscall·Syscall(SB)
+
+TEXT   ·Syscall6(SB),NOSPLIT,$0-40
+       JMP     syscall·Syscall6(SB)
+
+TEXT   ·Syscall9(SB),NOSPLIT,$0-52
+       JMP     syscall·Syscall9(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-28
+       JMP     syscall·RawSyscall(SB)
+
+TEXT   ·RawSyscall6(SB),NOSPLIT,$0-40
+       JMP     syscall·RawSyscall6(SB)
diff --git a/vendor/golang.org/x/sys/unix/asm_darwin_amd64.s b/vendor/golang.org/x/sys/unix/asm_darwin_amd64.s
new file mode 100644 (file)
index 0000000..6321421
--- /dev/null
@@ -0,0 +1,29 @@
+// 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.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System call support for AMD64, Darwin
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT   ·Syscall(SB),NOSPLIT,$0-56
+       JMP     syscall·Syscall(SB)
+
+TEXT   ·Syscall6(SB),NOSPLIT,$0-80
+       JMP     syscall·Syscall6(SB)
+
+TEXT   ·Syscall9(SB),NOSPLIT,$0-104
+       JMP     syscall·Syscall9(SB)
+
+TEXT   ·RawSyscall(SB),NOSPLIT,$0-56
+       JMP     syscall·RawSyscall(SB)
+
+TEXT   ·RawSyscall6(SB),NOSPLIT,$0-80
+       JMP     syscall·RawSyscall6(SB)
diff --git a/vendor/golang.org/x/sys/unix/asm_darwin_arm.s b/vendor/golang.org/x/sys/unix/asm_darwin_arm.s
new file mode 100644 (file)
index 0000000..333242d
--- /dev/null
@@ -0,0 +1,30 @@
+// Copyright 2015 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.
+
+// +build !gccgo
+// +build arm,darwin
+
+#include "textflag.h"
+
+//
+// System call support for ARM, Darwin
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT   ·Syscall(SB),NOSPLIT,$0-28
+       B       syscall·Syscall(SB)
+
+TEXT   ·Syscall6(SB),NOSPLIT,$0-40
+       B       syscall·Syscall6(SB)
+
+TEXT   ·Syscall9(SB),NOSPLIT,$0-52
+       B       syscall·Syscall9(SB)
+
+TEXT   ·RawSyscall(SB),NOSPLIT,$0-28
+       B       syscall·RawSyscall(SB)
+
+TEXT   ·RawSyscall6(SB),NOSPLIT,$0-40
+       B       syscall·RawSyscall6(SB)
diff --git a/vendor/golang.org/x/sys/unix/asm_darwin_arm64.s b/vendor/golang.org/x/sys/unix/asm_darwin_arm64.s
new file mode 100644 (file)
index 0000000..97e0174
--- /dev/null
@@ -0,0 +1,30 @@
+// Copyright 2015 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.
+
+// +build !gccgo
+// +build arm64,darwin
+
+#include "textflag.h"
+
+//
+// System call support for AMD64, Darwin
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT   ·Syscall(SB),NOSPLIT,$0-56
+       B       syscall·Syscall(SB)
+
+TEXT   ·Syscall6(SB),NOSPLIT,$0-80
+       B       syscall·Syscall6(SB)
+
+TEXT   ·Syscall9(SB),NOSPLIT,$0-104
+       B       syscall·Syscall9(SB)
+
+TEXT   ·RawSyscall(SB),NOSPLIT,$0-56
+       B       syscall·RawSyscall(SB)
+
+TEXT   ·RawSyscall6(SB),NOSPLIT,$0-80
+       B       syscall·RawSyscall6(SB)
diff --git a/vendor/golang.org/x/sys/unix/asm_dragonfly_386.s b/vendor/golang.org/x/sys/unix/asm_dragonfly_386.s
new file mode 100644 (file)
index 0000000..7e55e0d
--- /dev/null
@@ -0,0 +1,29 @@
+// 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.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System call support for 386, FreeBSD
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT   ·Syscall(SB),NOSPLIT,$0-32
+       JMP     syscall·Syscall(SB)
+
+TEXT   ·Syscall6(SB),NOSPLIT,$0-44
+       JMP     syscall·Syscall6(SB)
+
+TEXT   ·Syscall9(SB),NOSPLIT,$0-56
+       JMP     syscall·Syscall9(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-32
+       JMP     syscall·RawSyscall(SB)
+
+TEXT   ·RawSyscall6(SB),NOSPLIT,$0-44
+       JMP     syscall·RawSyscall6(SB)
diff --git a/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s b/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s
new file mode 100644 (file)
index 0000000..d5ed672
--- /dev/null
@@ -0,0 +1,29 @@
+// 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.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System call support for AMD64, DragonFly
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT   ·Syscall(SB),NOSPLIT,$0-64
+       JMP     syscall·Syscall(SB)
+
+TEXT   ·Syscall6(SB),NOSPLIT,$0-88
+       JMP     syscall·Syscall6(SB)
+
+TEXT   ·Syscall9(SB),NOSPLIT,$0-112
+       JMP     syscall·Syscall9(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-64
+       JMP     syscall·RawSyscall(SB)
+
+TEXT   ·RawSyscall6(SB),NOSPLIT,$0-88
+       JMP     syscall·RawSyscall6(SB)
diff --git a/vendor/golang.org/x/sys/unix/asm_freebsd_386.s b/vendor/golang.org/x/sys/unix/asm_freebsd_386.s
new file mode 100644 (file)
index 0000000..c9a0a26
--- /dev/null
@@ -0,0 +1,29 @@
+// 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.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System call support for 386, FreeBSD
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT   ·Syscall(SB),NOSPLIT,$0-28
+       JMP     syscall·Syscall(SB)
+
+TEXT   ·Syscall6(SB),NOSPLIT,$0-40
+       JMP     syscall·Syscall6(SB)
+
+TEXT   ·Syscall9(SB),NOSPLIT,$0-52
+       JMP     syscall·Syscall9(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-28
+       JMP     syscall·RawSyscall(SB)
+
+TEXT   ·RawSyscall6(SB),NOSPLIT,$0-40
+       JMP     syscall·RawSyscall6(SB)
diff --git a/vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s b/vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s
new file mode 100644 (file)
index 0000000..3517247
--- /dev/null
@@ -0,0 +1,29 @@
+// 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.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System call support for AMD64, FreeBSD
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT   ·Syscall(SB),NOSPLIT,$0-56
+       JMP     syscall·Syscall(SB)
+
+TEXT   ·Syscall6(SB),NOSPLIT,$0-80
+       JMP     syscall·Syscall6(SB)
+
+TEXT   ·Syscall9(SB),NOSPLIT,$0-104
+       JMP     syscall·Syscall9(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-56
+       JMP     syscall·RawSyscall(SB)
+
+TEXT   ·RawSyscall6(SB),NOSPLIT,$0-80
+       JMP     syscall·RawSyscall6(SB)
diff --git a/vendor/golang.org/x/sys/unix/asm_freebsd_arm.s b/vendor/golang.org/x/sys/unix/asm_freebsd_arm.s
new file mode 100644 (file)
index 0000000..9227c87
--- /dev/null
@@ -0,0 +1,29 @@
+// Copyright 2012 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.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System call support for ARM, FreeBSD
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT   ·Syscall(SB),NOSPLIT,$0-28
+       B       syscall·Syscall(SB)
+
+TEXT   ·Syscall6(SB),NOSPLIT,$0-40
+       B       syscall·Syscall6(SB)
+
+TEXT   ·Syscall9(SB),NOSPLIT,$0-52
+       B       syscall·Syscall9(SB)
+
+TEXT   ·RawSyscall(SB),NOSPLIT,$0-28
+       B       syscall·RawSyscall(SB)
+
+TEXT   ·RawSyscall6(SB),NOSPLIT,$0-40
+       B       syscall·RawSyscall6(SB)
diff --git a/vendor/golang.org/x/sys/unix/asm_linux_386.s b/vendor/golang.org/x/sys/unix/asm_linux_386.s
new file mode 100644 (file)
index 0000000..4db2909
--- /dev/null
@@ -0,0 +1,35 @@
+// 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.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System calls for 386, Linux
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT   ·Syscall(SB),NOSPLIT,$0-28
+       JMP     syscall·Syscall(SB)
+
+TEXT   ·Syscall6(SB),NOSPLIT,$0-40
+       JMP     syscall·Syscall6(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-28
+       JMP     syscall·RawSyscall(SB)
+
+TEXT   ·RawSyscall6(SB),NOSPLIT,$0-40
+       JMP     syscall·RawSyscall6(SB)
+
+TEXT ·socketcall(SB),NOSPLIT,$0-36
+       JMP     syscall·socketcall(SB)
+
+TEXT ·rawsocketcall(SB),NOSPLIT,$0-36
+       JMP     syscall·rawsocketcall(SB)
+
+TEXT ·seek(SB),NOSPLIT,$0-28
+       JMP     syscall·seek(SB)
diff --git a/vendor/golang.org/x/sys/unix/asm_linux_amd64.s b/vendor/golang.org/x/sys/unix/asm_linux_amd64.s
new file mode 100644 (file)
index 0000000..44e25c6
--- /dev/null
@@ -0,0 +1,29 @@
+// 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.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System calls for AMD64, Linux
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT   ·Syscall(SB),NOSPLIT,$0-56
+       JMP     syscall·Syscall(SB)
+
+TEXT ·Syscall6(SB),NOSPLIT,$0-80
+       JMP     syscall·Syscall6(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-56
+       JMP     syscall·RawSyscall(SB)
+
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
+       JMP     syscall·RawSyscall6(SB)
+
+TEXT ·gettimeofday(SB),NOSPLIT,$0-16
+       JMP     syscall·gettimeofday(SB)
diff --git a/vendor/golang.org/x/sys/unix/asm_linux_arm.s b/vendor/golang.org/x/sys/unix/asm_linux_arm.s
new file mode 100644 (file)
index 0000000..cf0b574
--- /dev/null
@@ -0,0 +1,29 @@
+// 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.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System calls for arm, Linux
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT   ·Syscall(SB),NOSPLIT,$0-28
+       B       syscall·Syscall(SB)
+
+TEXT   ·Syscall6(SB),NOSPLIT,$0-40
+       B       syscall·Syscall6(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-28
+       B       syscall·RawSyscall(SB)
+
+TEXT   ·RawSyscall6(SB),NOSPLIT,$0-40
+       B       syscall·RawSyscall6(SB)
+
+TEXT ·seek(SB),NOSPLIT,$0-32
+       B       syscall·seek(SB)
diff --git a/vendor/golang.org/x/sys/unix/asm_linux_arm64.s b/vendor/golang.org/x/sys/unix/asm_linux_arm64.s
new file mode 100644 (file)
index 0000000..4be9bfe
--- /dev/null
@@ -0,0 +1,24 @@
+// Copyright 2015 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.
+
+// +build linux
+// +build arm64
+// +build !gccgo
+
+#include "textflag.h"
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT   ·Syscall(SB),NOSPLIT,$0-56
+       B       syscall·Syscall(SB)
+
+TEXT ·Syscall6(SB),NOSPLIT,$0-80
+       B       syscall·Syscall6(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-56
+       B       syscall·RawSyscall(SB)
+
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
+       B       syscall·RawSyscall6(SB)
diff --git a/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s b/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
new file mode 100644 (file)
index 0000000..724e580
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright 2015 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.
+
+// +build linux
+// +build mips64 mips64le
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System calls for mips64, Linux
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT   ·Syscall(SB),NOSPLIT,$0-56
+       JMP     syscall·Syscall(SB)
+
+TEXT   ·Syscall6(SB),NOSPLIT,$0-80
+       JMP     syscall·Syscall6(SB)
+
+TEXT   ·RawSyscall(SB),NOSPLIT,$0-56
+       JMP     syscall·RawSyscall(SB)
+
+TEXT   ·RawSyscall6(SB),NOSPLIT,$0-80
+       JMP     syscall·RawSyscall6(SB)
diff --git a/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s b/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s
new file mode 100644 (file)
index 0000000..8d231fe
--- /dev/null
@@ -0,0 +1,28 @@
+// Copyright 2014 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.
+
+// +build linux
+// +build ppc64 ppc64le
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System calls for ppc64, Linux
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT   ·Syscall(SB),NOSPLIT,$0-56
+       BR      syscall·Syscall(SB)
+
+TEXT ·Syscall6(SB),NOSPLIT,$0-80
+       BR      syscall·Syscall6(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-56
+       BR      syscall·RawSyscall(SB)
+
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
+       BR      syscall·RawSyscall6(SB)
diff --git a/vendor/golang.org/x/sys/unix/asm_netbsd_386.s b/vendor/golang.org/x/sys/unix/asm_netbsd_386.s
new file mode 100644 (file)
index 0000000..48bdcd7
--- /dev/null
@@ -0,0 +1,29 @@
+// 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.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System call support for 386, NetBSD
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT   ·Syscall(SB),NOSPLIT,$0-28
+       JMP     syscall·Syscall(SB)
+
+TEXT   ·Syscall6(SB),NOSPLIT,$0-40
+       JMP     syscall·Syscall6(SB)
+
+TEXT   ·Syscall9(SB),NOSPLIT,$0-52
+       JMP     syscall·Syscall9(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-28
+       JMP     syscall·RawSyscall(SB)
+
+TEXT   ·RawSyscall6(SB),NOSPLIT,$0-40
+       JMP     syscall·RawSyscall6(SB)
diff --git a/vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s b/vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s
new file mode 100644 (file)
index 0000000..2ede05c
--- /dev/null
@@ -0,0 +1,29 @@
+// 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.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System call support for AMD64, NetBSD
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT   ·Syscall(SB),NOSPLIT,$0-56
+       JMP     syscall·Syscall(SB)
+
+TEXT   ·Syscall6(SB),NOSPLIT,$0-80
+       JMP     syscall·Syscall6(SB)
+
+TEXT   ·Syscall9(SB),NOSPLIT,$0-104
+       JMP     syscall·Syscall9(SB)
+
+TEXT   ·RawSyscall(SB),NOSPLIT,$0-56
+       JMP     syscall·RawSyscall(SB)
+
+TEXT   ·RawSyscall6(SB),NOSPLIT,$0-80
+       JMP     syscall·RawSyscall6(SB)
diff --git a/vendor/golang.org/x/sys/unix/asm_netbsd_arm.s b/vendor/golang.org/x/sys/unix/asm_netbsd_arm.s
new file mode 100644 (file)
index 0000000..e892857
--- /dev/null
@@ -0,0 +1,29 @@
+// Copyright 2013 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.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System call support for ARM, NetBSD
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT   ·Syscall(SB),NOSPLIT,$0-28
+       B       syscall·Syscall(SB)
+
+TEXT   ·Syscall6(SB),NOSPLIT,$0-40
+       B       syscall·Syscall6(SB)
+
+TEXT   ·Syscall9(SB),NOSPLIT,$0-52
+       B       syscall·Syscall9(SB)
+
+TEXT   ·RawSyscall(SB),NOSPLIT,$0-28
+       B       syscall·RawSyscall(SB)
+
+TEXT   ·RawSyscall6(SB),NOSPLIT,$0-40
+       B       syscall·RawSyscall6(SB)
diff --git a/vendor/golang.org/x/sys/unix/asm_openbsd_386.s b/vendor/golang.org/x/sys/unix/asm_openbsd_386.s
new file mode 100644 (file)
index 0000000..00576f3
--- /dev/null
@@ -0,0 +1,29 @@
+// 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.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System call support for 386, OpenBSD
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT   ·Syscall(SB),NOSPLIT,$0-28
+       JMP     syscall·Syscall(SB)
+
+TEXT   ·Syscall6(SB),NOSPLIT,$0-40
+       JMP     syscall·Syscall6(SB)
+
+TEXT   ·Syscall9(SB),NOSPLIT,$0-52
+       JMP     syscall·Syscall9(SB)
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-28
+       JMP     syscall·RawSyscall(SB)
+
+TEXT   ·RawSyscall6(SB),NOSPLIT,$0-40
+       JMP     syscall·RawSyscall6(SB)
diff --git a/vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s b/vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s
new file mode 100644 (file)
index 0000000..790ef77
--- /dev/null
@@ -0,0 +1,29 @@
+// 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.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System call support for AMD64, OpenBSD
+//
+
+// Just jump to package syscall's implementation for all these functions.
+// The runtime may know about them.
+
+TEXT   ·Syscall(SB),NOSPLIT,$0-56
+       JMP     syscall·Syscall(SB)
+
+TEXT   ·Syscall6(SB),NOSPLIT,$0-80
+       JMP     syscall·Syscall6(SB)
+
+TEXT   ·Syscall9(SB),NOSPLIT,$0-104
+       JMP     syscall·Syscall9(SB)
+
+TEXT   ·RawSyscall(SB),NOSPLIT,$0-56
+       JMP     syscall·RawSyscall(SB)
+
+TEXT   ·RawSyscall6(SB),NOSPLIT,$0-80
+       JMP     syscall·RawSyscall6(SB)
diff --git a/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s b/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s
new file mode 100644 (file)
index 0000000..43ed17a
--- /dev/null
@@ -0,0 +1,17 @@
+// Copyright 2014 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.
+
+// +build !gccgo
+
+#include "textflag.h"
+
+//
+// System calls for amd64, Solaris are implemented in runtime/syscall_solaris.go
+//
+
+TEXT ·sysvicall6(SB),NOSPLIT,$0-64
+       JMP     syscall·sysvicall6(SB)
+
+TEXT ·rawSysvicall6(SB),NOSPLIT,$0-64
+       JMP     syscall·rawSysvicall6(SB)
diff --git a/vendor/golang.org/x/sys/unix/constants.go b/vendor/golang.org/x/sys/unix/constants.go
new file mode 100644 (file)
index 0000000..a96f0eb
--- /dev/null
@@ -0,0 +1,13 @@
+// Copyright 2015 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.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd solaris
+
+package unix
+
+const (
+       R_OK = 0x4
+       W_OK = 0x2
+       X_OK = 0x1
+)
diff --git a/vendor/golang.org/x/sys/unix/env_unix.go b/vendor/golang.org/x/sys/unix/env_unix.go
new file mode 100644 (file)
index 0000000..45e281a
--- /dev/null
@@ -0,0 +1,27 @@
+// Copyright 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.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd solaris
+
+// Unix environment variables.
+
+package unix
+
+import "syscall"
+
+func Getenv(key string) (value string, found bool) {
+       return syscall.Getenv(key)
+}
+
+func Setenv(key, value string) error {
+       return syscall.Setenv(key, value)
+}
+
+func Clearenv() {
+       syscall.Clearenv()
+}
+
+func Environ() []string {
+       return syscall.Environ()
+}
diff --git a/vendor/golang.org/x/sys/unix/env_unset.go b/vendor/golang.org/x/sys/unix/env_unset.go
new file mode 100644 (file)
index 0000000..9222262
--- /dev/null
@@ -0,0 +1,14 @@
+// Copyright 2014 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.
+
+// +build go1.4
+
+package unix
+
+import "syscall"
+
+func Unsetenv(key string) error {
+       // This was added in Go 1.4.
+       return syscall.Unsetenv(key)
+}
diff --git a/vendor/golang.org/x/sys/unix/flock.go b/vendor/golang.org/x/sys/unix/flock.go
new file mode 100644 (file)
index 0000000..ce67a59
--- /dev/null
@@ -0,0 +1,24 @@
+// +build linux darwin freebsd openbsd netbsd dragonfly
+
+// Copyright 2014 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.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd
+
+package unix
+
+import "unsafe"
+
+// fcntl64Syscall is usually SYS_FCNTL, but is overridden on 32-bit Linux
+// systems by flock_linux_32bit.go to be SYS_FCNTL64.
+var fcntl64Syscall uintptr = SYS_FCNTL
+
+// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.
+func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {
+       _, _, errno := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(unsafe.Pointer(lk)))
+       if errno == 0 {
+               return nil
+       }
+       return errno
+}
diff --git a/vendor/golang.org/x/sys/unix/flock_linux_32bit.go b/vendor/golang.org/x/sys/unix/flock_linux_32bit.go
new file mode 100644 (file)
index 0000000..362831c
--- /dev/null
@@ -0,0 +1,13 @@
+// +build linux,386 linux,arm
+
+// Copyright 2014 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 unix
+
+func init() {
+       // On 32-bit Linux systems, the fcntl syscall that matches Go's
+       // Flock_t type is SYS_FCNTL64, not SYS_FCNTL.
+       fcntl64Syscall = SYS_FCNTL64
+}
diff --git a/vendor/golang.org/x/sys/unix/gccgo.go b/vendor/golang.org/x/sys/unix/gccgo.go
new file mode 100644 (file)
index 0000000..94c8232
--- /dev/null
@@ -0,0 +1,46 @@
+// Copyright 2015 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.
+
+// +build gccgo
+
+package unix
+
+import "syscall"
+
+// We can't use the gc-syntax .s files for gccgo.  On the plus side
+// much of the functionality can be written directly in Go.
+
+//extern gccgoRealSyscall
+func realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r, errno uintptr)
+
+func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
+       syscall.Entersyscall()
+       r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
+       syscall.Exitsyscall()
+       return r, 0, syscall.Errno(errno)
+}
+
+func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {
+       syscall.Entersyscall()
+       r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)
+       syscall.Exitsyscall()
+       return r, 0, syscall.Errno(errno)
+}
+
+func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) {
+       syscall.Entersyscall()
+       r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9)
+       syscall.Exitsyscall()
+       return r, 0, syscall.Errno(errno)
+}
+
+func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
+       r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
+       return r, 0, syscall.Errno(errno)
+}
+
+func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {
+       r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)
+       return r, 0, syscall.Errno(errno)
+}
diff --git a/vendor/golang.org/x/sys/unix/gccgo_c.c b/vendor/golang.org/x/sys/unix/gccgo_c.c
new file mode 100644 (file)
index 0000000..07f6be0
--- /dev/null
@@ -0,0 +1,41 @@
+// Copyright 2015 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.
+
+// +build gccgo
+
+#include <errno.h>
+#include <stdint.h>
+#include <unistd.h>
+
+#define _STRINGIFY2_(x) #x
+#define _STRINGIFY_(x) _STRINGIFY2_(x)
+#define GOSYM_PREFIX _STRINGIFY_(__USER_LABEL_PREFIX__)
+
+// Call syscall from C code because the gccgo support for calling from
+// Go to C does not support varargs functions.
+
+struct ret {
+       uintptr_t r;
+       uintptr_t err;
+};
+
+struct ret
+gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)
+{
+       struct ret r;
+
+       errno = 0;
+       r.r = syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9);
+       r.err = errno;
+       return r;
+}
+
+// Define the use function in C so that it is not inlined.
+
+extern void use(void *) __asm__ (GOSYM_PREFIX GOPKGPATH ".use") __attribute__((noinline));
+
+void
+use(void *p __attribute__ ((unused)))
+{
+}
diff --git a/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go b/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go
new file mode 100644 (file)
index 0000000..bffe1a7
--- /dev/null
@@ -0,0 +1,20 @@
+// Copyright 2015 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.
+
+// +build gccgo,linux,amd64
+
+package unix
+
+import "syscall"
+
+//extern gettimeofday
+func realGettimeofday(*Timeval, *byte) int32
+
+func gettimeofday(tv *Timeval) (err syscall.Errno) {
+       r := realGettimeofday(tv, nil)
+       if r < 0 {
+               return syscall.GetErrno()
+       }
+       return 0
+}
diff --git a/vendor/golang.org/x/sys/unix/mkall.sh b/vendor/golang.org/x/sys/unix/mkall.sh
new file mode 100755 (executable)
index 0000000..de95a4b
--- /dev/null
@@ -0,0 +1,274 @@
+#!/usr/bin/env bash
+# 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.
+
+# The unix package provides access to the raw system call
+# interface of the underlying operating system.  Porting Go to
+# a new architecture/operating system combination requires
+# some manual effort, though there are tools that automate
+# much of the process.  The auto-generated files have names
+# beginning with z.
+#
+# This script runs or (given -n) prints suggested commands to generate z files
+# for the current system.  Running those commands is not automatic.
+# This script is documentation more than anything else.
+#
+# * asm_${GOOS}_${GOARCH}.s
+#
+# This hand-written assembly file implements system call dispatch.
+# There are three entry points:
+#
+#      func Syscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr);
+#      func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr);
+#      func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr);
+#
+# The first and second are the standard ones; they differ only in
+# how many arguments can be passed to the kernel.
+# The third is for low-level use by the ForkExec wrapper;
+# unlike the first two, it does not call into the scheduler to
+# let it know that a system call is running.
+#
+# * syscall_${GOOS}.go
+#
+# This hand-written Go file implements system calls that need
+# special handling and lists "//sys" comments giving prototypes
+# for ones that can be auto-generated.  Mksyscall reads those
+# comments to generate the stubs.
+#
+# * syscall_${GOOS}_${GOARCH}.go
+#
+# Same as syscall_${GOOS}.go except that it contains code specific
+# to ${GOOS} on one particular architecture.
+#
+# * types_${GOOS}.c
+#
+# This hand-written C file includes standard C headers and then
+# creates typedef or enum names beginning with a dollar sign
+# (use of $ in variable names is a gcc extension).  The hardest
+# part about preparing this file is figuring out which headers to
+# include and which symbols need to be #defined to get the
+# actual data structures that pass through to the kernel system calls.
+# Some C libraries present alternate versions for binary compatibility
+# and translate them on the way in and out of system calls, but
+# there is almost always a #define that can get the real ones.
+# See types_darwin.c and types_linux.c for examples.
+#
+# * zerror_${GOOS}_${GOARCH}.go
+#
+# This machine-generated file defines the system's error numbers,
+# error strings, and signal numbers.  The generator is "mkerrors.sh".
+# Usually no arguments are needed, but mkerrors.sh will pass its
+# arguments on to godefs.
+#
+# * zsyscall_${GOOS}_${GOARCH}.go
+#
+# Generated by mksyscall.pl; see syscall_${GOOS}.go above.
+#
+# * zsysnum_${GOOS}_${GOARCH}.go
+#
+# Generated by mksysnum_${GOOS}.
+#
+# * ztypes_${GOOS}_${GOARCH}.go
+#
+# Generated by godefs; see types_${GOOS}.c above.
+
+GOOSARCH="${GOOS}_${GOARCH}"
+
+# defaults
+mksyscall="./mksyscall.pl"
+mkerrors="./mkerrors.sh"
+zerrors="zerrors_$GOOSARCH.go"
+mksysctl=""
+zsysctl="zsysctl_$GOOSARCH.go"
+mksysnum=
+mktypes=
+run="sh"
+
+case "$1" in
+-syscalls)
+       for i in zsyscall*go
+       do
+               sed 1q $i | sed 's;^// ;;' | sh > _$i && gofmt < _$i > $i
+               rm _$i
+       done
+       exit 0
+       ;;
+-n)
+       run="cat"
+       shift
+esac
+
+case "$#" in
+0)
+       ;;
+*)
+       echo 'usage: mkall.sh [-n]' 1>&2
+       exit 2
+esac
+
+GOOSARCH_in=syscall_$GOOSARCH.go
+case "$GOOSARCH" in
+_* | *_ | _)
+       echo 'undefined $GOOS_$GOARCH:' "$GOOSARCH" 1>&2
+       exit 1
+       ;;
+darwin_386)
+       mkerrors="$mkerrors -m32"
+       mksyscall="./mksyscall.pl -l32"
+       mksysnum="./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk macosx)/usr/include/sys/syscall.h"
+       mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+       ;;
+darwin_amd64)
+       mkerrors="$mkerrors -m64"
+       mksysnum="./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk macosx)/usr/include/sys/syscall.h"
+       mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+       ;;
+darwin_arm)
+       mkerrors="$mkerrors"
+       mksysnum="./mksysnum_darwin.pl /usr/include/sys/syscall.h"
+       mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+       ;;
+darwin_arm64)
+       mkerrors="$mkerrors -m64"
+       mksysnum="./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk iphoneos)/usr/include/sys/syscall.h"
+       mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+       ;;
+dragonfly_386)
+       mkerrors="$mkerrors -m32"
+       mksyscall="./mksyscall.pl -l32 -dragonfly"
+       mksysnum="curl -s 'http://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master' | ./mksysnum_dragonfly.pl"
+       mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+       ;;
+dragonfly_amd64)
+       mkerrors="$mkerrors -m64"
+       mksyscall="./mksyscall.pl -dragonfly"
+       mksysnum="curl -s 'http://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master' | ./mksysnum_dragonfly.pl"
+       mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+       ;;
+freebsd_386)
+       mkerrors="$mkerrors -m32"
+       mksyscall="./mksyscall.pl -l32"
+       mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl"
+       mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+       ;;
+freebsd_amd64)
+       mkerrors="$mkerrors -m64"
+       mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl"
+       mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+       ;;
+freebsd_arm)
+       mkerrors="$mkerrors"
+       mksyscall="./mksyscall.pl -l32 -arm"
+       mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl"
+       # Let the type of C char be singed for making the bare syscall
+       # API consistent across over platforms.
+       mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
+       ;;
+linux_386)
+       mkerrors="$mkerrors -m32"
+       mksyscall="./mksyscall.pl -l32"
+       mksysnum="./mksysnum_linux.pl /usr/include/asm/unistd_32.h"
+       mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+       ;;
+linux_amd64)
+       unistd_h=$(ls -1 /usr/include/asm/unistd_64.h /usr/include/x86_64-linux-gnu/asm/unistd_64.h 2>/dev/null | head -1)
+       if [ "$unistd_h" = "" ]; then
+               echo >&2 cannot find unistd_64.h
+               exit 1
+       fi
+       mkerrors="$mkerrors -m64"
+       mksysnum="./mksysnum_linux.pl $unistd_h"
+       mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+       ;;
+linux_arm)
+       mkerrors="$mkerrors"
+       mksyscall="./mksyscall.pl -l32 -arm"
+       mksysnum="curl -s 'http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain/arch/arm/include/uapi/asm/unistd.h' | ./mksysnum_linux.pl -"
+       mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+       ;;
+linux_arm64)
+       unistd_h=$(ls -1 /usr/include/asm/unistd.h /usr/include/asm-generic/unistd.h 2>/dev/null | head -1)
+       if [ "$unistd_h" = "" ]; then
+               echo >&2 cannot find unistd_64.h
+               exit 1
+       fi
+       mksysnum="./mksysnum_linux.pl $unistd_h"
+       # Let the type of C char be singed for making the bare syscall
+       # API consistent across over platforms.
+       mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
+       ;;
+linux_ppc64)
+       GOOSARCH_in=syscall_linux_ppc64x.go
+       unistd_h=/usr/include/asm/unistd.h
+       mkerrors="$mkerrors -m64"
+       mksysnum="./mksysnum_linux.pl $unistd_h"
+       mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+       ;;
+linux_ppc64le)
+       GOOSARCH_in=syscall_linux_ppc64x.go
+       unistd_h=/usr/include/powerpc64le-linux-gnu/asm/unistd.h
+       mkerrors="$mkerrors -m64"
+       mksysnum="./mksysnum_linux.pl $unistd_h"
+       mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+       ;;
+netbsd_386)
+       mkerrors="$mkerrors -m32"
+       mksyscall="./mksyscall.pl -l32 -netbsd"
+       mksysnum="curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl"
+       mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+       ;;
+netbsd_amd64)
+       mkerrors="$mkerrors -m64"
+       mksyscall="./mksyscall.pl -netbsd"
+       mksysnum="curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl"
+       mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+       ;;
+openbsd_386)
+       mkerrors="$mkerrors -m32"
+       mksyscall="./mksyscall.pl -l32 -openbsd"
+       mksysctl="./mksysctl_openbsd.pl"
+       zsysctl="zsysctl_openbsd.go"
+       mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl"
+       mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+       ;;
+openbsd_amd64)
+       mkerrors="$mkerrors -m64"
+       mksyscall="./mksyscall.pl -openbsd"
+       mksysctl="./mksysctl_openbsd.pl"
+       zsysctl="zsysctl_openbsd.go"
+       mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl"
+       mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+       ;;
+solaris_amd64)
+       mksyscall="./mksyscall_solaris.pl"
+       mkerrors="$mkerrors -m64"
+       mksysnum=
+       mktypes="GOARCH=$GOARCH go tool cgo -godefs"
+       ;;
+*)
+       echo 'unrecognized $GOOS_$GOARCH: ' "$GOOSARCH" 1>&2
+       exit 1
+       ;;
+esac
+
+(
+       if [ -n "$mkerrors" ]; then echo "$mkerrors |gofmt >$zerrors"; fi
+       case "$GOOS" in
+       *)
+               syscall_goos="syscall_$GOOS.go"
+               case "$GOOS" in
+               darwin | dragonfly | freebsd | netbsd | openbsd)
+                       syscall_goos="syscall_bsd.go $syscall_goos"
+                       ;;
+               esac
+               if [ -n "$mksyscall" ]; then echo "$mksyscall $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go"; fi
+               ;;
+       esac
+       if [ -n "$mksysctl" ]; then echo "$mksysctl |gofmt >$zsysctl"; fi
+       if [ -n "$mksysnum" ]; then echo "$mksysnum |gofmt >zsysnum_$GOOSARCH.go"; fi
+       if [ -n "$mktypes" ]; then
+               echo "echo // +build $GOARCH,$GOOS > ztypes_$GOOSARCH.go";
+               echo "$mktypes types_$GOOS.go | gofmt >>ztypes_$GOOSARCH.go";
+       fi
+) | $run
diff --git a/vendor/golang.org/x/sys/unix/mkerrors.sh b/vendor/golang.org/x/sys/unix/mkerrors.sh
new file mode 100755 (executable)
index 0000000..c40d788
--- /dev/null
@@ -0,0 +1,476 @@
+#!/usr/bin/env bash
+# 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 Go code listing errors and other #defined constant
+# values (ENAMETOOLONG etc.), by asking the preprocessor
+# about the definitions.
+
+unset LANG
+export LC_ALL=C
+export LC_CTYPE=C
+
+if test -z "$GOARCH" -o -z "$GOOS"; then
+       echo 1>&2 "GOARCH or GOOS not defined in environment"
+       exit 1
+fi
+
+CC=${CC:-cc}
+
+if [[ "$GOOS" -eq "solaris" ]]; then
+       # Assumes GNU versions of utilities in PATH.
+       export PATH=/usr/gnu/bin:$PATH
+fi
+
+uname=$(uname)
+
+includes_Darwin='
+#define _DARWIN_C_SOURCE
+#define KERNEL
+#define _DARWIN_USE_64_BIT_INODE
+#include <sys/types.h>
+#include <sys/event.h>
+#include <sys/ptrace.h>
+#include <sys/socket.h>
+#include <sys/sockio.h>
+#include <sys/sysctl.h>
+#include <sys/mman.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/ip.h>
+#include <termios.h>
+'
+
+includes_DragonFly='
+#include <sys/types.h>
+#include <sys/event.h>
+#include <sys/socket.h>
+#include <sys/sockio.h>
+#include <sys/sysctl.h>
+#include <sys/mman.h>
+#include <sys/wait.h>
+#include <sys/ioctl.h>
+#include <net/bpf.h>
+#include <net/if.h>
+#include <net/if_types.h>
+#include <net/route.h>
+#include <netinet/in.h>
+#include <termios.h>
+#include <netinet/ip.h>
+#include <net/ip_mroute/ip_mroute.h>
+'
+
+includes_FreeBSD='
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/event.h>
+#include <sys/socket.h>
+#include <sys/sockio.h>
+#include <sys/sysctl.h>
+#include <sys/mman.h>
+#include <sys/wait.h>
+#include <sys/ioctl.h>
+#include <net/bpf.h>
+#include <net/if.h>
+#include <net/if_types.h>
+#include <net/route.h>
+#include <netinet/in.h>
+#include <termios.h>
+#include <netinet/ip.h>
+#include <netinet/ip_mroute.h>
+#include <sys/extattr.h>
+
+#if __FreeBSD__ >= 10
+#define IFT_CARP       0xf8    // IFT_CARP is deprecated in FreeBSD 10
+#undef SIOCAIFADDR
+#define SIOCAIFADDR    _IOW(105, 26, struct oifaliasreq)       // ifaliasreq contains if_data
+#undef SIOCSIFPHYADDR
+#define SIOCSIFPHYADDR _IOW(105, 70, struct oifaliasreq)       // ifaliasreq contains if_data
+#endif
+'
+
+includes_Linux='
+#define _LARGEFILE_SOURCE
+#define _LARGEFILE64_SOURCE
+#ifndef __LP64__
+#define _FILE_OFFSET_BITS 64
+#endif
+#define _GNU_SOURCE
+
+#include <bits/sockaddr.h>
+#include <sys/epoll.h>
+#include <sys/inotify.h>
+#include <sys/ioctl.h>
+#include <sys/mman.h>
+#include <sys/mount.h>
+#include <sys/prctl.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/socket.h>
+#include <linux/if.h>
+#include <linux/if_arp.h>
+#include <linux/if_ether.h>
+#include <linux/if_tun.h>
+#include <linux/if_packet.h>
+#include <linux/if_addr.h>
+#include <linux/filter.h>
+#include <linux/netlink.h>
+#include <linux/reboot.h>
+#include <linux/rtnetlink.h>
+#include <linux/ptrace.h>
+#include <linux/sched.h>
+#include <linux/wait.h>
+#include <linux/icmpv6.h>
+#include <net/route.h>
+#include <asm/termbits.h>
+
+#ifndef MSG_FASTOPEN
+#define MSG_FASTOPEN    0x20000000
+#endif
+
+#ifndef PTRACE_GETREGS
+#define PTRACE_GETREGS 0xc
+#endif
+
+#ifndef PTRACE_SETREGS
+#define PTRACE_SETREGS 0xd
+#endif
+'
+
+includes_NetBSD='
+#include <sys/types.h>
+#include <sys/param.h>
+#include <sys/event.h>
+#include <sys/mman.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>
+
+// Needed since <sys/param.h> refers to it...
+#define schedppq 1
+'
+
+includes_OpenBSD='
+#include <sys/types.h>
+#include <sys/param.h>
+#include <sys/event.h>
+#include <sys/mman.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/if_var.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>
+
+// We keep some constants not supported in OpenBSD 5.5 and beyond for
+// the promise of compatibility.
+#define EMUL_ENABLED           0x1
+#define EMUL_NATIVE            0x2
+#define IPV6_FAITH             0x1d
+#define IPV6_OPTIONS           0x1
+#define IPV6_RTHDR_STRICT      0x1
+#define IPV6_SOCKOPT_RESERVED1 0x3
+#define SIOCGIFGENERIC         0xc020693a
+#define SIOCSIFGENERIC         0x80206939
+#define WALTSIG                        0x4
+'
+
+includes_SunOS='
+#include <limits.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/sockio.h>
+#include <sys/mman.h>
+#include <sys/wait.h>
+#include <sys/ioctl.h>
+#include <net/bpf.h>
+#include <net/if.h>
+#include <net/if_arp.h>
+#include <net/if_types.h>
+#include <net/route.h>
+#include <netinet/in.h>
+#include <termios.h>
+#include <netinet/ip.h>
+#include <netinet/ip_mroute.h>
+'
+
+
+includes='
+#include <sys/types.h>
+#include <sys/file.h>
+#include <fcntl.h>
+#include <dirent.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netinet/ip.h>
+#include <netinet/ip6.h>
+#include <netinet/tcp.h>
+#include <errno.h>
+#include <sys/signal.h>
+#include <signal.h>
+#include <sys/resource.h>
+#include <time.h>
+'
+ccflags="$@"
+
+# Write go tool cgo -godefs input.
+(
+       echo package unix
+       echo
+       echo '/*'
+       indirect="includes_$(uname)"
+       echo "${!indirect} $includes"
+       echo '*/'
+       echo 'import "C"'
+       echo 'import "syscall"'
+       echo
+       echo 'const ('
+
+       # The gcc command line prints all the #defines
+       # it encounters while processing the input
+       echo "${!indirect} $includes" | $CC -x c - -E -dM $ccflags |
+       awk '
+               $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}
+               $2 ~ /^(SCM_SRCRT)$/ {next}
+               $2 ~ /^(MAP_FAILED)$/ {next}
+               $2 ~ /^ELF_.*$/ {next}# <asm/elf.h> contains ELF_ARCH, etc.
+
+               $2 ~ /^EXTATTR_NAMESPACE_NAMES/ ||
+               $2 ~ /^EXTATTR_NAMESPACE_[A-Z]+_STRING/ {next}
+
+               $2 !~ /^ETH_/ &&
+               $2 !~ /^EPROC_/ &&
+               $2 !~ /^EQUIV_/ &&
+               $2 !~ /^EXPR_/ &&
+               $2 ~ /^E[A-Z0-9_]+$/ ||
+               $2 ~ /^B[0-9_]+$/ ||
+               $2 == "BOTHER" ||
+               $2 ~ /^CI?BAUD(EX)?$/ ||
+               $2 == "IBSHIFT" ||
+               $2 ~ /^V[A-Z0-9]+$/ ||
+               $2 ~ /^CS[A-Z0-9]/ ||
+               $2 ~ /^I(SIG|CANON|CRNL|UCLC|EXTEN|MAXBEL|STRIP|UTF8)$/ ||
+               $2 ~ /^IGN/ ||
+               $2 ~ /^IX(ON|ANY|OFF)$/ ||
+               $2 ~ /^IN(LCR|PCK)$/ ||
+               $2 ~ /(^FLU?SH)|(FLU?SH$)/ ||
+               $2 ~ /^C(LOCAL|READ|MSPAR|RTSCTS)$/ ||
+               $2 == "BRKINT" ||
+               $2 == "HUPCL" ||
+               $2 == "PENDIN" ||
+               $2 == "TOSTOP" ||
+               $2 == "XCASE" ||
+               $2 == "ALTWERASE" ||
+               $2 == "NOKERNINFO" ||
+               $2 ~ /^PAR/ ||
+               $2 ~ /^SIG[^_]/ ||
+               $2 ~ /^O[CNPFPL][A-Z]+[^_][A-Z]+$/ ||
+               $2 ~ /^(NL|CR|TAB|BS|VT|FF)DLY$/ ||
+               $2 ~ /^(NL|CR|TAB|BS|VT|FF)[0-9]$/ ||
+               $2 ~ /^O?XTABS$/ ||
+               $2 ~ /^TC[IO](ON|OFF)$/ ||
+               $2 ~ /^IN_/ ||
+               $2 ~ /^LOCK_(SH|EX|NB|UN)$/ ||
+               $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|ICMP6|TCP|EVFILT|NOTE|EV|SHUT|PROT|MAP|PACKET|MSG|SCM|MCL|DT|MADV|PR)_/ ||
+               $2 == "ICMPV6_FILTER" ||
+               $2 == "SOMAXCONN" ||
+               $2 == "NAME_MAX" ||
+               $2 == "IFNAMSIZ" ||
+               $2 ~ /^CTL_(MAXNAME|NET|QUERY)$/ ||
+               $2 ~ /^SYSCTL_VERS/ ||
+               $2 ~ /^(MS|MNT)_/ ||
+               $2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ ||
+               $2 ~ /^(O|F|FD|NAME|S|PTRACE|PT)_/ ||
+               $2 ~ /^LINUX_REBOOT_CMD_/ ||
+               $2 ~ /^LINUX_REBOOT_MAGIC[12]$/ ||
+               $2 !~ "NLA_TYPE_MASK" &&
+               $2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P)_/ ||
+               $2 ~ /^SIOC/ ||
+               $2 ~ /^TIOC/ ||
+               $2 ~ /^TCGET/ ||
+               $2 ~ /^TCSET/ ||
+               $2 ~ /^TC(FLSH|SBRKP?|XONC)$/ ||
+               $2 !~ "RTF_BITS" &&
+               $2 ~ /^(IFF|IFT|NET_RT|RTM|RTF|RTV|RTA|RTAX)_/ ||
+               $2 ~ /^BIOC/ ||
+               $2 ~ /^RUSAGE_(SELF|CHILDREN|THREAD)/ ||
+               $2 ~ /^RLIMIT_(AS|CORE|CPU|DATA|FSIZE|NOFILE|STACK)|RLIM_INFINITY/ ||
+               $2 ~ /^PRIO_(PROCESS|PGRP|USER)/ ||
+               $2 ~ /^CLONE_[A-Z_]+/ ||
+               $2 !~ /^(BPF_TIMEVAL)$/ &&
+               $2 ~ /^(BPF|DLT)_/ ||
+               $2 ~ /^CLOCK_/ ||
+               $2 !~ "WMESGLEN" &&
+               $2 ~ /^W[A-Z0-9]+$/ {printf("\t%s = C.%s\n", $2, $2)}
+               $2 ~ /^__WCOREFLAG$/ {next}
+               $2 ~ /^__W[A-Z0-9]+$/ {printf("\t%s = C.%s\n", substr($2,3), $2)}
+
+               {next}
+       ' | sort
+
+       echo ')'
+) >_const.go
+
+# Pull out the error names for later.
+errors=$(
+       echo '#include <errno.h>' | $CC -x c - -E -dM $ccflags |
+       awk '$1=="#define" && $2 ~ /^E[A-Z0-9_]+$/ { print $2 }' |
+       sort
+)
+
+# Pull out the signal names for later.
+signals=$(
+       echo '#include <signal.h>' | $CC -x c - -E -dM $ccflags |
+       awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print $2 }' |
+       egrep -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT)' |
+       sort
+)
+
+# Again, writing regexps to a file.
+echo '#include <errno.h>' | $CC -x c - -E -dM $ccflags |
+       awk '$1=="#define" && $2 ~ /^E[A-Z0-9_]+$/ { print "^\t" $2 "[ \t]*=" }' |
+       sort >_error.grep
+echo '#include <signal.h>' | $CC -x c - -E -dM $ccflags |
+       awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print "^\t" $2 "[ \t]*=" }' |
+       egrep -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT)' |
+       sort >_signal.grep
+
+echo '// mkerrors.sh' "$@"
+echo '// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT'
+echo
+echo "// +build ${GOARCH},${GOOS}"
+echo
+go tool cgo -godefs -- "$@" _const.go >_error.out
+cat _error.out | grep -vf _error.grep | grep -vf _signal.grep
+echo
+echo '// Errors'
+echo 'const ('
+cat _error.out | grep -f _error.grep | sed 's/=\(.*\)/= syscall.Errno(\1)/'
+echo ')'
+
+echo
+echo '// Signals'
+echo 'const ('
+cat _error.out | grep -f _signal.grep | sed 's/=\(.*\)/= syscall.Signal(\1)/'
+echo ')'
+
+# Run C program to print error and syscall strings.
+(
+       echo -E "
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <ctype.h>
+#include <string.h>
+#include <signal.h>
+
+#define nelem(x) (sizeof(x)/sizeof((x)[0]))
+
+enum { A = 'A', Z = 'Z', a = 'a', z = 'z' }; // avoid need for single quotes below
+
+int errors[] = {
+"
+       for i in $errors
+       do
+               echo -E '       '$i,
+       done
+
+       echo -E "
+};
+
+int signals[] = {
+"
+       for i in $signals
+       do
+               echo -E '       '$i,
+       done
+
+       # Use -E because on some systems bash builtin interprets \n itself.
+       echo -E '
+};
+
+static int
+intcmp(const void *a, const void *b)
+{
+       return *(int*)a - *(int*)b;
+}
+
+int
+main(void)
+{
+       int i, j, e;
+       char buf[1024], *p;
+
+       printf("\n\n// Error table\n");
+       printf("var errors = [...]string {\n");
+       qsort(errors, nelem(errors), sizeof errors[0], intcmp);
+       for(i=0; i<nelem(errors); i++) {
+               e = errors[i];
+               if(i > 0 && errors[i-1] == e)
+                       continue;
+               strcpy(buf, strerror(e));
+               // lowercase first letter: Bad -> bad, but STREAM -> STREAM.
+               if(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z)
+                       buf[0] += a - A;
+               printf("\t%d: \"%s\",\n", e, buf);
+       }
+       printf("}\n\n");
+       
+       printf("\n\n// Signal table\n");
+       printf("var signals = [...]string {\n");
+       qsort(signals, nelem(signals), sizeof signals[0], intcmp);
+       for(i=0; i<nelem(signals); i++) {
+               e = signals[i];
+               if(i > 0 && signals[i-1] == e)
+                       continue;
+               strcpy(buf, strsignal(e));
+               // lowercase first letter: Bad -> bad, but STREAM -> STREAM.
+               if(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z)
+                       buf[0] += a - A;
+               // cut trailing : number.
+               p = strrchr(buf, ":"[0]);
+               if(p)
+                       *p = '\0';
+               printf("\t%d: \"%s\",\n", e, buf);
+       }
+       printf("}\n\n");
+
+       return 0;
+}
+
+'
+) >_errors.c
+
+$CC $ccflags -o _errors _errors.c && $GORUN ./_errors && rm -f _errors.c _errors _const.go _error.grep _signal.grep _error.out
diff --git a/vendor/golang.org/x/sys/unix/mksyscall.pl b/vendor/golang.org/x/sys/unix/mksyscall.pl
new file mode 100755 (executable)
index 0000000..b1e7766
--- /dev/null
@@ -0,0 +1,323 @@
+#!/usr/bin/env 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.
+
+# This program reads a file containing function prototypes
+# (like syscall_darwin.go) and generates system call bodies.
+# The prototypes are marked by lines beginning with "//sys"
+# and read like func declarations if //sys is replaced by func, but:
+#      * The parameter lists must give a name for each argument.
+#        This includes return parameters.
+#      * The parameter lists must give a type for each argument:
+#        the (x, y, z int) shorthand is not allowed.
+#      * If the return parameter is an error number, it must be named errno.
+
+# A line beginning with //sysnb is like //sys, except that the
+# goroutine will not be suspended during the execution of the system
+# call.  This must only be used for system calls which can never
+# block, as otherwise the system call could cause all goroutines to
+# hang.
+
+use strict;
+
+my $cmdline = "mksyscall.pl " . join(' ', @ARGV);
+my $errors = 0;
+my $_32bit = "";
+my $plan9 = 0;
+my $openbsd = 0;
+my $netbsd = 0;
+my $dragonfly = 0;
+my $arm = 0; # 64-bit value should use (even, odd)-pair
+
+if($ARGV[0] eq "-b32") {
+       $_32bit = "big-endian";
+       shift;
+} elsif($ARGV[0] eq "-l32") {
+       $_32bit = "little-endian";
+       shift;
+}
+if($ARGV[0] eq "-plan9") {
+       $plan9 = 1;
+       shift;
+}
+if($ARGV[0] eq "-openbsd") {
+       $openbsd = 1;
+       shift;
+}
+if($ARGV[0] eq "-netbsd") {
+       $netbsd = 1;
+       shift;
+}
+if($ARGV[0] eq "-dragonfly") {
+       $dragonfly = 1;
+       shift;
+}
+if($ARGV[0] eq "-arm") {
+       $arm = 1;
+       shift;
+}
+
+if($ARGV[0] =~ /^-/) {
+       print STDERR "usage: mksyscall.pl [-b32 | -l32] [file ...]\n";
+       exit 1;
+}
+
+if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
+       print STDERR "GOARCH or GOOS not defined in environment\n";
+       exit 1;
+}
+
+sub parseparamlist($) {
+       my ($list) = @_;
+       $list =~ s/^\s*//;
+       $list =~ s/\s*$//;
+       if($list eq "") {
+               return ();
+       }
+       return split(/\s*,\s*/, $list);
+}
+
+sub parseparam($) {
+       my ($p) = @_;
+       if($p !~ /^(\S*) (\S*)$/) {
+               print STDERR "$ARGV:$.: malformed parameter: $p\n";
+               $errors = 1;
+               return ("xx", "int");
+       }
+       return ($1, $2);
+}
+
+my $text = "";
+while(<>) {
+       chomp;
+       s/\s+/ /g;
+       s/^\s+//;
+       s/\s+$//;
+       my $nonblock = /^\/\/sysnb /;
+       next if !/^\/\/sys / && !$nonblock;
+
+       # Line must be of the form
+       #       func Open(path string, mode int, perm int) (fd int, errno error)
+       # Split into name, in params, out params.
+       if(!/^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*((?i)SYS_[A-Z0-9_]+))?$/) {
+               print STDERR "$ARGV:$.: malformed //sys declaration\n";
+               $errors = 1;
+               next;
+       }
+       my ($func, $in, $out, $sysname) = ($2, $3, $4, $5);
+
+       # Split argument lists on comma.
+       my @in = parseparamlist($in);
+       my @out = parseparamlist($out);
+
+       # Try in vain to keep people from editing this file.
+       # The theory is that they jump into the middle of the file
+       # without reading the header.
+       $text .= "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n";
+
+       # Go function header.
+       my $out_decl = @out ? sprintf(" (%s)", join(', ', @out)) : "";
+       $text .= sprintf "func %s(%s)%s {\n", $func, join(', ', @in), $out_decl;
+
+       # Check if err return available
+       my $errvar = "";
+       foreach my $p (@out) {
+               my ($name, $type) = parseparam($p);
+               if($type eq "error") {
+                       $errvar = $name;
+                       last;
+               }
+       }
+
+       # Prepare arguments to Syscall.
+       my @args = ();
+       my @uses = ();
+       my $n = 0;
+       foreach my $p (@in) {
+               my ($name, $type) = parseparam($p);
+               if($type =~ /^\*/) {
+                       push @args, "uintptr(unsafe.Pointer($name))";
+               } elsif($type eq "string" && $errvar ne "") {
+                       $text .= "\tvar _p$n *byte\n";
+                       $text .= "\t_p$n, $errvar = BytePtrFromString($name)\n";
+                       $text .= "\tif $errvar != nil {\n\t\treturn\n\t}\n";
+                       push @args, "uintptr(unsafe.Pointer(_p$n))";
+                       push @uses, "use(unsafe.Pointer(_p$n))";
+                       $n++;
+               } elsif($type eq "string") {
+                       print STDERR "$ARGV:$.: $func uses string arguments, but has no error return\n";
+                       $text .= "\tvar _p$n *byte\n";
+                       $text .= "\t_p$n, _ = BytePtrFromString($name)\n";
+                       push @args, "uintptr(unsafe.Pointer(_p$n))";
+                       push @uses, "use(unsafe.Pointer(_p$n))";
+                       $n++;
+               } elsif($type =~ /^\[\](.*)/) {
+                       # Convert slice into pointer, length.
+                       # Have to be careful not to take address of &a[0] if len == 0:
+                       # pass dummy pointer in that case.
+                       # Used to pass nil, but some OSes or simulators reject write(fd, nil, 0).
+                       $text .= "\tvar _p$n unsafe.Pointer\n";
+                       $text .= "\tif len($name) > 0 {\n\t\t_p$n = unsafe.Pointer(\&${name}[0])\n\t}";
+                       $text .= " else {\n\t\t_p$n = unsafe.Pointer(&_zero)\n\t}";
+                       $text .= "\n";
+                       push @args, "uintptr(_p$n)", "uintptr(len($name))";
+                       $n++;
+               } elsif($type eq "int64" && ($openbsd || $netbsd)) {
+                       push @args, "0";
+                       if($_32bit eq "big-endian") {
+                               push @args, "uintptr($name>>32)", "uintptr($name)";
+                       } elsif($_32bit eq "little-endian") {
+                               push @args, "uintptr($name)", "uintptr($name>>32)";
+                       } else {
+                               push @args, "uintptr($name)";
+                       }
+               } elsif($type eq "int64" && $dragonfly) {
+                       if ($func !~ /^extp(read|write)/i) {
+                               push @args, "0";
+                       }
+                       if($_32bit eq "big-endian") {
+                               push @args, "uintptr($name>>32)", "uintptr($name)";
+                       } elsif($_32bit eq "little-endian") {
+                               push @args, "uintptr($name)", "uintptr($name>>32)";
+                       } else {
+                               push @args, "uintptr($name)";
+                       }
+               } elsif($type eq "int64" && $_32bit ne "") {
+                       if(@args % 2 && $arm) {
+                               # arm abi specifies 64-bit argument uses 
+                               # (even, odd) pair
+                               push @args, "0"
+                       }
+                       if($_32bit eq "big-endian") {
+                               push @args, "uintptr($name>>32)", "uintptr($name)";
+                       } else {
+                               push @args, "uintptr($name)", "uintptr($name>>32)";
+                       }
+               } else {
+                       push @args, "uintptr($name)";
+               }
+       }
+
+       # Determine which form to use; pad args with zeros.
+       my $asm = "Syscall";
+       if ($nonblock) {
+               $asm = "RawSyscall";
+       }
+       if(@args <= 3) {
+               while(@args < 3) {
+                       push @args, "0";
+               }
+       } elsif(@args <= 6) {
+               $asm .= "6";
+               while(@args < 6) {
+                       push @args, "0";
+               }
+       } elsif(@args <= 9) {
+               $asm .= "9";
+               while(@args < 9) {
+                       push @args, "0";
+               }
+       } else {
+               print STDERR "$ARGV:$.: too many arguments to system call\n";
+       }
+
+       # System call number.
+       if($sysname eq "") {
+               $sysname = "SYS_$func";
+               $sysname =~ s/([a-z])([A-Z])/${1}_$2/g; # turn FooBar into Foo_Bar
+               $sysname =~ y/a-z/A-Z/;
+       }
+
+       # Actual call.
+       my $args = join(', ', @args);
+       my $call = "$asm($sysname, $args)";
+
+       # Assign return values.
+       my $body = "";
+       my @ret = ("_", "_", "_");
+       my $do_errno = 0;
+       for(my $i=0; $i<@out; $i++) {
+               my $p = $out[$i];
+               my ($name, $type) = parseparam($p);
+               my $reg = "";
+               if($name eq "err" && !$plan9) {
+                       $reg = "e1";
+                       $ret[2] = $reg;
+                       $do_errno = 1;
+               } elsif($name eq "err" && $plan9) {
+                       $ret[0] = "r0";
+                       $ret[2] = "e1";
+                       next;
+               } else {
+                       $reg = sprintf("r%d", $i);
+                       $ret[$i] = $reg;
+               }
+               if($type eq "bool") {
+                       $reg = "$reg != 0";
+               }
+               if($type eq "int64" && $_32bit ne "") {
+                       # 64-bit number in r1:r0 or r0:r1.
+                       if($i+2 > @out) {
+                               print STDERR "$ARGV:$.: not enough registers for int64 return\n";
+                       }
+                       if($_32bit eq "big-endian") {
+                               $reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i, $i+1);
+                       } else {
+                               $reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i+1, $i);
+                       }
+                       $ret[$i] = sprintf("r%d", $i);
+                       $ret[$i+1] = sprintf("r%d", $i+1);
+               }
+               if($reg ne "e1" || $plan9) {
+                       $body .= "\t$name = $type($reg)\n";
+               }
+       }
+       if ($ret[0] eq "_" && $ret[1] eq "_" && $ret[2] eq "_") {
+               $text .= "\t$call\n";
+       } else {
+               $text .= "\t$ret[0], $ret[1], $ret[2] := $call\n";
+       }
+       foreach my $use (@uses) {
+               $text .= "\t$use\n";
+       }
+       $text .= $body;
+       
+       if ($plan9 && $ret[2] eq "e1") {
+               $text .= "\tif int32(r0) == -1 {\n";
+               $text .= "\t\terr = e1\n";
+               $text .= "\t}\n";
+       } elsif ($do_errno) {
+               $text .= "\tif e1 != 0 {\n";
+               $text .= "\t\terr = errnoErr(e1)\n";
+               $text .= "\t}\n";
+       }
+       $text .= "\treturn\n";
+       $text .= "}\n\n";
+}
+
+chomp $text;
+chomp $text;
+
+if($errors) {
+       exit 1;
+}
+
+print <<EOF;
+// $cmdline
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build $ENV{'GOARCH'},$ENV{'GOOS'}
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+var _ syscall.Errno
+
+$text
+EOF
+exit 0;
diff --git a/vendor/golang.org/x/sys/unix/mksyscall_solaris.pl b/vendor/golang.org/x/sys/unix/mksyscall_solaris.pl
new file mode 100755 (executable)
index 0000000..06bade7
--- /dev/null
@@ -0,0 +1,294 @@
+#!/usr/bin/env 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.
+
+# This program reads a file containing function prototypes
+# (like syscall_solaris.go) and generates system call bodies.
+# The prototypes are marked by lines beginning with "//sys"
+# and read like func declarations if //sys is replaced by func, but:
+#      * The parameter lists must give a name for each argument.
+#        This includes return parameters.
+#      * The parameter lists must give a type for each argument:
+#        the (x, y, z int) shorthand is not allowed.
+#      * If the return parameter is an error number, it must be named err.
+#      * If go func name needs to be different than its libc name, 
+#      * or the function is not in libc, name could be specified
+#      * at the end, after "=" sign, like
+#        //sys getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (err error) = libsocket.getsockopt
+
+use strict;
+
+my $cmdline = "mksyscall_solaris.pl " . join(' ', @ARGV);
+my $errors = 0;
+my $_32bit = "";
+
+binmode STDOUT;
+
+if($ARGV[0] eq "-b32") {
+       $_32bit = "big-endian";
+       shift;
+} elsif($ARGV[0] eq "-l32") {
+       $_32bit = "little-endian";
+       shift;
+}
+
+if($ARGV[0] =~ /^-/) {
+       print STDERR "usage: mksyscall_solaris.pl [-b32 | -l32] [file ...]\n";
+       exit 1;
+}
+
+if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
+       print STDERR "GOARCH or GOOS not defined in environment\n";
+       exit 1;
+}
+
+sub parseparamlist($) {
+       my ($list) = @_;
+       $list =~ s/^\s*//;
+       $list =~ s/\s*$//;
+       if($list eq "") {
+               return ();
+       }
+       return split(/\s*,\s*/, $list);
+}
+
+sub parseparam($) {
+       my ($p) = @_;
+       if($p !~ /^(\S*) (\S*)$/) {
+               print STDERR "$ARGV:$.: malformed parameter: $p\n";
+               $errors = 1;
+               return ("xx", "int");
+       }
+       return ($1, $2);
+}
+
+my $package = "";
+my $text = "";
+my $dynimports = "";
+my $linknames = "";
+my @vars = ();
+while(<>) {
+       chomp;
+       s/\s+/ /g;
+       s/^\s+//;
+       s/\s+$//;
+       $package = $1 if !$package && /^package (\S+)$/;
+       my $nonblock = /^\/\/sysnb /;
+       next if !/^\/\/sys / && !$nonblock;
+
+       # Line must be of the form
+       #       func Open(path string, mode int, perm int) (fd int, err error)
+       # Split into name, in params, out params.
+       if(!/^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*(?:(\w*)\.)?(\w*))?$/) {
+               print STDERR "$ARGV:$.: malformed //sys declaration\n";
+               $errors = 1;
+               next;
+       }
+       my ($nb, $func, $in, $out, $modname, $sysname) = ($1, $2, $3, $4, $5, $6);
+
+       # Split argument lists on comma.
+       my @in = parseparamlist($in);
+       my @out = parseparamlist($out);
+
+       # So file name.
+       if($modname eq "") {
+               $modname = "libc";
+       }
+
+       # System call name.
+       if($sysname eq "") {
+               $sysname = "$func";
+       }
+
+       # System call pointer variable name.
+       my $sysvarname = "proc$sysname";
+
+       my $strconvfunc = "BytePtrFromString";
+       my $strconvtype = "*byte";
+
+       $sysname =~ y/A-Z/a-z/; # All libc functions are lowercase.
+
+       # Runtime import of function to allow cross-platform builds.
+       $dynimports .= "//go:cgo_import_dynamic libc_${sysname} ${sysname} \"$modname.so\"\n";
+       # Link symbol to proc address variable.
+       $linknames .= "//go:linkname ${sysvarname} libc_${sysname}\n";
+       # Library proc address variable.
+       push @vars, $sysvarname;
+
+       # Go function header.
+       $out = join(', ', @out);
+       if($out ne "") {
+               $out = " ($out)";
+       }
+       if($text ne "") {
+               $text .= "\n"
+       }
+       $text .= sprintf "func %s(%s)%s {\n", $func, join(', ', @in), $out;
+
+       # Check if err return available
+       my $errvar = "";
+       foreach my $p (@out) {
+               my ($name, $type) = parseparam($p);
+               if($type eq "error") {
+                       $errvar = $name;
+                       last;
+               }
+       }
+
+       # Prepare arguments to Syscall.
+       my @args = ();
+       my @uses = ();
+       my $n = 0;
+       foreach my $p (@in) {
+               my ($name, $type) = parseparam($p);
+               if($type =~ /^\*/) {
+                       push @args, "uintptr(unsafe.Pointer($name))";
+               } elsif($type eq "string" && $errvar ne "") {
+                       $text .= "\tvar _p$n $strconvtype\n";
+                       $text .= "\t_p$n, $errvar = $strconvfunc($name)\n";
+                       $text .= "\tif $errvar != nil {\n\t\treturn\n\t}\n";
+                       push @args, "uintptr(unsafe.Pointer(_p$n))";
+                       push @uses, "use(unsafe.Pointer(_p$n))";
+                       $n++;
+               } elsif($type eq "string") {
+                       print STDERR "$ARGV:$.: $func uses string arguments, but has no error return\n";
+                       $text .= "\tvar _p$n $strconvtype\n";
+                       $text .= "\t_p$n, _ = $strconvfunc($name)\n";
+                       push @args, "uintptr(unsafe.Pointer(_p$n))";
+                       push @uses, "use(unsafe.Pointer(_p$n))";
+                       $n++;
+               } elsif($type =~ /^\[\](.*)/) {
+                       # Convert slice into pointer, length.
+                       # Have to be careful not to take address of &a[0] if len == 0:
+                       # pass nil in that case.
+                       $text .= "\tvar _p$n *$1\n";
+                       $text .= "\tif len($name) > 0 {\n\t\t_p$n = \&$name\[0]\n\t}\n";
+                       push @args, "uintptr(unsafe.Pointer(_p$n))", "uintptr(len($name))";
+                       $n++;
+               } elsif($type eq "int64" && $_32bit ne "") {
+                       if($_32bit eq "big-endian") {
+                               push @args, "uintptr($name >> 32)", "uintptr($name)";
+                       } else {
+                               push @args, "uintptr($name)", "uintptr($name >> 32)";
+                       }
+               } elsif($type eq "bool") {
+                       $text .= "\tvar _p$n uint32\n";
+                       $text .= "\tif $name {\n\t\t_p$n = 1\n\t} else {\n\t\t_p$n = 0\n\t}\n";
+                       push @args, "uintptr(_p$n)";
+                       $n++;
+               } else {
+                       push @args, "uintptr($name)";
+               }
+       }
+       my $nargs = @args;
+
+       # Determine which form to use; pad args with zeros.
+       my $asm = "sysvicall6";
+       if ($nonblock) {
+               $asm = "rawSysvicall6";
+       }
+       if(@args <= 6) {
+               while(@args < 6) {
+                       push @args, "0";
+               }
+       } else {
+               print STDERR "$ARGV:$.: too many arguments to system call\n";
+       }
+
+       # Actual call.
+       my $args = join(', ', @args);
+       my $call = "$asm(uintptr(unsafe.Pointer(&$sysvarname)), $nargs, $args)";
+
+       # Assign return values.
+       my $body = "";
+       my $failexpr = "";
+       my @ret = ("_", "_", "_");
+       my @pout= ();
+       my $do_errno = 0;
+       for(my $i=0; $i<@out; $i++) {
+               my $p = $out[$i];
+               my ($name, $type) = parseparam($p);
+               my $reg = "";
+               if($name eq "err") {
+                       $reg = "e1";
+                       $ret[2] = $reg;
+                       $do_errno = 1;
+               } else {
+                       $reg = sprintf("r%d", $i);
+                       $ret[$i] = $reg;
+               }
+               if($type eq "bool") {
+                       $reg = "$reg != 0";
+               }
+               if($type eq "int64" && $_32bit ne "") {
+                       # 64-bit number in r1:r0 or r0:r1.
+                       if($i+2 > @out) {
+                               print STDERR "$ARGV:$.: not enough registers for int64 return\n";
+                       }
+                       if($_32bit eq "big-endian") {
+                               $reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i, $i+1);
+                       } else {
+                               $reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i+1, $i);
+                       }
+                       $ret[$i] = sprintf("r%d", $i);
+                       $ret[$i+1] = sprintf("r%d", $i+1);
+               }
+               if($reg ne "e1") {
+                       $body .= "\t$name = $type($reg)\n";
+               }
+       }
+       if ($ret[0] eq "_" && $ret[1] eq "_" && $ret[2] eq "_") {
+               $text .= "\t$call\n";
+       } else {
+               $text .= "\t$ret[0], $ret[1], $ret[2] := $call\n";
+       }
+       foreach my $use (@uses) {
+               $text .= "\t$use\n";
+       }
+       $text .= $body;
+
+       if ($do_errno) {
+               $text .= "\tif e1 != 0 {\n";
+               $text .= "\t\terr = e1\n";
+               $text .= "\t}\n";
+       }
+       $text .= "\treturn\n";
+       $text .= "}\n";
+}
+
+if($errors) {
+       exit 1;
+}
+
+print <<EOF;
+// $cmdline
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build $ENV{'GOARCH'},$ENV{'GOOS'}
+
+package $package
+
+import (
+       "syscall"
+       "unsafe"
+)
+EOF
+
+print "import \"golang.org/x/sys/unix\"\n" if $package ne "unix";
+
+my $vardecls = "\t" . join(",\n\t", @vars);
+$vardecls .= " syscallFunc";
+
+chomp($_=<<EOF);
+
+$dynimports
+$linknames
+var (
+$vardecls
+)
+
+$text
+EOF
+print $_;
+exit 0;
diff --git a/vendor/golang.org/x/sys/unix/mksysctl_openbsd.pl b/vendor/golang.org/x/sys/unix/mksysctl_openbsd.pl
new file mode 100755 (executable)
index 0000000..be67afa
--- /dev/null
@@ -0,0 +1,264 @@
+#!/usr/bin/env perl
+
+# 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.
+
+#
+# Parse the header files for OpenBSD and generate a Go usable sysctl MIB.
+#
+# Build a MIB with each entry being an array containing the level, type and
+# a hash that will contain additional entries if the current entry is a node.
+# We then walk this MIB and create a flattened sysctl name to OID hash.
+#
+
+use strict;
+
+if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
+       print STDERR "GOARCH or GOOS not defined in environment\n";
+       exit 1;
+}
+
+my $debug = 0;
+my %ctls = ();
+
+my @headers = qw (
+       sys/sysctl.h
+       sys/socket.h
+       sys/tty.h
+       sys/malloc.h
+       sys/mount.h
+       sys/namei.h
+       sys/sem.h
+       sys/shm.h
+       sys/vmmeter.h
+       uvm/uvm_param.h
+       uvm/uvm_swap_encrypt.h
+       ddb/db_var.h
+       net/if.h
+       net/if_pfsync.h
+       net/pipex.h
+       netinet/in.h
+       netinet/icmp_var.h
+       netinet/igmp_var.h
+       netinet/ip_ah.h
+       netinet/ip_carp.h
+       netinet/ip_divert.h
+       netinet/ip_esp.h
+       netinet/ip_ether.h
+       netinet/ip_gre.h
+       netinet/ip_ipcomp.h
+       netinet/ip_ipip.h
+       netinet/pim_var.h
+       netinet/tcp_var.h
+       netinet/udp_var.h
+       netinet6/in6.h
+       netinet6/ip6_divert.h
+       netinet6/pim6_var.h
+       netinet/icmp6.h
+       netmpls/mpls.h
+);
+
+my @ctls = qw (
+       kern
+       vm
+       fs
+       net
+       #debug                          # Special handling required
+       hw
+       #machdep                        # Arch specific
+       user
+       ddb
+       #vfs                            # Special handling required
+       fs.posix
+       kern.forkstat
+       kern.intrcnt
+       kern.malloc
+       kern.nchstats
+       kern.seminfo
+       kern.shminfo
+       kern.timecounter
+       kern.tty
+       kern.watchdog
+       net.bpf
+       net.ifq
+       net.inet
+       net.inet.ah
+       net.inet.carp
+       net.inet.divert
+       net.inet.esp
+       net.inet.etherip
+       net.inet.gre
+       net.inet.icmp
+       net.inet.igmp
+       net.inet.ip
+       net.inet.ip.ifq
+       net.inet.ipcomp
+       net.inet.ipip
+       net.inet.mobileip
+       net.inet.pfsync
+       net.inet.pim
+       net.inet.tcp
+       net.inet.udp
+       net.inet6
+       net.inet6.divert
+       net.inet6.ip6
+       net.inet6.icmp6
+       net.inet6.pim6
+       net.inet6.tcp6
+       net.inet6.udp6
+       net.mpls
+       net.mpls.ifq
+       net.key
+       net.pflow
+       net.pfsync
+       net.pipex
+       net.rt
+       vm.swapencrypt
+       #vfsgenctl                      # Special handling required
+);
+
+# Node name "fixups"
+my %ctl_map = (
+       "ipproto" => "net.inet",
+       "net.inet.ipproto" => "net.inet",
+       "net.inet6.ipv6proto" => "net.inet6",
+       "net.inet6.ipv6" => "net.inet6.ip6",
+       "net.inet.icmpv6" => "net.inet6.icmp6",
+       "net.inet6.divert6" => "net.inet6.divert",
+       "net.inet6.tcp6" => "net.inet.tcp",
+       "net.inet6.udp6" => "net.inet.udp",
+       "mpls" => "net.mpls",
+       "swpenc" => "vm.swapencrypt"
+);
+
+# Node mappings
+my %node_map = (
+       "net.inet.ip.ifq" => "net.ifq",
+       "net.inet.pfsync" => "net.pfsync",
+       "net.mpls.ifq" => "net.ifq"
+);
+
+my $ctlname;
+my %mib = ();
+my %sysctl = ();
+my $node;
+
+sub debug() {
+       print STDERR "$_[0]\n" if $debug;
+}
+
+# Walk the MIB and build a sysctl name to OID mapping.
+sub build_sysctl() {
+       my ($node, $name, $oid) = @_;
+       my %node = %{$node};
+       my @oid = @{$oid};
+
+       foreach my $key (sort keys %node) {
+               my @node = @{$node{$key}};
+               my $nodename = $name.($name ne '' ? '.' : '').$key;
+               my @nodeoid = (@oid, $node[0]);
+               if ($node[1] eq 'CTLTYPE_NODE') {
+                       if (exists $node_map{$nodename}) {
+                               $node = \%mib;
+                               $ctlname = $node_map{$nodename};
+                               foreach my $part (split /\./, $ctlname) {
+                                       $node = \%{@{$$node{$part}}[2]};
+                               }
+                       } else {
+                               $node = $node[2];
+                       }
+                       &build_sysctl($node, $nodename, \@nodeoid);
+               } elsif ($node[1] ne '') {
+                       $sysctl{$nodename} = \@nodeoid;
+               }
+       }
+}
+
+foreach my $ctl (@ctls) {
+       $ctls{$ctl} = $ctl;
+}
+
+# Build MIB
+foreach my $header (@headers) {
+       &debug("Processing $header...");
+       open HEADER, "/usr/include/$header" ||
+           print STDERR "Failed to open $header\n";
+       while (<HEADER>) {
+               if ($_ =~ /^#define\s+(CTL_NAMES)\s+{/ ||
+                   $_ =~ /^#define\s+(CTL_(.*)_NAMES)\s+{/ ||
+                   $_ =~ /^#define\s+((.*)CTL_NAMES)\s+{/) {
+                       if ($1 eq 'CTL_NAMES') {
+                               # Top level.
+                               $node = \%mib;
+                       } else {
+                               # Node.
+                               my $nodename = lc($2);
+                               if ($header =~ /^netinet\//) {
+                                       $ctlname = "net.inet.$nodename";
+                               } elsif ($header =~ /^netinet6\//) {
+                                       $ctlname = "net.inet6.$nodename";
+                               } elsif ($header =~ /^net\//) {
+                                       $ctlname = "net.$nodename";
+                               } else {
+                                       $ctlname = "$nodename";
+                                       $ctlname =~ s/^(fs|net|kern)_/$1\./;
+                               }
+                               if (exists $ctl_map{$ctlname}) {
+                                       $ctlname = $ctl_map{$ctlname};
+                               }
+                               if (not exists $ctls{$ctlname}) {
+                                       &debug("Ignoring $ctlname...");
+                                       next;
+                               }
+
+                               # Walk down from the top of the MIB.
+                               $node = \%mib;
+                               foreach my $part (split /\./, $ctlname) {
+                                       if (not exists $$node{$part}) {
+                                               &debug("Missing node $part");
+                                               $$node{$part} = [ 0, '', {} ];
+                                       }
+                                       $node = \%{@{$$node{$part}}[2]};
+                               }
+                       }
+
+                       # Populate current node with entries.
+                       my $i = -1;
+                       while (defined($_) && $_ !~ /^}/) {
+                               $_ = <HEADER>;
+                               $i++ if $_ =~ /{.*}/;
+                               next if $_ !~ /{\s+"(\w+)",\s+(CTLTYPE_[A-Z]+)\s+}/;
+                               $$node{$1} = [ $i, $2, {} ];
+                       }
+               }
+       }
+       close HEADER;
+}
+
+&build_sysctl(\%mib, "", []);
+
+print <<EOF;
+// mksysctl_openbsd.pl
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build $ENV{'GOARCH'},$ENV{'GOOS'}
+
+package unix;
+
+type mibentry struct {
+       ctlname string
+       ctloid []_C_int
+}
+
+var sysctlMib = []mibentry {
+EOF
+
+foreach my $name (sort keys %sysctl) {
+       my @oid = @{$sysctl{$name}};
+       print "\t{ \"$name\", []_C_int{ ", join(', ', @oid), " } }, \n";
+}
+
+print <<EOF;
+}
+EOF
diff --git a/vendor/golang.org/x/sys/unix/mksysnum_darwin.pl b/vendor/golang.org/x/sys/unix/mksysnum_darwin.pl
new file mode 100755 (executable)
index 0000000..d3e5147
--- /dev/null
@@ -0,0 +1,39 @@
+#!/usr/bin/env 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 Darwin from sys/syscall.h
+
+use strict;
+
+if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
+       print STDERR "GOARCH or GOOS not defined in environment\n";
+       exit 1;
+}
+
+my $command = "mksysnum_darwin.pl " . join(' ', @ARGV);
+
+print <<EOF;
+// $command
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build $ENV{'GOARCH'},$ENV{'GOOS'}
+
+package unix
+
+const (
+EOF
+
+while(<>){
+       if(/^#define\s+SYS_(\w+)\s+([0-9]+)/){
+               my $name = $1;
+               my $num = $2;
+               $name =~ y/a-z/A-Z/;
+               print " SYS_$name = $num;"
+       }
+}
+
+print <<EOF;
+)
+EOF
diff --git a/vendor/golang.org/x/sys/unix/mksysnum_dragonfly.pl b/vendor/golang.org/x/sys/unix/mksysnum_dragonfly.pl
new file mode 100755 (executable)
index 0000000..266a248
--- /dev/null
@@ -0,0 +1,50 @@
+#!/usr/bin/env 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 DragonFly from master list
+# (for example, /usr/src/sys/kern/syscalls.master).
+
+use strict;
+
+if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
+       print STDERR "GOARCH or GOOS not defined in environment\n";
+       exit 1;
+}
+
+my $command = "mksysnum_dragonfly.pl " . join(' ', @ARGV);
+
+print <<EOF;
+// $command
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build $ENV{'GOARCH'},$ENV{'GOOS'}
+
+package unix
+
+const (
+EOF
+
+while(<>){
+       if(/^([0-9]+)\s+STD\s+({ \S+\s+(\w+).*)$/){
+               my $num = $1;
+               my $proto = $2;
+               my $name = "SYS_$3";
+               $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/vendor/golang.org/x/sys/unix/mksysnum_freebsd.pl b/vendor/golang.org/x/sys/unix/mksysnum_freebsd.pl
new file mode 100755 (executable)
index 0000000..b767e12
--- /dev/null
@@ -0,0 +1,63 @@
+#!/usr/bin/env 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 FreeBSD from master list
+# (for example, /usr/src/sys/kern/syscalls.master).
+
+use strict;
+
+if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
+       print STDERR "GOARCH or GOOS not defined in environment\n";
+       exit 1;
+}
+
+my $command = "mksysnum_freebsd.pl " . join(' ', @ARGV);
+
+print <<EOF;
+// $command
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build $ENV{'GOARCH'},$ENV{'GOOS'}
+
+package unix
+
+const (
+EOF
+
+while(<>){
+       if(/^([0-9]+)\s+\S+\s+STD\s+({ \S+\s+(\w+).*)$/){
+               my $num = $1;
+               my $proto = $2;
+               my $name = "SYS_$3";
+               $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';
+               }
+               if($name =~ /^SYS_CAP_+/ || $name =~ /^SYS___CAP_+/){
+                       next
+               }
+
+               print " $name = $num;  // $proto\n";
+
+               # We keep Capsicum syscall numbers for FreeBSD
+               # 9-STABLE here because we are not sure whether they
+               # are mature and stable.
+               if($num == 513){
+                       print " SYS_CAP_NEW = 514 // { int cap_new(int fd, uint64_t rights); }\n";
+                       print " SYS_CAP_GETRIGHTS = 515 // { int cap_getrights(int fd, \\\n";
+                       print " SYS_CAP_ENTER = 516 // { int cap_enter(void); }\n";
+                       print " SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); }\n";
+               }
+       }
+}
+
+print <<EOF;
+)
+EOF
diff --git a/vendor/golang.org/x/sys/unix/mksysnum_linux.pl b/vendor/golang.org/x/sys/unix/mksysnum_linux.pl
new file mode 100755 (executable)
index 0000000..4d4017d
--- /dev/null
@@ -0,0 +1,58 @@
+#!/usr/bin/env 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.
+
+use strict;
+
+if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
+       print STDERR "GOARCH or GOOS not defined in environment\n";
+       exit 1;
+}
+
+my $command = "mksysnum_linux.pl ". join(' ', @ARGV);
+
+print <<EOF;
+// $command
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build $ENV{'GOARCH'},$ENV{'GOOS'}
+
+package unix
+
+const(
+EOF
+
+sub fmt {
+       my ($name, $num) = @_;
+       if($num > 999){
+               # ignore deprecated syscalls that are no longer implemented
+               # https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/uapi/asm-generic/unistd.h?id=refs/heads/master#n716
+               return;
+       }
+       $name =~ y/a-z/A-Z/;
+       print " SYS_$name = $num;\n";
+}
+
+my $prev;
+open(GCC, "gcc -E -dD $ARGV[0] |") || die "can't run gcc";
+while(<GCC>){
+       if(/^#define __NR_syscalls\s+/) {
+               # ignore redefinitions of __NR_syscalls
+       }
+       elsif(/^#define __NR_(\w+)\s+([0-9]+)/){
+               $prev = $2;
+               fmt($1, $2);
+       }
+       elsif(/^#define __NR3264_(\w+)\s+([0-9]+)/){
+               $prev = $2;
+               fmt($1, $2);
+       }
+       elsif(/^#define __NR_(\w+)\s+\(\w+\+\s*([0-9]+)\)/){
+               fmt($1, $prev+$2)
+       }
+}
+
+print <<EOF;
+)
+EOF
diff --git a/vendor/golang.org/x/sys/unix/mksysnum_netbsd.pl b/vendor/golang.org/x/sys/unix/mksysnum_netbsd.pl
new file mode 100755 (executable)
index 0000000..e74616a
--- /dev/null
@@ -0,0 +1,58 @@
+#!/usr/bin/env 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;
+
+if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
+       print STDERR "GOARCH or GOOS not defined in environment\n";
+       exit 1;
+}
+
+my $command = "mksysnum_netbsd.pl " . join(' ', @ARGV);
+
+print <<EOF;
+// $command
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build $ENV{'GOARCH'},$ENV{'GOOS'}
+
+package unix
+
+const (
+EOF
+
+my $line = '';
+while(<>){
+       if($line =~ /^(.*)\\$/) {
+               # Handle continuation
+               $line = $1;
+               $_ =~ s/^\s+//;
+               $line .= $_;
+       } else {
+               # New line
+               $line = $_;
+       }
+       next if $line =~ /\\$/;
+       if($line =~ /^([0-9]+)\s+((STD)|(NOERR))\s+(RUMP\s+)?({\s+\S+\s*\*?\s*\|(\S+)\|(\S*)\|(\w+).*\s+})(\s+(\S+))?$/) {
+               my $num = $1;
+               my $proto = $6;
+               my $compat = $8;
+               my $name = "$7_$9";
+
+               $name = "$7_$11" if $11 ne '';
+               $name =~ y/a-z/A-Z/;
+
+               if($compat eq '' || $compat eq '30' || $compat eq '50') {
+                       print " $name = $num;  // $proto\n";
+               }
+       }
+}
+
+print <<EOF;
+)
+EOF
diff --git a/vendor/golang.org/x/sys/unix/mksysnum_openbsd.pl b/vendor/golang.org/x/sys/unix/mksysnum_openbsd.pl
new file mode 100755 (executable)
index 0000000..ae5aad5
--- /dev/null
@@ -0,0 +1,50 @@
+#!/usr/bin/env 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;
+
+if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
+       print STDERR "GOARCH or GOOS not defined in environment\n";
+       exit 1;
+}
+
+my $command = "mksysnum_openbsd.pl " . join(' ', @ARGV);
+
+print <<EOF;
+// $command
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build $ENV{'GOARCH'},$ENV{'GOOS'}
+
+package unix
+
+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/vendor/golang.org/x/sys/unix/race.go b/vendor/golang.org/x/sys/unix/race.go
new file mode 100644 (file)
index 0000000..3c7627e
--- /dev/null
@@ -0,0 +1,30 @@
+// Copyright 2012 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.
+
+// +build darwin,race linux,race freebsd,race
+
+package unix
+
+import (
+       "runtime"
+       "unsafe"
+)
+
+const raceenabled = true
+
+func raceAcquire(addr unsafe.Pointer) {
+       runtime.RaceAcquire(addr)
+}
+
+func raceReleaseMerge(addr unsafe.Pointer) {
+       runtime.RaceReleaseMerge(addr)
+}
+
+func raceReadRange(addr unsafe.Pointer, len int) {
+       runtime.RaceReadRange(addr, len)
+}
+
+func raceWriteRange(addr unsafe.Pointer, len int) {
+       runtime.RaceWriteRange(addr, len)
+}
diff --git a/vendor/golang.org/x/sys/unix/race0.go b/vendor/golang.org/x/sys/unix/race0.go
new file mode 100644 (file)
index 0000000..f8678e0
--- /dev/null
@@ -0,0 +1,25 @@
+// Copyright 2012 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.
+
+// +build darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly
+
+package unix
+
+import (
+       "unsafe"
+)
+
+const raceenabled = false
+
+func raceAcquire(addr unsafe.Pointer) {
+}
+
+func raceReleaseMerge(addr unsafe.Pointer) {
+}
+
+func raceReadRange(addr unsafe.Pointer, len int) {
+}
+
+func raceWriteRange(addr unsafe.Pointer, len int) {
+}
diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_linux.go b/vendor/golang.org/x/sys/unix/sockcmsg_linux.go
new file mode 100644 (file)
index 0000000..d9ff473
--- /dev/null
@@ -0,0 +1,36 @@
+// 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.
+
+// Socket control messages
+
+package unix
+
+import "unsafe"
+
+// UnixCredentials encodes credentials into a socket control message
+// for sending to another process. This can be used for
+// authentication.
+func UnixCredentials(ucred *Ucred) []byte {
+       b := make([]byte, CmsgSpace(SizeofUcred))
+       h := (*Cmsghdr)(unsafe.Pointer(&b[0]))
+       h.Level = SOL_SOCKET
+       h.Type = SCM_CREDENTIALS
+       h.SetLen(CmsgLen(SizeofUcred))
+       *((*Ucred)(cmsgData(h))) = *ucred
+       return b
+}
+
+// ParseUnixCredentials decodes a socket control message that contains
+// credentials in a Ucred structure. To receive such a message, the
+// SO_PASSCRED option must be enabled on the socket.
+func ParseUnixCredentials(m *SocketControlMessage) (*Ucred, error) {
+       if m.Header.Level != SOL_SOCKET {
+               return nil, EINVAL
+       }
+       if m.Header.Type != SCM_CREDENTIALS {
+               return nil, EINVAL
+       }
+       ucred := *(*Ucred)(unsafe.Pointer(&m.Data[0]))
+       return &ucred, nil
+}
diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_unix.go b/vendor/golang.org/x/sys/unix/sockcmsg_unix.go
new file mode 100644 (file)
index 0000000..70af5a7
--- /dev/null
@@ -0,0 +1,103 @@
+// 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.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd solaris
+
+// Socket control messages
+
+package unix
+
+import "unsafe"
+
+// Round the length of a raw sockaddr up to align it properly.
+func cmsgAlignOf(salen int) int {
+       salign := sizeofPtr
+       // NOTE: It seems like 64-bit Darwin and DragonFly BSD kernels
+       // still require 32-bit aligned access to network subsystem.
+       if darwin64Bit || dragonfly64Bit {
+               salign = 4
+       }
+       return (salen + salign - 1) & ^(salign - 1)
+}
+
+// CmsgLen returns the value to store in the Len field of the Cmsghdr
+// structure, taking into account any necessary alignment.
+func CmsgLen(datalen int) int {
+       return cmsgAlignOf(SizeofCmsghdr) + datalen
+}
+
+// CmsgSpace returns the number of bytes an ancillary element with
+// payload of the passed data length occupies.
+func CmsgSpace(datalen int) int {
+       return cmsgAlignOf(SizeofCmsghdr) + cmsgAlignOf(datalen)
+}
+
+func cmsgData(h *Cmsghdr) unsafe.Pointer {
+       return unsafe.Pointer(uintptr(unsafe.Pointer(h)) + uintptr(cmsgAlignOf(SizeofCmsghdr)))
+}
+
+// SocketControlMessage represents a socket control message.
+type SocketControlMessage struct {
+       Header Cmsghdr
+       Data   []byte
+}
+
+// ParseSocketControlMessage parses b as an array of socket control
+// messages.
+func ParseSocketControlMessage(b []byte) ([]SocketControlMessage, error) {
+       var msgs []SocketControlMessage
+       i := 0
+       for i+CmsgLen(0) <= len(b) {
+               h, dbuf, err := socketControlMessageHeaderAndData(b[i:])
+               if err != nil {
+                       return nil, err
+               }
+               m := SocketControlMessage{Header: *h, Data: dbuf}
+               msgs = append(msgs, m)
+               i += cmsgAlignOf(int(h.Len))
+       }
+       return msgs, nil
+}
+
+func socketControlMessageHeaderAndData(b []byte) (*Cmsghdr, []byte, error) {
+       h := (*Cmsghdr)(unsafe.Pointer(&b[0]))
+       if h.Len < SizeofCmsghdr || int(h.Len) > len(b) {
+               return nil, nil, EINVAL
+       }
+       return h, b[cmsgAlignOf(SizeofCmsghdr):h.Len], nil
+}
+
+// UnixRights encodes a set of open file descriptors into a socket
+// control message for sending to another process.
+func UnixRights(fds ...int) []byte {
+       datalen := len(fds) * 4
+       b := make([]byte, CmsgSpace(datalen))
+       h := (*Cmsghdr)(unsafe.Pointer(&b[0]))
+       h.Level = SOL_SOCKET
+       h.Type = SCM_RIGHTS
+       h.SetLen(CmsgLen(datalen))
+       data := cmsgData(h)
+       for _, fd := range fds {
+               *(*int32)(data) = int32(fd)
+               data = unsafe.Pointer(uintptr(data) + 4)
+       }
+       return b
+}
+
+// ParseUnixRights decodes a socket control message that contains an
+// integer array of open file descriptors from another process.
+func ParseUnixRights(m *SocketControlMessage) ([]int, error) {
+       if m.Header.Level != SOL_SOCKET {
+               return nil, EINVAL
+       }
+       if m.Header.Type != SCM_RIGHTS {
+               return nil, EINVAL
+       }
+       fds := make([]int, len(m.Data)>>2)
+       for i, j := 0, 0; i < len(m.Data); i += 4 {
+               fds[j] = int(*(*int32)(unsafe.Pointer(&m.Data[i])))
+               j++
+       }
+       return fds, nil
+}
diff --git a/vendor/golang.org/x/sys/unix/str.go b/vendor/golang.org/x/sys/unix/str.go
new file mode 100644 (file)
index 0000000..35ed664
--- /dev/null
@@ -0,0 +1,26 @@
+// 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.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd solaris
+
+package unix
+
+func itoa(val int) string { // do it here rather than with fmt to avoid dependency
+       if val < 0 {
+               return "-" + uitoa(uint(-val))
+       }
+       return uitoa(uint(val))
+}
+
+func uitoa(val uint) string {
+       var buf [32]byte // big enough for int64
+       i := len(buf) - 1
+       for val >= 10 {
+               buf[i] = byte(val%10 + '0')
+               i--
+               val /= 10
+       }
+       buf[i] = byte(val + '0')
+       return string(buf[i:])
+}
diff --git a/vendor/golang.org/x/sys/unix/syscall.go b/vendor/golang.org/x/sys/unix/syscall.go
new file mode 100644 (file)
index 0000000..6442a99
--- /dev/null
@@ -0,0 +1,74 @@
+// 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.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd solaris
+
+// Package unix contains an interface to the low-level operating system
+// primitives.  OS details vary depending on the underlying system, and
+// by default, godoc will display OS-specific documentation for the current
+// system.  If you want godoc to display OS documentation for another
+// system, set $GOOS and $GOARCH to the desired system.  For example, if
+// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS
+// to freebsd and $GOARCH to arm.
+// The primary use of this package is inside other packages that provide a more
+// portable interface to the system, such as "os", "time" and "net".  Use
+// those packages rather than this one if you can.
+// For details of the functions and data types in this package consult
+// the manuals for the appropriate operating system.
+// These calls return err == nil to indicate success; otherwise
+// err represents an operating system error describing the failure and
+// holds a value of type syscall.Errno.
+package unix // import "golang.org/x/sys/unix"
+
+import "unsafe"
+
+// ByteSliceFromString returns a NUL-terminated slice of bytes
+// containing the text of s. If s contains a NUL byte at any
+// location, it returns (nil, EINVAL).
+func ByteSliceFromString(s string) ([]byte, error) {
+       for i := 0; i < len(s); i++ {
+               if s[i] == 0 {
+                       return nil, EINVAL
+               }
+       }
+       a := make([]byte, len(s)+1)
+       copy(a, s)
+       return a, nil
+}
+
+// BytePtrFromString returns a pointer to a NUL-terminated array of
+// bytes containing the text of s. If s contains a NUL byte at any
+// location, it returns (nil, EINVAL).
+func BytePtrFromString(s string) (*byte, error) {
+       a, err := ByteSliceFromString(s)
+       if err != nil {
+               return nil, err
+       }
+       return &a[0], nil
+}
+
+// Single-word zero for use when we need a valid pointer to 0 bytes.
+// See mkunix.pl.
+var _zero uintptr
+
+func (ts *Timespec) Unix() (sec int64, nsec int64) {
+       return int64(ts.Sec), int64(ts.Nsec)
+}
+
+func (tv *Timeval) Unix() (sec int64, nsec int64) {
+       return int64(tv.Sec), int64(tv.Usec) * 1000
+}
+
+func (ts *Timespec) Nano() int64 {
+       return int64(ts.Sec)*1e9 + int64(ts.Nsec)
+}
+
+func (tv *Timeval) Nano() int64 {
+       return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000
+}
+
+// use is a no-op, but the compiler cannot see that it is.
+// Calling use(p) ensures that p is kept live until that point.
+//go:noescape
+func use(p unsafe.Pointer)
diff --git a/vendor/golang.org/x/sys/unix/syscall_bsd.go b/vendor/golang.org/x/sys/unix/syscall_bsd.go
new file mode 100644 (file)
index 0000000..e967176
--- /dev/null
@@ -0,0 +1,628 @@
+// 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.
+
+// +build darwin dragonfly freebsd netbsd openbsd
+
+// BSD system call wrappers shared by *BSD based systems
+// including OS X (Darwin) and FreeBSD.  Like the other
+// syscall_*.go files it is compiled as Go code but also
+// used as input to mksyscall which parses the //sys
+// lines and generates system call stubs.
+
+package unix
+
+import (
+       "runtime"
+       "syscall"
+       "unsafe"
+)
+
+/*
+ * Wrapped
+ */
+
+//sysnb        getgroups(ngid int, gid *_Gid_t) (n int, err error)
+//sysnb        setgroups(ngid int, gid *_Gid_t) (err error)
+
+func Getgroups() (gids []int, err error) {
+       n, err := getgroups(0, nil)
+       if err != nil {
+               return nil, err
+       }
+       if n == 0 {
+               return nil, nil
+       }
+
+       // Sanity check group count.  Max is 16 on BSD.
+       if n < 0 || n > 1000 {
+               return nil, EINVAL
+       }
+
+       a := make([]_Gid_t, n)
+       n, err = getgroups(n, &a[0])
+       if err != nil {
+               return nil, err
+       }
+       gids = make([]int, n)
+       for i, v := range a[0:n] {
+               gids[i] = int(v)
+       }
+       return
+}
+
+func Setgroups(gids []int) (err error) {
+       if len(gids) == 0 {
+               return setgroups(0, nil)
+       }
+
+       a := make([]_Gid_t, len(gids))
+       for i, v := range gids {
+               a[i] = _Gid_t(v)
+       }
+       return setgroups(len(a), &a[0])
+}
+
+func ReadDirent(fd int, buf []byte) (n int, err error) {
+       // Final argument is (basep *uintptr) and the syscall doesn't take nil.
+       // 64 bits should be enough. (32 bits isn't even on 386). Since the
+       // actual system call is getdirentries64, 64 is a good guess.
+       // TODO(rsc): Can we use a single global basep for all calls?
+       var base = (*uintptr)(unsafe.Pointer(new(uint64)))
+       return Getdirentries(fd, buf, base)
+}
+
+// Wait status is 7 bits at bottom, either 0 (exited),
+// 0x7F (stopped), or a signal number that caused an exit.
+// The 0x80 bit is whether there was a core dump.
+// An extra number (exit code, signal causing a stop)
+// is in the high bits.
+
+type WaitStatus uint32
+
+const (
+       mask  = 0x7F
+       core  = 0x80
+       shift = 8
+
+       exited  = 0
+       stopped = 0x7F
+)
+
+func (w WaitStatus) Exited() bool { return w&mask == exited }
+
+func (w WaitStatus) ExitStatus() int {
+       if w&mask != exited {
+               return -1
+       }
+       return int(w >> shift)
+}
+
+func (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != 0 }
+
+func (w WaitStatus) Signal() syscall.Signal {
+       sig := syscall.Signal(w & mask)
+       if sig == stopped || sig == 0 {
+               return -1
+       }
+       return sig
+}
+
+func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }
+
+func (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP }
+
+func (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP }
+
+func (w WaitStatus) StopSignal() syscall.Signal {
+       if !w.Stopped() {
+               return -1
+       }
+       return syscall.Signal(w>>shift) & 0xFF
+}
+
+func (w WaitStatus) TrapCause() int { return -1 }
+
+//sys  wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error)
+
+func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {
+       var status _C_int
+       wpid, err = wait4(pid, &status, options, rusage)
+       if wstatus != nil {
+               *wstatus = WaitStatus(status)
+       }
+       return
+}
+
+//sys  accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
+//sys  bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
+//sys  connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
+//sysnb        socket(domain int, typ int, proto int) (fd int, err error)
+//sys  getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)
+//sys  setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)
+//sysnb        getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
+//sysnb        getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
+//sys  Shutdown(s int, how int) (err error)
+
+func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {
+       if sa.Port < 0 || sa.Port > 0xFFFF {
+               return nil, 0, EINVAL
+       }
+       sa.raw.Len = SizeofSockaddrInet4
+       sa.raw.Family = AF_INET
+       p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
+       p[0] = byte(sa.Port >> 8)
+       p[1] = byte(sa.Port)
+       for i := 0; i < len(sa.Addr); i++ {
+               sa.raw.Addr[i] = sa.Addr[i]
+       }
+       return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil
+}
+
+func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {
+       if sa.Port < 0 || sa.Port > 0xFFFF {
+               return nil, 0, EINVAL
+       }
+       sa.raw.Len = SizeofSockaddrInet6
+       sa.raw.Family = AF_INET6
+       p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
+       p[0] = byte(sa.Port >> 8)
+       p[1] = byte(sa.Port)
+       sa.raw.Scope_id = sa.ZoneId
+       for i := 0; i < len(sa.Addr); i++ {
+               sa.raw.Addr[i] = sa.Addr[i]
+       }
+       return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil
+}
+
+func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {
+       name := sa.Name
+       n := len(name)
+       if n >= len(sa.raw.Path) || n == 0 {
+               return nil, 0, EINVAL
+       }
+       sa.raw.Len = byte(3 + n) // 2 for Family, Len; 1 for NUL
+       sa.raw.Family = AF_UNIX
+       for i := 0; i < n; i++ {
+               sa.raw.Path[i] = int8(name[i])
+       }
+       return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil
+}
+
+func (sa *SockaddrDatalink) sockaddr() (unsafe.Pointer, _Socklen, error) {
+       if sa.Index == 0 {
+               return nil, 0, EINVAL
+       }
+       sa.raw.Len = sa.Len
+       sa.raw.Family = AF_LINK
+       sa.raw.Index = sa.Index
+       sa.raw.Type = sa.Type
+       sa.raw.Nlen = sa.Nlen
+       sa.raw.Alen = sa.Alen
+       sa.raw.Slen = sa.Slen
+       for i := 0; i < len(sa.raw.Data); i++ {
+               sa.raw.Data[i] = sa.Data[i]
+       }
+       return unsafe.Pointer(&sa.raw), SizeofSockaddrDatalink, nil
+}
+
+func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) {
+       switch rsa.Addr.Family {
+       case AF_LINK:
+               pp := (*RawSockaddrDatalink)(unsafe.Pointer(rsa))
+               sa := new(SockaddrDatalink)
+               sa.Len = pp.Len
+               sa.Family = pp.Family
+               sa.Index = pp.Index
+               sa.Type = pp.Type
+               sa.Nlen = pp.Nlen
+               sa.Alen = pp.Alen
+               sa.Slen = pp.Slen
+               for i := 0; i < len(sa.Data); i++ {
+                       sa.Data[i] = pp.Data[i]
+               }
+               return sa, nil
+
+       case AF_UNIX:
+               pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))
+               if pp.Len < 2 || pp.Len > SizeofSockaddrUnix {
+                       return nil, EINVAL
+               }
+               sa := new(SockaddrUnix)
+
+               // Some BSDs include the trailing NUL in the length, whereas
+               // others do not. Work around this by subtracting the leading
+               // family and len. The path is then scanned to see if a NUL
+               // terminator still exists within the length.
+               n := int(pp.Len) - 2 // subtract leading Family, Len
+               for i := 0; i < n; i++ {
+                       if pp.Path[i] == 0 {
+                               // found early NUL; assume Len included the NUL
+                               // or was overestimating.
+                               n = i
+                               break
+                       }
+               }
+               bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]
+               sa.Name = string(bytes)
+               return sa, nil
+
+       case AF_INET:
+               pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))
+               sa := new(SockaddrInet4)
+               p := (*[2]byte)(unsafe.Pointer(&pp.Port))
+               sa.Port = int(p[0])<<8 + int(p[1])
+               for i := 0; i < len(sa.Addr); i++ {
+                       sa.Addr[i] = pp.Addr[i]
+               }
+               return sa, nil
+
+       case AF_INET6:
+               pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))
+               sa := new(SockaddrInet6)
+               p := (*[2]byte)(unsafe.Pointer(&pp.Port))
+               sa.Port = int(p[0])<<8 + int(p[1])
+               sa.ZoneId = pp.Scope_id
+               for i := 0; i < len(sa.Addr); i++ {
+                       sa.Addr[i] = pp.Addr[i]
+               }
+               return sa, nil
+       }
+       return nil, EAFNOSUPPORT
+}
+
+func Accept(fd int) (nfd int, sa Sockaddr, err error) {
+       var rsa RawSockaddrAny
+       var len _Socklen = SizeofSockaddrAny
+       nfd, err = accept(fd, &rsa, &len)
+       if err != nil {
+               return
+       }
+       if runtime.GOOS == "darwin" && len == 0 {
+               // Accepted socket has no address.
+               // This is likely due to a bug in xnu kernels,
+               // where instead of ECONNABORTED error socket
+               // is accepted, but has no address.
+               Close(nfd)
+               return 0, nil, ECONNABORTED
+       }
+       sa, err = anyToSockaddr(&rsa)
+       if err != nil {
+               Close(nfd)
+               nfd = 0
+       }
+       return
+}
+
+func Getsockname(fd int) (sa Sockaddr, err error) {
+       var rsa RawSockaddrAny
+       var len _Socklen = SizeofSockaddrAny
+       if err = getsockname(fd, &rsa, &len); err != nil {
+               return
+       }
+       // TODO(jsing): DragonFly has a "bug" (see issue 3349), which should be
+       // reported upstream.
+       if runtime.GOOS == "dragonfly" && rsa.Addr.Family == AF_UNSPEC && rsa.Addr.Len == 0 {
+               rsa.Addr.Family = AF_UNIX
+               rsa.Addr.Len = SizeofSockaddrUnix
+       }
+       return anyToSockaddr(&rsa)
+}
+
+//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error)
+
+func GetsockoptByte(fd, level, opt int) (value byte, err error) {
+       var n byte
+       vallen := _Socklen(1)
+       err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)
+       return n, err
+}
+
+func GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) {
+       vallen := _Socklen(4)
+       err = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)
+       return value, err
+}
+
+func GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) {
+       var value IPMreq
+       vallen := _Socklen(SizeofIPMreq)
+       err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
+       return &value, err
+}
+
+func GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) {
+       var value IPv6Mreq
+       vallen := _Socklen(SizeofIPv6Mreq)
+       err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
+       return &value, err
+}
+
+func GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) {
+       var value IPv6MTUInfo
+       vallen := _Socklen(SizeofIPv6MTUInfo)
+       err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
+       return &value, err
+}
+
+func GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) {
+       var value ICMPv6Filter
+       vallen := _Socklen(SizeofICMPv6Filter)
+       err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
+       return &value, err
+}
+
+//sys   recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)
+//sys   sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)
+//sys  recvmsg(s int, msg *Msghdr, flags int) (n int, err error)
+
+func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {
+       var msg Msghdr
+       var rsa RawSockaddrAny
+       msg.Name = (*byte)(unsafe.Pointer(&rsa))
+       msg.Namelen = uint32(SizeofSockaddrAny)
+       var iov Iovec
+       if len(p) > 0 {
+               iov.Base = (*byte)(unsafe.Pointer(&p[0]))
+               iov.SetLen(len(p))
+       }
+       var dummy byte
+       if len(oob) > 0 {
+               // receive at least one normal byte
+               if len(p) == 0 {
+                       iov.Base = &dummy
+                       iov.SetLen(1)
+               }
+               msg.Control = (*byte)(unsafe.Pointer(&oob[0]))
+               msg.SetControllen(len(oob))
+       }
+       msg.Iov = &iov
+       msg.Iovlen = 1
+       if n, err = recvmsg(fd, &msg, flags); err != nil {
+               return
+       }
+       oobn = int(msg.Controllen)
+       recvflags = int(msg.Flags)
+       // source address is only specified if the socket is unconnected
+       if rsa.Addr.Family != AF_UNSPEC {
+               from, err = anyToSockaddr(&rsa)
+       }
+       return
+}
+
+//sys  sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
+
+func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) {
+       _, err = SendmsgN(fd, p, oob, to, flags)
+       return
+}
+
+func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) {
+       var ptr unsafe.Pointer
+       var salen _Socklen
+       if to != nil {
+               ptr, salen, err = to.sockaddr()
+               if err != nil {
+                       return 0, err
+               }
+       }
+       var msg Msghdr
+       msg.Name = (*byte)(unsafe.Pointer(ptr))
+       msg.Namelen = uint32(salen)
+       var iov Iovec
+       if len(p) > 0 {
+               iov.Base = (*byte)(unsafe.Pointer(&p[0]))
+               iov.SetLen(len(p))
+       }
+       var dummy byte
+       if len(oob) > 0 {
+               // send at least one normal byte
+               if len(p) == 0 {
+                       iov.Base = &dummy
+                       iov.SetLen(1)
+               }
+               msg.Control = (*byte)(unsafe.Pointer(&oob[0]))
+               msg.SetControllen(len(oob))
+       }
+       msg.Iov = &iov
+       msg.Iovlen = 1
+       if n, err = sendmsg(fd, &msg, flags); err != nil {
+               return 0, err
+       }
+       if len(oob) > 0 && len(p) == 0 {
+               n = 0
+       }
+       return n, nil
+}
+
+//sys  kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error)
+
+func Kevent(kq int, changes, events []Kevent_t, timeout *Timespec) (n int, err error) {
+       var change, event unsafe.Pointer
+       if len(changes) > 0 {
+               change = unsafe.Pointer(&changes[0])
+       }
+       if len(events) > 0 {
+               event = unsafe.Pointer(&events[0])
+       }
+       return kevent(kq, change, len(changes), event, len(events), timeout)
+}
+
+//sys  sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL
+
+// sysctlmib translates name to mib number and appends any additional args.
+func sysctlmib(name string, args ...int) ([]_C_int, error) {
+       // Translate name to mib number.
+       mib, err := nametomib(name)
+       if err != nil {
+               return nil, err
+       }
+
+       for _, a := range args {
+               mib = append(mib, _C_int(a))
+       }
+
+       return mib, nil
+}
+
+func Sysctl(name string) (string, error) {
+       return SysctlArgs(name)
+}
+
+func SysctlArgs(name string, args ...int) (string, error) {
+       mib, err := sysctlmib(name, args...)
+       if err != nil {
+               return "", err
+       }
+
+       // Find size.
+       n := uintptr(0)
+       if err := sysctl(mib, nil, &n, nil, 0); err != nil {
+               return "", err
+       }
+       if n == 0 {
+               return "", nil
+       }
+
+       // Read into buffer of that size.
+       buf := make([]byte, n)
+       if err := sysctl(mib, &buf[0], &n, nil, 0); err != nil {
+               return "", err
+       }
+
+       // Throw away terminating NUL.
+       if n > 0 && buf[n-1] == '\x00' {
+               n--
+       }
+       return string(buf[0:n]), nil
+}
+
+func SysctlUint32(name string) (uint32, error) {
+       return SysctlUint32Args(name)
+}
+
+func SysctlUint32Args(name string, args ...int) (uint32, error) {
+       mib, err := sysctlmib(name, args...)
+       if err != nil {
+               return 0, err
+       }
+
+       n := uintptr(4)
+       buf := make([]byte, 4)
+       if err := sysctl(mib, &buf[0], &n, nil, 0); err != nil {
+               return 0, err
+       }
+       if n != 4 {
+               return 0, EIO
+       }
+       return *(*uint32)(unsafe.Pointer(&buf[0])), nil
+}
+
+func SysctlUint64(name string, args ...int) (uint64, error) {
+       mib, err := sysctlmib(name, args...)
+       if err != nil {
+               return 0, err
+       }
+
+       n := uintptr(8)
+       buf := make([]byte, 8)
+       if err := sysctl(mib, &buf[0], &n, nil, 0); err != nil {
+               return 0, err
+       }
+       if n != 8 {
+               return 0, EIO
+       }
+       return *(*uint64)(unsafe.Pointer(&buf[0])), nil
+}
+
+func SysctlRaw(name string, args ...int) ([]byte, error) {
+       mib, err := sysctlmib(name, args...)
+       if err != nil {
+               return nil, err
+       }
+
+       // Find size.
+       n := uintptr(0)
+       if err := sysctl(mib, nil, &n, nil, 0); err != nil {
+               return nil, err
+       }
+       if n == 0 {
+               return nil, nil
+       }
+
+       // Read into buffer of that size.
+       buf := make([]byte, n)
+       if err := sysctl(mib, &buf[0], &n, nil, 0); err != nil {
+               return nil, err
+       }
+
+       // The actual call may return less than the original reported required
+       // size so ensure we deal with that.
+       return buf[:n], nil
+}
+
+//sys  utimes(path string, timeval *[2]Timeval) (err error)
+
+func Utimes(path string, tv []Timeval) error {
+       if tv == nil {
+               return utimes(path, nil)
+       }
+       if len(tv) != 2 {
+               return EINVAL
+       }
+       return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
+}
+
+func UtimesNano(path string, ts []Timespec) error {
+       if ts == nil {
+               return utimes(path, nil)
+       }
+       // TODO: The BSDs can do utimensat with SYS_UTIMENSAT but it
+       // isn't supported by darwin so this uses utimes instead
+       if len(ts) != 2 {
+               return EINVAL
+       }
+       // Not as efficient as it could be because Timespec and
+       // Timeval have different types in the different OSes
+       tv := [2]Timeval{
+               NsecToTimeval(TimespecToNsec(ts[0])),
+               NsecToTimeval(TimespecToNsec(ts[1])),
+       }
+       return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
+}
+
+//sys  futimes(fd int, timeval *[2]Timeval) (err error)
+
+func Futimes(fd int, tv []Timeval) error {
+       if tv == nil {
+               return futimes(fd, nil)
+       }
+       if len(tv) != 2 {
+               return EINVAL
+       }
+       return futimes(fd, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
+}
+
+//sys  fcntl(fd int, cmd int, arg int) (val int, err error)
+
+// TODO: wrap
+//     Acct(name nil-string) (err error)
+//     Gethostuuid(uuid *byte, timeout *Timespec) (err error)
+//     Madvise(addr *byte, len int, behav int) (err error)
+//     Mprotect(addr *byte, len int, prot int) (err error)
+//     Msync(addr *byte, len int, flags int) (err error)
+//     Ptrace(req int, pid int, addr uintptr, data int) (ret uintptr, err error)
+
+var mapper = &mmapper{
+       active: make(map[*byte][]byte),
+       mmap:   mmap,
+       munmap: munmap,
+}
+
+func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {
+       return mapper.Mmap(fd, offset, length, prot, flags)
+}
+
+func Munmap(b []byte) (err error) {
+       return mapper.Munmap(b)
+}
diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.go b/vendor/golang.org/x/sys/unix/syscall_darwin.go
new file mode 100644 (file)
index 0000000..0d1771c
--- /dev/null
@@ -0,0 +1,509 @@
+// 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.
+
+// Darwin 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 unix
+
+import (
+       errorspkg "errors"
+       "syscall"
+       "unsafe"
+)
+
+const ImplementsGetwd = true
+
+func Getwd() (string, error) {
+       buf := make([]byte, 2048)
+       attrs, err := getAttrList(".", attrList{CommonAttr: attrCmnFullpath}, buf, 0)
+       if err == nil && len(attrs) == 1 && len(attrs[0]) >= 2 {
+               wd := string(attrs[0])
+               // Sanity check that it's an absolute path and ends
+               // in a null byte, which we then strip.
+               if wd[0] == '/' && wd[len(wd)-1] == 0 {
+                       return wd[:len(wd)-1], nil
+               }
+       }
+       // If pkg/os/getwd.go gets ENOTSUP, it will fall back to the
+       // slow algorithm.
+       return "", ENOTSUP
+}
+
+type SockaddrDatalink struct {
+       Len    uint8
+       Family uint8
+       Index  uint16
+       Type   uint8
+       Nlen   uint8
+       Alen   uint8
+       Slen   uint8
+       Data   [12]int8
+       raw    RawSockaddrDatalink
+}
+
+// Translate "kern.hostname" to []_C_int{0,1,2,3}.
+func nametomib(name string) (mib []_C_int, err error) {
+       const siz = unsafe.Sizeof(mib[0])
+
+       // NOTE(rsc): It seems strange to set the buffer to have
+       // size CTL_MAXNAME+2 but use only CTL_MAXNAME
+       // as the size.  I don't know why the +2 is here, but the
+       // kernel uses +2 for its own implementation of this function.
+       // I am scared that if we don't include the +2 here, the kernel
+       // will silently write 2 words farther than we specify
+       // and we'll get memory corruption.
+       var buf [CTL_MAXNAME + 2]_C_int
+       n := uintptr(CTL_MAXNAME) * siz
+
+       p := (*byte)(unsafe.Pointer(&buf[0]))
+       bytes, err := ByteSliceFromString(name)
+       if err != nil {
+               return nil, err
+       }
+
+       // Magic sysctl: "setting" 0.3 to a string name
+       // lets you read back the array of integers form.
+       if err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil {
+               return nil, err
+       }
+       return buf[0 : n/siz], nil
+}
+
+// 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.Ino == 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
+}
+
+//sys   ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
+func PtraceAttach(pid int) (err error) { return ptrace(PT_ATTACH, pid, 0, 0) }
+func PtraceDetach(pid int) (err error) { return ptrace(PT_DETACH, pid, 0, 0) }
+
+const (
+       attrBitMapCount = 5
+       attrCmnFullpath = 0x08000000
+)
+
+type attrList struct {
+       bitmapCount uint16
+       _           uint16
+       CommonAttr  uint32
+       VolAttr     uint32
+       DirAttr     uint32
+       FileAttr    uint32
+       Forkattr    uint32
+}
+
+func getAttrList(path string, attrList attrList, attrBuf []byte, options uint) (attrs [][]byte, err error) {
+       if len(attrBuf) < 4 {
+               return nil, errorspkg.New("attrBuf too small")
+       }
+       attrList.bitmapCount = attrBitMapCount
+
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return nil, err
+       }
+
+       _, _, e1 := Syscall6(
+               SYS_GETATTRLIST,
+               uintptr(unsafe.Pointer(_p0)),
+               uintptr(unsafe.Pointer(&attrList)),
+               uintptr(unsafe.Pointer(&attrBuf[0])),
+               uintptr(len(attrBuf)),
+               uintptr(options),
+               0,
+       )
+       if e1 != 0 {
+               return nil, e1
+       }
+       size := *(*uint32)(unsafe.Pointer(&attrBuf[0]))
+
+       // dat is the section of attrBuf that contains valid data,
+       // without the 4 byte length header. All attribute offsets
+       // are relative to dat.
+       dat := attrBuf
+       if int(size) < len(attrBuf) {
+               dat = dat[:size]
+       }
+       dat = dat[4:] // remove length prefix
+
+       for i := uint32(0); int(i) < len(dat); {
+               header := dat[i:]
+               if len(header) < 8 {
+                       return attrs, errorspkg.New("truncated attribute header")
+               }
+               datOff := *(*int32)(unsafe.Pointer(&header[0]))
+               attrLen := *(*uint32)(unsafe.Pointer(&header[4]))
+               if datOff < 0 || uint32(datOff)+attrLen > uint32(len(dat)) {
+                       return attrs, errorspkg.New("truncated results; attrBuf too small")
+               }
+               end := uint32(datOff) + attrLen
+               attrs = append(attrs, dat[datOff:end])
+               i = end
+               if r := i % 4; r != 0 {
+                       i += (4 - r)
+               }
+       }
+       return
+}
+
+//sysnb pipe() (r int, w int, err error)
+
+func Pipe(p []int) (err error) {
+       if len(p) != 2 {
+               return EINVAL
+       }
+       p[0], p[1], err = pipe()
+       return
+}
+
+func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
+       var _p0 unsafe.Pointer
+       var bufsize uintptr
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+               bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))
+       }
+       r0, _, e1 := Syscall(SYS_GETFSSTAT64, uintptr(_p0), bufsize, uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+/*
+ * Wrapped
+ */
+
+//sys  kill(pid int, signum int, posix int) (err error)
+
+func Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(signum), 1) }
+
+/*
+ * Exposed directly
+ */
+//sys  Access(path string, mode uint32) (err error)
+//sys  Adjtime(delta *Timeval, olddelta *Timeval) (err error)
+//sys  Chdir(path string) (err error)
+//sys  Chflags(path string, flags int) (err error)
+//sys  Chmod(path string, mode uint32) (err error)
+//sys  Chown(path string, uid int, gid int) (err error)
+//sys  Chroot(path string) (err error)
+//sys  Close(fd int) (err error)
+//sys  Dup(fd int) (nfd int, err error)
+//sys  Dup2(from int, to int) (err error)
+//sys  Exchangedata(path1 string, path2 string, options int) (err error)
+//sys  Exit(code int)
+//sys  Fchdir(fd int) (err error)
+//sys  Fchflags(fd int, flags int) (err error)
+//sys  Fchmod(fd int, mode uint32) (err error)
+//sys  Fchown(fd int, uid int, gid int) (err error)
+//sys  Flock(fd int, how int) (err error)
+//sys  Fpathconf(fd int, name int) (val int, err error)
+//sys  Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
+//sys  Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64
+//sys  Fsync(fd int) (err error)
+//sys  Ftruncate(fd int, length int64) (err error)
+//sys  Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64
+//sys  Getdtablesize() (size int)
+//sysnb        Getegid() (egid int)
+//sysnb        Geteuid() (uid int)
+//sysnb        Getgid() (gid int)
+//sysnb        Getpgid(pid int) (pgid int, err error)
+//sysnb        Getpgrp() (pgrp int)
+//sysnb        Getpid() (pid int)
+//sysnb        Getppid() (ppid int)
+//sys  Getpriority(which int, who int) (prio int, err error)
+//sysnb        Getrlimit(which int, lim *Rlimit) (err error)
+//sysnb        Getrusage(who int, rusage *Rusage) (err error)
+//sysnb        Getsid(pid int) (sid int, err error)
+//sysnb        Getuid() (uid int)
+//sysnb        Issetugid() (tainted bool)
+//sys  Kqueue() (fd int, err error)
+//sys  Lchown(path string, uid int, gid int) (err error)
+//sys  Link(path string, link string) (err error)
+//sys  Listen(s int, backlog int) (err error)
+//sys  Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
+//sys  Mkdir(path string, mode uint32) (err error)
+//sys  Mkfifo(path string, mode uint32) (err error)
+//sys  Mknod(path string, mode uint32, dev int) (err error)
+//sys  Mlock(b []byte) (err error)
+//sys  Mlockall(flags int) (err error)
+//sys  Mprotect(b []byte, prot int) (err error)
+//sys  Munlock(b []byte) (err error)
+//sys  Munlockall() (err error)
+//sys  Open(path string, mode int, perm uint32) (fd int, err error)
+//sys  Pathconf(path string, name int) (val int, err error)
+//sys  Pread(fd int, p []byte, offset int64) (n int, err error)
+//sys  Pwrite(fd int, p []byte, offset int64) (n int, err error)
+//sys  read(fd int, p []byte) (n int, err error)
+//sys  Readlink(path string, buf []byte) (n int, err error)
+//sys  Rename(from string, to string) (err error)
+//sys  Revoke(path string) (err error)
+//sys  Rmdir(path string) (err error)
+//sys  Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
+//sys  Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)
+//sys  Setegid(egid int) (err error)
+//sysnb        Seteuid(euid int) (err error)
+//sysnb        Setgid(gid int) (err error)
+//sys  Setlogin(name string) (err error)
+//sysnb        Setpgid(pid int, pgid int) (err error)
+//sys  Setpriority(which int, who int, prio int) (err error)
+//sys  Setprivexec(flag int) (err error)
+//sysnb        Setregid(rgid int, egid int) (err error)
+//sysnb        Setreuid(ruid int, euid int) (err error)
+//sysnb        Setrlimit(which int, lim *Rlimit) (err error)
+//sysnb        Setsid() (pid int, err error)
+//sysnb        Settimeofday(tp *Timeval) (err error)
+//sysnb        Setuid(uid int) (err error)
+//sys  Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
+//sys  Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64
+//sys  Symlink(path string, link string) (err error)
+//sys  Sync() (err error)
+//sys  Truncate(path string, length int64) (err error)
+//sys  Umask(newmask int) (oldmask int)
+//sys  Undelete(path string) (err error)
+//sys  Unlink(path string) (err error)
+//sys  Unmount(path string, flags int) (err error)
+//sys  write(fd int, p []byte) (n int, err error)
+//sys   mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
+//sys   munmap(addr uintptr, length uintptr) (err error)
+//sys  readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ
+//sys  writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE
+
+/*
+ * Unimplemented
+ */
+// Profil
+// Sigaction
+// Sigprocmask
+// Getlogin
+// Sigpending
+// Sigaltstack
+// Ioctl
+// Reboot
+// Execve
+// Vfork
+// Sbrk
+// Sstk
+// Ovadvise
+// Mincore
+// Setitimer
+// Swapon
+// Select
+// Sigsuspend
+// Readv
+// Writev
+// Nfssvc
+// Getfh
+// Quotactl
+// Mount
+// Csops
+// Waitid
+// Add_profil
+// Kdebug_trace
+// Sigreturn
+// Mmap
+// Mlock
+// Munlock
+// Atsocket
+// Kqueue_from_portset_np
+// Kqueue_portset
+// Getattrlist
+// Setattrlist
+// Getdirentriesattr
+// Searchfs
+// Delete
+// Copyfile
+// Poll
+// Watchevent
+// Waitevent
+// Modwatch
+// Getxattr
+// Fgetxattr
+// Setxattr
+// Fsetxattr
+// Removexattr
+// Fremovexattr
+// Listxattr
+// Flistxattr
+// Fsctl
+// Initgroups
+// Posix_spawn
+// Nfsclnt
+// Fhopen
+// Minherit
+// Semsys
+// Msgsys
+// Shmsys
+// Semctl
+// Semget
+// Semop
+// Msgctl
+// Msgget
+// Msgsnd
+// Msgrcv
+// Shmat
+// Shmctl
+// Shmdt
+// Shmget
+// Shm_open
+// Shm_unlink
+// Sem_open
+// Sem_close
+// Sem_unlink
+// Sem_wait
+// Sem_trywait
+// Sem_post
+// Sem_getvalue
+// Sem_init
+// Sem_destroy
+// Open_extended
+// Umask_extended
+// Stat_extended
+// Lstat_extended
+// Fstat_extended
+// Chmod_extended
+// Fchmod_extended
+// Access_extended
+// Settid
+// Gettid
+// Setsgroups
+// Getsgroups
+// Setwgroups
+// Getwgroups
+// Mkfifo_extended
+// Mkdir_extended
+// Identitysvc
+// Shared_region_check_np
+// Shared_region_map_np
+// __pthread_mutex_destroy
+// __pthread_mutex_init
+// __pthread_mutex_lock
+// __pthread_mutex_trylock
+// __pthread_mutex_unlock
+// __pthread_cond_init
+// __pthread_cond_destroy
+// __pthread_cond_broadcast
+// __pthread_cond_signal
+// Setsid_with_pid
+// __pthread_cond_timedwait
+// Aio_fsync
+// Aio_return
+// Aio_suspend
+// Aio_cancel
+// Aio_error
+// Aio_read
+// Aio_write
+// Lio_listio
+// __pthread_cond_wait
+// Iopolicysys
+// Mlockall
+// Munlockall
+// __pthread_kill
+// __pthread_sigmask
+// __sigwait
+// __disable_threadsignal
+// __pthread_markcancel
+// __pthread_canceled
+// __semwait_signal
+// Proc_info
+// sendfile
+// Stat64_extended
+// Lstat64_extended
+// Fstat64_extended
+// __pthread_chdir
+// __pthread_fchdir
+// Audit
+// Auditon
+// Getauid
+// Setauid
+// Getaudit
+// Setaudit
+// Getaudit_addr
+// Setaudit_addr
+// Auditctl
+// Bsdthread_create
+// Bsdthread_terminate
+// Stack_snapshot
+// Bsdthread_register
+// Workq_open
+// Workq_ops
+// __mac_execve
+// __mac_syscall
+// __mac_get_file
+// __mac_set_file
+// __mac_get_link
+// __mac_set_link
+// __mac_get_proc
+// __mac_set_proc
+// __mac_get_fd
+// __mac_set_fd
+// __mac_get_pid
+// __mac_get_lcid
+// __mac_get_lctx
+// __mac_set_lctx
+// Setlcid
+// Read_nocancel
+// Write_nocancel
+// Open_nocancel
+// Close_nocancel
+// Wait4_nocancel
+// Recvmsg_nocancel
+// Sendmsg_nocancel
+// Recvfrom_nocancel
+// Accept_nocancel
+// Msync_nocancel
+// Fcntl_nocancel
+// Select_nocancel
+// Fsync_nocancel
+// Connect_nocancel
+// Sigsuspend_nocancel
+// Readv_nocancel
+// Writev_nocancel
+// Sendto_nocancel
+// Pread_nocancel
+// Pwrite_nocancel
+// Waitid_nocancel
+// Poll_nocancel
+// Msgsnd_nocancel
+// Msgrcv_nocancel
+// Sem_wait_nocancel
+// Aio_suspend_nocancel
+// __sigwait_nocancel
+// __semwait_signal_nocancel
+// __mac_mount
+// __mac_get_mount
+// __mac_getfsstat
diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_386.go b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go
new file mode 100644 (file)
index 0000000..3195c8b
--- /dev/null
@@ -0,0 +1,79 @@
+// 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.
+
+// +build 386,darwin
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+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 = int32(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 = int32(nsec % 1e9 / 1e3)
+       tv.Sec = int32(nsec / 1e9)
+       return
+}
+
+//sysnb        gettimeofday(tp *Timeval) (sec int32, usec int32, err error)
+func Gettimeofday(tv *Timeval) (err error) {
+       // The tv passed to gettimeofday must be non-nil
+       // but is otherwise unused.  The answers come back
+       // in the two registers.
+       sec, usec, err := gettimeofday(tv)
+       tv.Sec = int32(sec)
+       tv.Usec = int32(usec)
+       return err
+}
+
+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 = uint32(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+       msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+       cmsg.Len = uint32(length)
+}
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+       var length = uint64(count)
+
+       _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(*offset>>32), uintptr(unsafe.Pointer(&length)), 0, 0, 0, 0)
+
+       written = int(length)
+
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
+
+// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
+// of darwin/386 the syscall is called sysctl instead of __sysctl.
+const SYS___SYSCTL = SYS_SYSCTL
diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go
new file mode 100644 (file)
index 0000000..7adb98d
--- /dev/null
@@ -0,0 +1,81 @@
+// 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.
+
+// +build amd64,darwin
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+//sys  Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
+
+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 = 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 = int32(nsec % 1e9 / 1e3)
+       tv.Sec = int64(nsec / 1e9)
+       return
+}
+
+//sysnb        gettimeofday(tp *Timeval) (sec int64, usec int32, err error)
+func Gettimeofday(tv *Timeval) (err error) {
+       // The tv passed to gettimeofday must be non-nil
+       // but is otherwise unused.  The answers come back
+       // in the two registers.
+       sec, usec, err := gettimeofday(tv)
+       tv.Sec = sec
+       tv.Usec = usec
+       return err
+}
+
+func SetKevent(k *Kevent_t, fd, mode, flags int) {
+       k.Ident = uint64(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)
+}
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+       var length = uint64(count)
+
+       _, _, e1 := Syscall6(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(unsafe.Pointer(&length)), 0, 0)
+
+       written = int(length)
+
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
+
+// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
+// of darwin/amd64 the syscall is called sysctl instead of __sysctl.
+const SYS___SYSCTL = SYS_SYSCTL
diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go
new file mode 100644 (file)
index 0000000..e47ffd7
--- /dev/null
@@ -0,0 +1,73 @@
+// Copyright 2015 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 unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+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 = int32(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 = int32(nsec % 1e9 / 1e3)
+       tv.Sec = int32(nsec / 1e9)
+       return
+}
+
+//sysnb        gettimeofday(tp *Timeval) (sec int32, usec int32, err error)
+func Gettimeofday(tv *Timeval) (err error) {
+       // The tv passed to gettimeofday must be non-nil
+       // but is otherwise unused.  The answers come back
+       // in the two registers.
+       sec, usec, err := gettimeofday(tv)
+       tv.Sec = int32(sec)
+       tv.Usec = int32(usec)
+       return err
+}
+
+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 = uint32(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+       msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+       cmsg.Len = uint32(length)
+}
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+       var length = uint64(count)
+
+       _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(*offset>>32), uintptr(unsafe.Pointer(&length)), 0, 0, 0, 0)
+
+       written = int(length)
+
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic
diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go
new file mode 100644 (file)
index 0000000..2560a95
--- /dev/null
@@ -0,0 +1,79 @@
+// Copyright 2015 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.
+
+// +build arm64,darwin
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+func Getpagesize() int { return 16384 }
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+       ts.Sec = 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 = int32(nsec % 1e9 / 1e3)
+       tv.Sec = int64(nsec / 1e9)
+       return
+}
+
+//sysnb        gettimeofday(tp *Timeval) (sec int64, usec int32, err error)
+func Gettimeofday(tv *Timeval) (err error) {
+       // The tv passed to gettimeofday must be non-nil
+       // but is otherwise unused.  The answers come back
+       // in the two registers.
+       sec, usec, err := gettimeofday(tv)
+       tv.Sec = sec
+       tv.Usec = usec
+       return err
+}
+
+func SetKevent(k *Kevent_t, fd, mode, flags int) {
+       k.Ident = uint64(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)
+}
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+       var length = uint64(count)
+
+       _, _, e1 := Syscall6(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(unsafe.Pointer(&length)), 0, 0)
+
+       written = int(length)
+
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic
+
+// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
+// of darwin/arm64 the syscall is called sysctl instead of __sysctl.
+const SYS___SYSCTL = SYS_SYSCTL
diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go
new file mode 100644 (file)
index 0000000..fbbe0dc
--- /dev/null
@@ -0,0 +1,411 @@
+// 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.
+
+// FreeBSD 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 unix
+
+import "unsafe"
+
+type SockaddrDatalink struct {
+       Len    uint8
+       Family uint8
+       Index  uint16
+       Type   uint8
+       Nlen   uint8
+       Alen   uint8
+       Slen   uint8
+       Data   [12]int8
+       Rcf    uint16
+       Route  [16]uint16
+       raw    RawSockaddrDatalink
+}
+
+// Translate "kern.hostname" to []_C_int{0,1,2,3}.
+func nametomib(name string) (mib []_C_int, err error) {
+       const siz = unsafe.Sizeof(mib[0])
+
+       // NOTE(rsc): It seems strange to set the buffer to have
+       // size CTL_MAXNAME+2 but use only CTL_MAXNAME
+       // as the size.  I don't know why the +2 is here, but the
+       // kernel uses +2 for its own implementation of this function.
+       // I am scared that if we don't include the +2 here, the kernel
+       // will silently write 2 words farther than we specify
+       // and we'll get memory corruption.
+       var buf [CTL_MAXNAME + 2]_C_int
+       n := uintptr(CTL_MAXNAME) * siz
+
+       p := (*byte)(unsafe.Pointer(&buf[0]))
+       bytes, err := ByteSliceFromString(name)
+       if err != nil {
+               return nil, err
+       }
+
+       // Magic sysctl: "setting" 0.3 to a string name
+       // lets you read back the array of integers form.
+       if err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil {
+               return nil, err
+       }
+       return buf[0 : n/siz], nil
+}
+
+// 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]))
+               reclen := int(16+dirent.Namlen+1+7) & ^7
+               buf = buf[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() (r int, w int, err error)
+
+func Pipe(p []int) (err error) {
+       if len(p) != 2 {
+               return EINVAL
+       }
+       p[0], p[1], err = pipe()
+       return
+}
+
+//sys  extpread(fd int, p []byte, flags int, offset int64) (n int, err error)
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+       return extpread(fd, p, 0, offset)
+}
+
+//sys  extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error)
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+       return extpwrite(fd, p, 0, offset)
+}
+
+func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
+       var _p0 unsafe.Pointer
+       var bufsize uintptr
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+               bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))
+       }
+       r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+/*
+ * Exposed directly
+ */
+//sys  Access(path string, mode uint32) (err error)
+//sys  Adjtime(delta *Timeval, olddelta *Timeval) (err error)
+//sys  Chdir(path string) (err error)
+//sys  Chflags(path string, flags int) (err error)
+//sys  Chmod(path string, mode uint32) (err error)
+//sys  Chown(path string, uid int, gid int) (err error)
+//sys  Chroot(path string) (err error)
+//sys  Close(fd int) (err error)
+//sys  Dup(fd int) (nfd int, err error)
+//sys  Dup2(from int, to int) (err error)
+//sys  Exit(code int)
+//sys  Fchdir(fd int) (err error)
+//sys  Fchflags(fd int, flags int) (err error)
+//sys  Fchmod(fd int, mode uint32) (err error)
+//sys  Fchown(fd int, uid int, gid int) (err error)
+//sys  Flock(fd int, how int) (err error)
+//sys  Fpathconf(fd int, name int) (val int, err error)
+//sys  Fstat(fd int, stat *Stat_t) (err error)
+//sys  Fstatfs(fd int, stat *Statfs_t) (err error)
+//sys  Fsync(fd int) (err error)
+//sys  Ftruncate(fd int, length int64) (err error)
+//sys  Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error)
+//sys  Getdtablesize() (size int)
+//sysnb        Getegid() (egid int)
+//sysnb        Geteuid() (uid int)
+//sysnb        Getgid() (gid int)
+//sysnb        Getpgid(pid int) (pgid int, err error)
+//sysnb        Getpgrp() (pgrp int)
+//sysnb        Getpid() (pid int)
+//sysnb        Getppid() (ppid int)
+//sys  Getpriority(which int, who int) (prio int, err error)
+//sysnb        Getrlimit(which int, lim *Rlimit) (err error)
+//sysnb        Getrusage(who int, rusage *Rusage) (err error)
+//sysnb        Getsid(pid int) (sid int, err error)
+//sysnb        Gettimeofday(tv *Timeval) (err error)
+//sysnb        Getuid() (uid int)
+//sys  Issetugid() (tainted bool)
+//sys  Kill(pid int, signum syscall.Signal) (err error)
+//sys  Kqueue() (fd int, err error)
+//sys  Lchown(path string, uid int, gid int) (err error)
+//sys  Link(path string, link string) (err error)
+//sys  Listen(s int, backlog int) (err error)
+//sys  Lstat(path string, stat *Stat_t) (err error)
+//sys  Mkdir(path string, mode uint32) (err error)
+//sys  Mkfifo(path string, mode uint32) (err error)
+//sys  Mknod(path string, mode uint32, dev int) (err error)
+//sys  Mlock(b []byte) (err error)
+//sys  Mlockall(flags int) (err error)
+//sys  Mprotect(b []byte, prot int) (err error)
+//sys  Munlock(b []byte) (err error)
+//sys  Munlockall() (err error)
+//sys  Nanosleep(time *Timespec, leftover *Timespec) (err error)
+//sys  Open(path string, mode int, perm uint32) (fd int, err error)
+//sys  Pathconf(path string, name int) (val int, err error)
+//sys  read(fd int, p []byte) (n int, err error)
+//sys  Readlink(path string, buf []byte) (n int, err error)
+//sys  Rename(from string, to string) (err error)
+//sys  Revoke(path string) (err error)
+//sys  Rmdir(path string) (err error)
+//sys  Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
+//sys  Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)
+//sysnb        Setegid(egid int) (err error)
+//sysnb        Seteuid(euid int) (err error)
+//sysnb        Setgid(gid int) (err error)
+//sys  Setlogin(name string) (err error)
+//sysnb        Setpgid(pid int, pgid int) (err error)
+//sys  Setpriority(which int, who int, prio int) (err error)
+//sysnb        Setregid(rgid int, egid int) (err error)
+//sysnb        Setreuid(ruid int, euid int) (err error)
+//sysnb        Setresgid(rgid int, egid int, sgid int) (err error)
+//sysnb        Setresuid(ruid int, euid int, suid int) (err error)
+//sysnb        Setrlimit(which int, lim *Rlimit) (err error)
+//sysnb        Setsid() (pid int, err error)
+//sysnb        Settimeofday(tp *Timeval) (err error)
+//sysnb        Setuid(uid int) (err error)
+//sys  Stat(path string, stat *Stat_t) (err error)
+//sys  Statfs(path string, stat *Statfs_t) (err error)
+//sys  Symlink(path string, link string) (err error)
+//sys  Sync() (err error)
+//sys  Truncate(path string, length int64) (err error)
+//sys  Umask(newmask int) (oldmask int)
+//sys  Undelete(path string) (err error)
+//sys  Unlink(path string) (err error)
+//sys  Unmount(path string, flags int) (err error)
+//sys  write(fd int, p []byte) (n int, err error)
+//sys   mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
+//sys   munmap(addr uintptr, length uintptr) (err error)
+//sys  readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ
+//sys  writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE
+
+/*
+ * Unimplemented
+ * TODO(jsing): Update this list for DragonFly.
+ */
+// Profil
+// Sigaction
+// Sigprocmask
+// Getlogin
+// Sigpending
+// Sigaltstack
+// Ioctl
+// Reboot
+// Execve
+// Vfork
+// Sbrk
+// Sstk
+// Ovadvise
+// Mincore
+// Setitimer
+// Swapon
+// Select
+// Sigsuspend
+// Readv
+// Writev
+// Nfssvc
+// Getfh
+// Quotactl
+// Mount
+// Csops
+// Waitid
+// Add_profil
+// Kdebug_trace
+// Sigreturn
+// Mmap
+// Atsocket
+// Kqueue_from_portset_np
+// Kqueue_portset
+// Getattrlist
+// Setattrlist
+// Getdirentriesattr
+// Searchfs
+// Delete
+// Copyfile
+// Poll
+// Watchevent
+// Waitevent
+// Modwatch
+// Getxattr
+// Fgetxattr
+// Setxattr
+// Fsetxattr
+// Removexattr
+// Fremovexattr
+// Listxattr
+// Flistxattr
+// Fsctl
+// Initgroups
+// Posix_spawn
+// Nfsclnt
+// Fhopen
+// Minherit
+// Semsys
+// Msgsys
+// Shmsys
+// Semctl
+// Semget
+// Semop
+// Msgctl
+// Msgget
+// Msgsnd
+// Msgrcv
+// Shmat
+// Shmctl
+// Shmdt
+// Shmget
+// Shm_open
+// Shm_unlink
+// Sem_open
+// Sem_close
+// Sem_unlink
+// Sem_wait
+// Sem_trywait
+// Sem_post
+// Sem_getvalue
+// Sem_init
+// Sem_destroy
+// Open_extended
+// Umask_extended
+// Stat_extended
+// Lstat_extended
+// Fstat_extended
+// Chmod_extended
+// Fchmod_extended
+// Access_extended
+// Settid
+// Gettid
+// Setsgroups
+// Getsgroups
+// Setwgroups
+// Getwgroups
+// Mkfifo_extended
+// Mkdir_extended
+// Identitysvc
+// Shared_region_check_np
+// Shared_region_map_np
+// __pthread_mutex_destroy
+// __pthread_mutex_init
+// __pthread_mutex_lock
+// __pthread_mutex_trylock
+// __pthread_mutex_unlock
+// __pthread_cond_init
+// __pthread_cond_destroy
+// __pthread_cond_broadcast
+// __pthread_cond_signal
+// Setsid_with_pid
+// __pthread_cond_timedwait
+// Aio_fsync
+// Aio_return
+// Aio_suspend
+// Aio_cancel
+// Aio_error
+// Aio_read
+// Aio_write
+// Lio_listio
+// __pthread_cond_wait
+// Iopolicysys
+// __pthread_kill
+// __pthread_sigmask
+// __sigwait
+// __disable_threadsignal
+// __pthread_markcancel
+// __pthread_canceled
+// __semwait_signal
+// Proc_info
+// Stat64_extended
+// Lstat64_extended
+// Fstat64_extended
+// __pthread_chdir
+// __pthread_fchdir
+// Audit
+// Auditon
+// Getauid
+// Setauid
+// Getaudit
+// Setaudit
+// Getaudit_addr
+// Setaudit_addr
+// Auditctl
+// Bsdthread_create
+// Bsdthread_terminate
+// Stack_snapshot
+// Bsdthread_register
+// Workq_open
+// Workq_ops
+// __mac_execve
+// __mac_syscall
+// __mac_get_file
+// __mac_set_file
+// __mac_get_link
+// __mac_set_link
+// __mac_get_proc
+// __mac_set_proc
+// __mac_get_fd
+// __mac_set_fd
+// __mac_get_pid
+// __mac_get_lcid
+// __mac_get_lctx
+// __mac_set_lctx
+// Setlcid
+// Read_nocancel
+// Write_nocancel
+// Open_nocancel
+// Close_nocancel
+// Wait4_nocancel
+// Recvmsg_nocancel
+// Sendmsg_nocancel
+// Recvfrom_nocancel
+// Accept_nocancel
+// Msync_nocancel
+// Fcntl_nocancel
+// Select_nocancel
+// Fsync_nocancel
+// Connect_nocancel
+// Sigsuspend_nocancel
+// Readv_nocancel
+// Writev_nocancel
+// Sendto_nocancel
+// Pread_nocancel
+// Pwrite_nocancel
+// Waitid_nocancel
+// Poll_nocancel
+// Msgsnd_nocancel
+// Msgrcv_nocancel
+// Sem_wait_nocancel
+// Aio_suspend_nocancel
+// __sigwait_nocancel
+// __semwait_signal_nocancel
+// __mac_mount
+// __mac_get_mount
+// __mac_getfsstat
diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly_386.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly_386.go
new file mode 100644 (file)
index 0000000..41c2e69
--- /dev/null
@@ -0,0 +1,63 @@
+// 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.
+
+// +build 386,dragonfly
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+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 = int32(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 = int32(nsec % 1e9 / 1e3)
+       tv.Sec = int32(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 = uint32(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+       msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+       cmsg.Len = uint32(length)
+}
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+       var writtenOut uint64 = 0
+       _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0)
+
+       written = int(writtenOut)
+
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go
new file mode 100644 (file)
index 0000000..2ed9259
--- /dev/null
@@ -0,0 +1,63 @@
+// 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.
+
+// +build amd64,dragonfly
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+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 = 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 = uint64(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)
+}
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+       var writtenOut uint64 = 0
+       _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)
+
+       written = int(writtenOut)
+
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd.go b/vendor/golang.org/x/sys/unix/syscall_freebsd.go
new file mode 100644 (file)
index 0000000..ec56ed6
--- /dev/null
@@ -0,0 +1,682 @@
+// 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.
+
+// FreeBSD 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 unix
+
+import "unsafe"
+
+type SockaddrDatalink struct {
+       Len    uint8
+       Family uint8
+       Index  uint16
+       Type   uint8
+       Nlen   uint8
+       Alen   uint8
+       Slen   uint8
+       Data   [46]int8
+       raw    RawSockaddrDatalink
+}
+
+// Translate "kern.hostname" to []_C_int{0,1,2,3}.
+func nametomib(name string) (mib []_C_int, err error) {
+       const siz = unsafe.Sizeof(mib[0])
+
+       // NOTE(rsc): It seems strange to set the buffer to have
+       // size CTL_MAXNAME+2 but use only CTL_MAXNAME
+       // as the size.  I don't know why the +2 is here, but the
+       // kernel uses +2 for its own implementation of this function.
+       // I am scared that if we don't include the +2 here, the kernel
+       // will silently write 2 words farther than we specify
+       // and we'll get memory corruption.
+       var buf [CTL_MAXNAME + 2]_C_int
+       n := uintptr(CTL_MAXNAME) * siz
+
+       p := (*byte)(unsafe.Pointer(&buf[0]))
+       bytes, err := ByteSliceFromString(name)
+       if err != nil {
+               return nil, err
+       }
+
+       // Magic sysctl: "setting" 0.3 to a string name
+       // lets you read back the array of integers form.
+       if err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil {
+               return nil, err
+       }
+       return buf[0 : n/siz], nil
+}
+
+// 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() (r int, w int, err error)
+
+func Pipe(p []int) (err error) {
+       if len(p) != 2 {
+               return EINVAL
+       }
+       p[0], p[1], err = pipe()
+       return
+}
+
+func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {
+       var value IPMreqn
+       vallen := _Socklen(SizeofIPMreqn)
+       errno := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
+       return &value, errno
+}
+
+func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) {
+       return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))
+}
+
+func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) {
+       var rsa RawSockaddrAny
+       var len _Socklen = SizeofSockaddrAny
+       nfd, err = accept4(fd, &rsa, &len, flags)
+       if err != nil {
+               return
+       }
+       if len > SizeofSockaddrAny {
+               panic("RawSockaddrAny too small")
+       }
+       sa, err = anyToSockaddr(&rsa)
+       if err != nil {
+               Close(nfd)
+               nfd = 0
+       }
+       return
+}
+
+func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
+       var _p0 unsafe.Pointer
+       var bufsize uintptr
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+               bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))
+       }
+       r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+// Derive extattr namespace and attribute name
+
+func xattrnamespace(fullattr string) (ns int, attr string, err error) {
+       s := -1
+       for idx, val := range fullattr {
+               if val == '.' {
+                       s = idx
+                       break
+               }
+       }
+
+       if s == -1 {
+               return -1, "", ENOATTR
+       }
+
+       namespace := fullattr[0:s]
+       attr = fullattr[s+1:]
+
+       switch namespace {
+       case "user":
+               return EXTATTR_NAMESPACE_USER, attr, nil
+       case "system":
+               return EXTATTR_NAMESPACE_SYSTEM, attr, nil
+       default:
+               return -1, "", ENOATTR
+       }
+}
+
+func initxattrdest(dest []byte, idx int) (d unsafe.Pointer) {
+       if len(dest) > idx {
+               return unsafe.Pointer(&dest[idx])
+       } else {
+               return unsafe.Pointer(_zero)
+       }
+}
+
+// FreeBSD implements its own syscalls to handle extended attributes
+
+func Getxattr(file string, attr string, dest []byte) (sz int, err error) {
+       d := initxattrdest(dest, 0)
+       destsize := len(dest)
+
+       nsid, a, err := xattrnamespace(attr)
+       if err != nil {
+               return -1, err
+       }
+
+       return ExtattrGetFile(file, nsid, a, uintptr(d), destsize)
+}
+
+func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {
+       d := initxattrdest(dest, 0)
+       destsize := len(dest)
+
+       nsid, a, err := xattrnamespace(attr)
+       if err != nil {
+               return -1, err
+       }
+
+       return ExtattrGetFd(fd, nsid, a, uintptr(d), destsize)
+}
+
+func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {
+       d := initxattrdest(dest, 0)
+       destsize := len(dest)
+
+       nsid, a, err := xattrnamespace(attr)
+       if err != nil {
+               return -1, err
+       }
+
+       return ExtattrGetLink(link, nsid, a, uintptr(d), destsize)
+}
+
+// flags are unused on FreeBSD
+
+func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) {
+       d := unsafe.Pointer(&data[0])
+       datasiz := len(data)
+
+       nsid, a, err := xattrnamespace(attr)
+       if err != nil {
+               return
+       }
+
+       _, err = ExtattrSetFd(fd, nsid, a, uintptr(d), datasiz)
+       return
+}
+
+func Setxattr(file string, attr string, data []byte, flags int) (err error) {
+       d := unsafe.Pointer(&data[0])
+       datasiz := len(data)
+
+       nsid, a, err := xattrnamespace(attr)
+       if err != nil {
+               return
+       }
+
+       _, err = ExtattrSetFile(file, nsid, a, uintptr(d), datasiz)
+       return
+}
+
+func Lsetxattr(link string, attr string, data []byte, flags int) (err error) {
+       d := unsafe.Pointer(&data[0])
+       datasiz := len(data)
+
+       nsid, a, err := xattrnamespace(attr)
+       if err != nil {
+               return
+       }
+
+       _, err = ExtattrSetLink(link, nsid, a, uintptr(d), datasiz)
+       return
+}
+
+func Removexattr(file string, attr string) (err error) {
+       nsid, a, err := xattrnamespace(attr)
+       if err != nil {
+               return
+       }
+
+       err = ExtattrDeleteFile(file, nsid, a)
+       return
+}
+
+func Fremovexattr(fd int, attr string) (err error) {
+       nsid, a, err := xattrnamespace(attr)
+       if err != nil {
+               return
+       }
+
+       err = ExtattrDeleteFd(fd, nsid, a)
+       return
+}
+
+func Lremovexattr(link string, attr string) (err error) {
+       nsid, a, err := xattrnamespace(attr)
+       if err != nil {
+               return
+       }
+
+       err = ExtattrDeleteLink(link, nsid, a)
+       return
+}
+
+func Listxattr(file string, dest []byte) (sz int, err error) {
+       d := initxattrdest(dest, 0)
+       destsiz := len(dest)
+
+       // FreeBSD won't allow you to list xattrs from multiple namespaces
+       s := 0
+       var e error
+       for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
+               stmp, e := ExtattrListFile(file, nsid, uintptr(d), destsiz)
+
+               /* Errors accessing system attrs are ignored so that
+                * we can implement the Linux-like behavior of omitting errors that
+                * we don't have read permissions on
+                *
+                * Linux will still error if we ask for user attributes on a file that
+                * we don't have read permissions on, so don't ignore those errors
+                */
+               if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
+                       e = nil
+                       continue
+               } else if e != nil {
+                       return s, e
+               }
+
+               s += stmp
+               destsiz -= s
+               if destsiz < 0 {
+                       destsiz = 0
+               }
+               d = initxattrdest(dest, s)
+       }
+
+       return s, e
+}
+
+func Flistxattr(fd int, dest []byte) (sz int, err error) {
+       d := initxattrdest(dest, 0)
+       destsiz := len(dest)
+
+       s := 0
+       var e error
+       for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
+               stmp, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz)
+               if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
+                       e = nil
+                       continue
+               } else if e != nil {
+                       return s, e
+               }
+
+               s += stmp
+               destsiz -= s
+               if destsiz < 0 {
+                       destsiz = 0
+               }
+               d = initxattrdest(dest, s)
+       }
+
+       return s, e
+}
+
+func Llistxattr(link string, dest []byte) (sz int, err error) {
+       d := initxattrdest(dest, 0)
+       destsiz := len(dest)
+
+       s := 0
+       var e error
+       for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
+               stmp, e := ExtattrListLink(link, nsid, uintptr(d), destsiz)
+               if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
+                       e = nil
+                       continue
+               } else if e != nil {
+                       return s, e
+               }
+
+               s += stmp
+               destsiz -= s
+               if destsiz < 0 {
+                       destsiz = 0
+               }
+               d = initxattrdest(dest, s)
+       }
+
+       return s, e
+}
+
+/*
+ * Exposed directly
+ */
+//sys  Access(path string, mode uint32) (err error)
+//sys  Adjtime(delta *Timeval, olddelta *Timeval) (err error)
+//sys  Chdir(path string) (err error)
+//sys  Chflags(path string, flags int) (err error)
+//sys  Chmod(path string, mode uint32) (err error)
+//sys  Chown(path string, uid int, gid int) (err error)
+//sys  Chroot(path string) (err error)
+//sys  Close(fd int) (err error)
+//sys  Dup(fd int) (nfd int, err error)
+//sys  Dup2(from int, to int) (err error)
+//sys  Exit(code int)
+//sys  ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
+//sys  ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
+//sys  ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error)
+//sys  ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error)
+//sys  ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
+//sys  ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
+//sys  ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error)
+//sys  ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)
+//sys  ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
+//sys  ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
+//sys  ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error)
+//sys  ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)
+//sys  Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE
+//sys  Fchdir(fd int) (err error)
+//sys  Fchflags(fd int, flags int) (err error)
+//sys  Fchmod(fd int, mode uint32) (err error)
+//sys  Fchown(fd int, uid int, gid int) (err error)
+//sys  Flock(fd int, how int) (err error)
+//sys  Fpathconf(fd int, name int) (val int, err error)
+//sys  Fstat(fd int, stat *Stat_t) (err error)
+//sys  Fstatfs(fd int, stat *Statfs_t) (err error)
+//sys  Fsync(fd int) (err error)
+//sys  Ftruncate(fd int, length int64) (err error)
+//sys  Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error)
+//sys  Getdtablesize() (size int)
+//sysnb        Getegid() (egid int)
+//sysnb        Geteuid() (uid int)
+//sysnb        Getgid() (gid int)
+//sysnb        Getpgid(pid int) (pgid int, err error)
+//sysnb        Getpgrp() (pgrp int)
+//sysnb        Getpid() (pid int)
+//sysnb        Getppid() (ppid int)
+//sys  Getpriority(which int, who int) (prio int, err error)
+//sysnb        Getrlimit(which int, lim *Rlimit) (err error)
+//sysnb        Getrusage(who int, rusage *Rusage) (err error)
+//sysnb        Getsid(pid int) (sid int, err error)
+//sysnb        Gettimeofday(tv *Timeval) (err error)
+//sysnb        Getuid() (uid int)
+//sys  Issetugid() (tainted bool)
+//sys  Kill(pid int, signum syscall.Signal) (err error)
+//sys  Kqueue() (fd int, err error)
+//sys  Lchown(path string, uid int, gid int) (err error)
+//sys  Link(path string, link string) (err error)
+//sys  Listen(s int, backlog int) (err error)
+//sys  Lstat(path string, stat *Stat_t) (err error)
+//sys  Mkdir(path string, mode uint32) (err error)
+//sys  Mkfifo(path string, mode uint32) (err error)
+//sys  Mknod(path string, mode uint32, dev int) (err error)
+//sys  Mlock(b []byte) (err error)
+//sys  Mlockall(flags int) (err error)
+//sys  Mprotect(b []byte, prot int) (err error)
+//sys  Munlock(b []byte) (err error)
+//sys  Munlockall() (err error)
+//sys  Nanosleep(time *Timespec, leftover *Timespec) (err error)
+//sys  Open(path string, mode int, perm uint32) (fd int, err error)
+//sys  Pathconf(path string, name int) (val int, err error)
+//sys  Pread(fd int, p []byte, offset int64) (n int, err error)
+//sys  Pwrite(fd int, p []byte, offset int64) (n int, err error)
+//sys  read(fd int, p []byte) (n int, err error)
+//sys  Readlink(path string, buf []byte) (n int, err error)
+//sys  Rename(from string, to string) (err error)
+//sys  Revoke(path string) (err error)
+//sys  Rmdir(path string) (err error)
+//sys  Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
+//sys  Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)
+//sysnb        Setegid(egid int) (err error)
+//sysnb        Seteuid(euid int) (err error)
+//sysnb        Setgid(gid int) (err error)
+//sys  Setlogin(name string) (err error)
+//sysnb        Setpgid(pid int, pgid int) (err error)
+//sys  Setpriority(which int, who int, prio int) (err error)
+//sysnb        Setregid(rgid int, egid int) (err error)
+//sysnb        Setreuid(ruid int, euid int) (err error)
+//sysnb        Setresgid(rgid int, egid int, sgid int) (err error)
+//sysnb        Setresuid(ruid int, euid int, suid int) (err error)
+//sysnb        Setrlimit(which int, lim *Rlimit) (err error)
+//sysnb        Setsid() (pid int, err error)
+//sysnb        Settimeofday(tp *Timeval) (err error)
+//sysnb        Setuid(uid int) (err error)
+//sys  Stat(path string, stat *Stat_t) (err error)
+//sys  Statfs(path string, stat *Statfs_t) (err error)
+//sys  Symlink(path string, link string) (err error)
+//sys  Sync() (err error)
+//sys  Truncate(path string, length int64) (err error)
+//sys  Umask(newmask int) (oldmask int)
+//sys  Undelete(path string) (err error)
+//sys  Unlink(path string) (err error)
+//sys  Unmount(path string, flags int) (err error)
+//sys  write(fd int, p []byte) (n int, err error)
+//sys   mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
+//sys   munmap(addr uintptr, length uintptr) (err error)
+//sys  readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ
+//sys  writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE
+//sys  accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error)
+
+/*
+ * Unimplemented
+ */
+// Profil
+// Sigaction
+// Sigprocmask
+// Getlogin
+// Sigpending
+// Sigaltstack
+// Ioctl
+// Reboot
+// Execve
+// Vfork
+// Sbrk
+// Sstk
+// Ovadvise
+// Mincore
+// Setitimer
+// Swapon
+// Select
+// Sigsuspend
+// Readv
+// Writev
+// Nfssvc
+// Getfh
+// Quotactl
+// Mount
+// Csops
+// Waitid
+// Add_profil
+// Kdebug_trace
+// Sigreturn
+// Mmap
+// Mlock
+// Munlock
+// Atsocket
+// Kqueue_from_portset_np
+// Kqueue_portset
+// Getattrlist
+// Setattrlist
+// Getdirentriesattr
+// Searchfs
+// Delete
+// Copyfile
+// Poll
+// Watchevent
+// Waitevent
+// Modwatch
+// Getxattr
+// Fgetxattr
+// Setxattr
+// Fsetxattr
+// Removexattr
+// Fremovexattr
+// Listxattr
+// Flistxattr
+// Fsctl
+// Initgroups
+// Posix_spawn
+// Nfsclnt
+// Fhopen
+// Minherit
+// Semsys
+// Msgsys
+// Shmsys
+// Semctl
+// Semget
+// Semop
+// Msgctl
+// Msgget
+// Msgsnd
+// Msgrcv
+// Shmat
+// Shmctl
+// Shmdt
+// Shmget
+// Shm_open
+// Shm_unlink
+// Sem_open
+// Sem_close
+// Sem_unlink
+// Sem_wait
+// Sem_trywait
+// Sem_post
+// Sem_getvalue
+// Sem_init
+// Sem_destroy
+// Open_extended
+// Umask_extended
+// Stat_extended
+// Lstat_extended
+// Fstat_extended
+// Chmod_extended
+// Fchmod_extended
+// Access_extended
+// Settid
+// Gettid
+// Setsgroups
+// Getsgroups
+// Setwgroups
+// Getwgroups
+// Mkfifo_extended
+// Mkdir_extended
+// Identitysvc
+// Shared_region_check_np
+// Shared_region_map_np
+// __pthread_mutex_destroy
+// __pthread_mutex_init
+// __pthread_mutex_lock
+// __pthread_mutex_trylock
+// __pthread_mutex_unlock
+// __pthread_cond_init
+// __pthread_cond_destroy
+// __pthread_cond_broadcast
+// __pthread_cond_signal
+// Setsid_with_pid
+// __pthread_cond_timedwait
+// Aio_fsync
+// Aio_return
+// Aio_suspend
+// Aio_cancel
+// Aio_error
+// Aio_read
+// Aio_write
+// Lio_listio
+// __pthread_cond_wait
+// Iopolicysys
+// Mlockall
+// Munlockall
+// __pthread_kill
+// __pthread_sigmask
+// __sigwait
+// __disable_threadsignal
+// __pthread_markcancel
+// __pthread_canceled
+// __semwait_signal
+// Proc_info
+// Stat64_extended
+// Lstat64_extended
+// Fstat64_extended
+// __pthread_chdir
+// __pthread_fchdir
+// Audit
+// Auditon
+// Getauid
+// Setauid
+// Getaudit
+// Setaudit
+// Getaudit_addr
+// Setaudit_addr
+// Auditctl
+// Bsdthread_create
+// Bsdthread_terminate
+// Stack_snapshot
+// Bsdthread_register
+// Workq_open
+// Workq_ops
+// __mac_execve
+// __mac_syscall
+// __mac_get_file
+// __mac_set_file
+// __mac_get_link
+// __mac_set_link
+// __mac_get_proc
+// __mac_set_proc
+// __mac_get_fd
+// __mac_set_fd
+// __mac_get_pid
+// __mac_get_lcid
+// __mac_get_lctx
+// __mac_set_lctx
+// Setlcid
+// Read_nocancel
+// Write_nocancel
+// Open_nocancel
+// Close_nocancel
+// Wait4_nocancel
+// Recvmsg_nocancel
+// Sendmsg_nocancel
+// Recvfrom_nocancel
+// Accept_nocancel
+// Msync_nocancel
+// Fcntl_nocancel
+// Select_nocancel
+// Fsync_nocancel
+// Connect_nocancel
+// Sigsuspend_nocancel
+// Readv_nocancel
+// Writev_nocancel
+// Sendto_nocancel
+// Pread_nocancel
+// Pwrite_nocancel
+// Waitid_nocancel
+// Poll_nocancel
+// Msgsnd_nocancel
+// Msgrcv_nocancel
+// Sem_wait_nocancel
+// Aio_suspend_nocancel
+// __sigwait_nocancel
+// __semwait_signal_nocancel
+// __mac_mount
+// __mac_get_mount
+// __mac_getfsstat
diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go
new file mode 100644 (file)
index 0000000..6255d40
--- /dev/null
@@ -0,0 +1,63 @@
+// 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.
+
+// +build 386,freebsd
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+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 = int32(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 = int32(nsec % 1e9 / 1e3)
+       tv.Sec = int32(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 = uint32(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+       msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+       cmsg.Len = uint32(length)
+}
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+       var writtenOut uint64 = 0
+       _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0)
+
+       written = int(writtenOut)
+
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go
new file mode 100644 (file)
index 0000000..8b395d5
--- /dev/null
@@ -0,0 +1,63 @@
+// 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.
+
+// +build amd64,freebsd
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+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 = 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 = uint64(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)
+}
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+       var writtenOut uint64 = 0
+       _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)
+
+       written = int(writtenOut)
+
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go
new file mode 100644 (file)
index 0000000..4e72d46
--- /dev/null
@@ -0,0 +1,63 @@
+// Copyright 2012 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.
+
+// +build arm,freebsd
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+func Getpagesize() int { return 4096 }
+
+func TimespecToNsec(ts Timespec) int64 { return ts.Sec*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+       ts.Sec = nsec / 1e9
+       ts.Nsec = int32(nsec % 1e9)
+       return
+}
+
+func TimevalToNsec(tv Timeval) int64 { return tv.Sec*1e9 + int64(tv.Usec)*1e3 }
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+       nsec += 999 // round up to microsecond
+       tv.Usec = int32(nsec % 1e9 / 1e3)
+       tv.Sec = 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 = uint32(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+       msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+       cmsg.Len = uint32(length)
+}
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+       var writtenOut uint64 = 0
+       _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0)
+
+       written = int(writtenOut)
+
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go
new file mode 100644 (file)
index 0000000..88c8e04
--- /dev/null
@@ -0,0 +1,1097 @@
+// 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.
+
+// Linux 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.
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+/*
+ * Wrapped
+ */
+
+func Access(path string, mode uint32) (err error) {
+       return Faccessat(AT_FDCWD, path, mode, 0)
+}
+
+func Chmod(path string, mode uint32) (err error) {
+       return Fchmodat(AT_FDCWD, path, mode, 0)
+}
+
+func Chown(path string, uid int, gid int) (err error) {
+       return Fchownat(AT_FDCWD, path, uid, gid, 0)
+}
+
+func Creat(path string, mode uint32) (fd int, err error) {
+       return Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode)
+}
+
+//sys  linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error)
+
+func Link(oldpath string, newpath string) (err error) {
+       return linkat(AT_FDCWD, oldpath, AT_FDCWD, newpath, 0)
+}
+
+func Mkdir(path string, mode uint32) (err error) {
+       return Mkdirat(AT_FDCWD, path, mode)
+}
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+       return Mknodat(AT_FDCWD, path, mode, dev)
+}
+
+func Open(path string, mode int, perm uint32) (fd int, err error) {
+       return openat(AT_FDCWD, path, mode|O_LARGEFILE, perm)
+}
+
+//sys  openat(dirfd int, path string, flags int, mode uint32) (fd int, err error)
+
+func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
+       return openat(dirfd, path, flags|O_LARGEFILE, mode)
+}
+
+//sys  readlinkat(dirfd int, path string, buf []byte) (n int, err error)
+
+func Readlink(path string, buf []byte) (n int, err error) {
+       return readlinkat(AT_FDCWD, path, buf)
+}
+
+func Rename(oldpath string, newpath string) (err error) {
+       return Renameat(AT_FDCWD, oldpath, AT_FDCWD, newpath)
+}
+
+func Rmdir(path string) error {
+       return unlinkat(AT_FDCWD, path, AT_REMOVEDIR)
+}
+
+//sys  symlinkat(oldpath string, newdirfd int, newpath string) (err error)
+
+func Symlink(oldpath string, newpath string) (err error) {
+       return symlinkat(oldpath, AT_FDCWD, newpath)
+}
+
+func Unlink(path string) error {
+       return unlinkat(AT_FDCWD, path, 0)
+}
+
+//sys  unlinkat(dirfd int, path string, flags int) (err error)
+
+func Unlinkat(dirfd int, path string, flags int) error {
+       return unlinkat(dirfd, path, flags)
+}
+
+//sys  utimes(path string, times *[2]Timeval) (err error)
+
+func Utimes(path string, tv []Timeval) error {
+       if tv == nil {
+               err := utimensat(AT_FDCWD, path, nil, 0)
+               if err != ENOSYS {
+                       return err
+               }
+               return utimes(path, nil)
+       }
+       if len(tv) != 2 {
+               return EINVAL
+       }
+       var ts [2]Timespec
+       ts[0] = NsecToTimespec(TimevalToNsec(tv[0]))
+       ts[1] = NsecToTimespec(TimevalToNsec(tv[1]))
+       err := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
+       if err != ENOSYS {
+               return err
+       }
+       return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
+}
+
+//sys  utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)
+
+func UtimesNano(path string, ts []Timespec) error {
+       if ts == nil {
+               err := utimensat(AT_FDCWD, path, nil, 0)
+               if err != ENOSYS {
+                       return err
+               }
+               return utimes(path, nil)
+       }
+       if len(ts) != 2 {
+               return EINVAL
+       }
+       err := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
+       if err != ENOSYS {
+               return err
+       }
+       // If the utimensat syscall isn't available (utimensat was added to Linux
+       // in 2.6.22, Released, 8 July 2007) then fall back to utimes
+       var tv [2]Timeval
+       for i := 0; i < 2; i++ {
+               tv[i].Sec = ts[i].Sec
+               tv[i].Usec = ts[i].Nsec / 1000
+       }
+       return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
+}
+
+func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {
+       if ts == nil {
+               return utimensat(dirfd, path, nil, flags)
+       }
+       if len(ts) != 2 {
+               return EINVAL
+       }
+       return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)
+}
+
+//sys  futimesat(dirfd int, path *byte, times *[2]Timeval) (err error)
+
+func Futimesat(dirfd int, path string, tv []Timeval) error {
+       pathp, err := BytePtrFromString(path)
+       if err != nil {
+               return err
+       }
+       if tv == nil {
+               return futimesat(dirfd, pathp, nil)
+       }
+       if len(tv) != 2 {
+               return EINVAL
+       }
+       return futimesat(dirfd, pathp, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
+}
+
+func Futimes(fd int, tv []Timeval) (err error) {
+       // Believe it or not, this is the best we can do on Linux
+       // (and is what glibc does).
+       return Utimes("/proc/self/fd/"+itoa(fd), tv)
+}
+
+const ImplementsGetwd = true
+
+//sys  Getcwd(buf []byte) (n int, err error)
+
+func Getwd() (wd string, err error) {
+       var buf [PathMax]byte
+       n, err := Getcwd(buf[0:])
+       if err != nil {
+               return "", err
+       }
+       // Getcwd returns the number of bytes written to buf, including the NUL.
+       if n < 1 || n > len(buf) || buf[n-1] != 0 {
+               return "", EINVAL
+       }
+       return string(buf[0 : n-1]), nil
+}
+
+func Getgroups() (gids []int, err error) {
+       n, err := getgroups(0, nil)
+       if err != nil {
+               return nil, err
+       }
+       if n == 0 {
+               return nil, nil
+       }
+
+       // Sanity check group count.  Max is 1<<16 on Linux.
+       if n < 0 || n > 1<<20 {
+               return nil, EINVAL
+       }
+
+       a := make([]_Gid_t, n)
+       n, err = getgroups(n, &a[0])
+       if err != nil {
+               return nil, err
+       }
+       gids = make([]int, n)
+       for i, v := range a[0:n] {
+               gids[i] = int(v)
+       }
+       return
+}
+
+func Setgroups(gids []int) (err error) {
+       if len(gids) == 0 {
+               return setgroups(0, nil)
+       }
+
+       a := make([]_Gid_t, len(gids))
+       for i, v := range gids {
+               a[i] = _Gid_t(v)
+       }
+       return setgroups(len(a), &a[0])
+}
+
+type WaitStatus uint32
+
+// Wait status is 7 bits at bottom, either 0 (exited),
+// 0x7F (stopped), or a signal number that caused an exit.
+// The 0x80 bit is whether there was a core dump.
+// An extra number (exit code, signal causing a stop)
+// is in the high bits.  At least that's the idea.
+// There are various irregularities.  For example, the
+// "continued" status is 0xFFFF, distinguishing itself
+// from stopped via the core dump bit.
+
+const (
+       mask    = 0x7F
+       core    = 0x80
+       exited  = 0x00
+       stopped = 0x7F
+       shift   = 8
+)
+
+func (w WaitStatus) Exited() bool { return w&mask == exited }
+
+func (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != exited }
+
+func (w WaitStatus) Stopped() bool { return w&0xFF == stopped }
+
+func (w WaitStatus) Continued() bool { return w == 0xFFFF }
+
+func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }
+
+func (w WaitStatus) ExitStatus() int {
+       if !w.Exited() {
+               return -1
+       }
+       return int(w>>shift) & 0xFF
+}
+
+func (w WaitStatus) Signal() syscall.Signal {
+       if !w.Signaled() {
+               return -1
+       }
+       return syscall.Signal(w & mask)
+}
+
+func (w WaitStatus) StopSignal() syscall.Signal {
+       if !w.Stopped() {
+               return -1
+       }
+       return syscall.Signal(w>>shift) & 0xFF
+}
+
+func (w WaitStatus) TrapCause() int {
+       if w.StopSignal() != SIGTRAP {
+               return -1
+       }
+       return int(w>>shift) >> 8
+}
+
+//sys  wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error)
+
+func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {
+       var status _C_int
+       wpid, err = wait4(pid, &status, options, rusage)
+       if wstatus != nil {
+               *wstatus = WaitStatus(status)
+       }
+       return
+}
+
+func Mkfifo(path string, mode uint32) (err error) {
+       return Mknod(path, mode|S_IFIFO, 0)
+}
+
+func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {
+       if sa.Port < 0 || sa.Port > 0xFFFF {
+               return nil, 0, EINVAL
+       }
+       sa.raw.Family = AF_INET
+       p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
+       p[0] = byte(sa.Port >> 8)
+       p[1] = byte(sa.Port)
+       for i := 0; i < len(sa.Addr); i++ {
+               sa.raw.Addr[i] = sa.Addr[i]
+       }
+       return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil
+}
+
+func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {
+       if sa.Port < 0 || sa.Port > 0xFFFF {
+               return nil, 0, EINVAL
+       }
+       sa.raw.Family = AF_INET6
+       p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
+       p[0] = byte(sa.Port >> 8)
+       p[1] = byte(sa.Port)
+       sa.raw.Scope_id = sa.ZoneId
+       for i := 0; i < len(sa.Addr); i++ {
+               sa.raw.Addr[i] = sa.Addr[i]
+       }
+       return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil
+}
+
+func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {
+       name := sa.Name
+       n := len(name)
+       if n >= len(sa.raw.Path) {
+               return nil, 0, EINVAL
+       }
+       sa.raw.Family = AF_UNIX
+       for i := 0; i < n; i++ {
+               sa.raw.Path[i] = int8(name[i])
+       }
+       // length is family (uint16), name, NUL.
+       sl := _Socklen(2)
+       if n > 0 {
+               sl += _Socklen(n) + 1
+       }
+       if sa.raw.Path[0] == '@' {
+               sa.raw.Path[0] = 0
+               // Don't count trailing NUL for abstract address.
+               sl--
+       }
+
+       return unsafe.Pointer(&sa.raw), sl, nil
+}
+
+type SockaddrLinklayer struct {
+       Protocol uint16
+       Ifindex  int
+       Hatype   uint16
+       Pkttype  uint8
+       Halen    uint8
+       Addr     [8]byte
+       raw      RawSockaddrLinklayer
+}
+
+func (sa *SockaddrLinklayer) sockaddr() (unsafe.Pointer, _Socklen, error) {
+       if sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff {
+               return nil, 0, EINVAL
+       }
+       sa.raw.Family = AF_PACKET
+       sa.raw.Protocol = sa.Protocol
+       sa.raw.Ifindex = int32(sa.Ifindex)
+       sa.raw.Hatype = sa.Hatype
+       sa.raw.Pkttype = sa.Pkttype
+       sa.raw.Halen = sa.Halen
+       for i := 0; i < len(sa.Addr); i++ {
+               sa.raw.Addr[i] = sa.Addr[i]
+       }
+       return unsafe.Pointer(&sa.raw), SizeofSockaddrLinklayer, nil
+}
+
+type SockaddrNetlink struct {
+       Family uint16
+       Pad    uint16
+       Pid    uint32
+       Groups uint32
+       raw    RawSockaddrNetlink
+}
+
+func (sa *SockaddrNetlink) sockaddr() (unsafe.Pointer, _Socklen, error) {
+       sa.raw.Family = AF_NETLINK
+       sa.raw.Pad = sa.Pad
+       sa.raw.Pid = sa.Pid
+       sa.raw.Groups = sa.Groups
+       return unsafe.Pointer(&sa.raw), SizeofSockaddrNetlink, nil
+}
+
+func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) {
+       switch rsa.Addr.Family {
+       case AF_NETLINK:
+               pp := (*RawSockaddrNetlink)(unsafe.Pointer(rsa))
+               sa := new(SockaddrNetlink)
+               sa.Family = pp.Family
+               sa.Pad = pp.Pad
+               sa.Pid = pp.Pid
+               sa.Groups = pp.Groups
+               return sa, nil
+
+       case AF_PACKET:
+               pp := (*RawSockaddrLinklayer)(unsafe.Pointer(rsa))
+               sa := new(SockaddrLinklayer)
+               sa.Protocol = pp.Protocol
+               sa.Ifindex = int(pp.Ifindex)
+               sa.Hatype = pp.Hatype
+               sa.Pkttype = pp.Pkttype
+               sa.Halen = pp.Halen
+               for i := 0; i < len(sa.Addr); i++ {
+                       sa.Addr[i] = pp.Addr[i]
+               }
+               return sa, nil
+
+       case AF_UNIX:
+               pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))
+               sa := new(SockaddrUnix)
+               if pp.Path[0] == 0 {
+                       // "Abstract" Unix domain socket.
+                       // Rewrite leading NUL as @ for textual display.
+                       // (This is the standard convention.)
+                       // Not friendly to overwrite in place,
+                       // but the callers below don't care.
+                       pp.Path[0] = '@'
+               }
+
+               // Assume path ends at NUL.
+               // This is not technically the Linux semantics for
+               // abstract Unix domain sockets--they are supposed
+               // to be uninterpreted fixed-size binary blobs--but
+               // everyone uses this convention.
+               n := 0
+               for n < len(pp.Path) && pp.Path[n] != 0 {
+                       n++
+               }
+               bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]
+               sa.Name = string(bytes)
+               return sa, nil
+
+       case AF_INET:
+               pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))
+               sa := new(SockaddrInet4)
+               p := (*[2]byte)(unsafe.Pointer(&pp.Port))
+               sa.Port = int(p[0])<<8 + int(p[1])
+               for i := 0; i < len(sa.Addr); i++ {
+                       sa.Addr[i] = pp.Addr[i]
+               }
+               return sa, nil
+
+       case AF_INET6:
+               pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))
+               sa := new(SockaddrInet6)
+               p := (*[2]byte)(unsafe.Pointer(&pp.Port))
+               sa.Port = int(p[0])<<8 + int(p[1])
+               sa.ZoneId = pp.Scope_id
+               for i := 0; i < len(sa.Addr); i++ {
+                       sa.Addr[i] = pp.Addr[i]
+               }
+               return sa, nil
+       }
+       return nil, EAFNOSUPPORT
+}
+
+func Accept(fd int) (nfd int, sa Sockaddr, err error) {
+       var rsa RawSockaddrAny
+       var len _Socklen = SizeofSockaddrAny
+       nfd, err = accept(fd, &rsa, &len)
+       if err != nil {
+               return
+       }
+       sa, err = anyToSockaddr(&rsa)
+       if err != nil {
+               Close(nfd)
+               nfd = 0
+       }
+       return
+}
+
+func Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) {
+       var rsa RawSockaddrAny
+       var len _Socklen = SizeofSockaddrAny
+       nfd, err = accept4(fd, &rsa, &len, flags)
+       if err != nil {
+               return
+       }
+       if len > SizeofSockaddrAny {
+               panic("RawSockaddrAny too small")
+       }
+       sa, err = anyToSockaddr(&rsa)
+       if err != nil {
+               Close(nfd)
+               nfd = 0
+       }
+       return
+}
+
+func Getsockname(fd int) (sa Sockaddr, err error) {
+       var rsa RawSockaddrAny
+       var len _Socklen = SizeofSockaddrAny
+       if err = getsockname(fd, &rsa, &len); err != nil {
+               return
+       }
+       return anyToSockaddr(&rsa)
+}
+
+func GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) {
+       vallen := _Socklen(4)
+       err = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)
+       return value, err
+}
+
+func GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) {
+       var value IPMreq
+       vallen := _Socklen(SizeofIPMreq)
+       err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
+       return &value, err
+}
+
+func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {
+       var value IPMreqn
+       vallen := _Socklen(SizeofIPMreqn)
+       err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
+       return &value, err
+}
+
+func GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) {
+       var value IPv6Mreq
+       vallen := _Socklen(SizeofIPv6Mreq)
+       err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
+       return &value, err
+}
+
+func GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) {
+       var value IPv6MTUInfo
+       vallen := _Socklen(SizeofIPv6MTUInfo)
+       err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
+       return &value, err
+}
+
+func GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) {
+       var value ICMPv6Filter
+       vallen := _Socklen(SizeofICMPv6Filter)
+       err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
+       return &value, err
+}
+
+func GetsockoptUcred(fd, level, opt int) (*Ucred, error) {
+       var value Ucred
+       vallen := _Socklen(SizeofUcred)
+       err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
+       return &value, err
+}
+
+func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) {
+       return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))
+}
+
+func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {
+       var msg Msghdr
+       var rsa RawSockaddrAny
+       msg.Name = (*byte)(unsafe.Pointer(&rsa))
+       msg.Namelen = uint32(SizeofSockaddrAny)
+       var iov Iovec
+       if len(p) > 0 {
+               iov.Base = (*byte)(unsafe.Pointer(&p[0]))
+               iov.SetLen(len(p))
+       }
+       var dummy byte
+       if len(oob) > 0 {
+               // receive at least one normal byte
+               if len(p) == 0 {
+                       iov.Base = &dummy
+                       iov.SetLen(1)
+               }
+               msg.Control = (*byte)(unsafe.Pointer(&oob[0]))
+               msg.SetControllen(len(oob))
+       }
+       msg.Iov = &iov
+       msg.Iovlen = 1
+       if n, err = recvmsg(fd, &msg, flags); err != nil {
+               return
+       }
+       oobn = int(msg.Controllen)
+       recvflags = int(msg.Flags)
+       // source address is only specified if the socket is unconnected
+       if rsa.Addr.Family != AF_UNSPEC {
+               from, err = anyToSockaddr(&rsa)
+       }
+       return
+}
+
+func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) {
+       _, err = SendmsgN(fd, p, oob, to, flags)
+       return
+}
+
+func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) {
+       var ptr unsafe.Pointer
+       var salen _Socklen
+       if to != nil {
+               var err error
+               ptr, salen, err = to.sockaddr()
+               if err != nil {
+                       return 0, err
+               }
+       }
+       var msg Msghdr
+       msg.Name = (*byte)(unsafe.Pointer(ptr))
+       msg.Namelen = uint32(salen)
+       var iov Iovec
+       if len(p) > 0 {
+               iov.Base = (*byte)(unsafe.Pointer(&p[0]))
+               iov.SetLen(len(p))
+       }
+       var dummy byte
+       if len(oob) > 0 {
+               // send at least one normal byte
+               if len(p) == 0 {
+                       iov.Base = &dummy
+                       iov.SetLen(1)
+               }
+               msg.Control = (*byte)(unsafe.Pointer(&oob[0]))
+               msg.SetControllen(len(oob))
+       }
+       msg.Iov = &iov
+       msg.Iovlen = 1
+       if n, err = sendmsg(fd, &msg, flags); err != nil {
+               return 0, err
+       }
+       if len(oob) > 0 && len(p) == 0 {
+               n = 0
+       }
+       return n, nil
+}
+
+// BindToDevice binds the socket associated with fd to device.
+func BindToDevice(fd int, device string) (err error) {
+       return SetsockoptString(fd, SOL_SOCKET, SO_BINDTODEVICE, device)
+}
+
+//sys  ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
+
+func ptracePeek(req int, pid int, addr uintptr, out []byte) (count int, err error) {
+       // The peek requests are machine-size oriented, so we wrap it
+       // to retrieve arbitrary-length data.
+
+       // The ptrace syscall differs from glibc's ptrace.
+       // Peeks returns the word in *data, not as the return value.
+
+       var buf [sizeofPtr]byte
+
+       // Leading edge.  PEEKTEXT/PEEKDATA don't require aligned
+       // access (PEEKUSER warns that it might), but if we don't
+       // align our reads, we might straddle an unmapped page
+       // boundary and not get the bytes leading up to the page
+       // boundary.
+       n := 0
+       if addr%sizeofPtr != 0 {
+               err = ptrace(req, pid, addr-addr%sizeofPtr, uintptr(unsafe.Pointer(&buf[0])))
+               if err != nil {
+                       return 0, err
+               }
+               n += copy(out, buf[addr%sizeofPtr:])
+               out = out[n:]
+       }
+
+       // Remainder.
+       for len(out) > 0 {
+               // We use an internal buffer to guarantee alignment.
+               // It's not documented if this is necessary, but we're paranoid.
+               err = ptrace(req, pid, addr+uintptr(n), uintptr(unsafe.Pointer(&buf[0])))
+               if err != nil {
+                       return n, err
+               }
+               copied := copy(out, buf[0:])
+               n += copied
+               out = out[copied:]
+       }
+
+       return n, nil
+}
+
+func PtracePeekText(pid int, addr uintptr, out []byte) (count int, err error) {
+       return ptracePeek(PTRACE_PEEKTEXT, pid, addr, out)
+}
+
+func PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) {
+       return ptracePeek(PTRACE_PEEKDATA, pid, addr, out)
+}
+
+func ptracePoke(pokeReq int, peekReq int, pid int, addr uintptr, data []byte) (count int, err error) {
+       // As for ptracePeek, we need to align our accesses to deal
+       // with the possibility of straddling an invalid page.
+
+       // Leading edge.
+       n := 0
+       if addr%sizeofPtr != 0 {
+               var buf [sizeofPtr]byte
+               err = ptrace(peekReq, pid, addr-addr%sizeofPtr, uintptr(unsafe.Pointer(&buf[0])))
+               if err != nil {
+                       return 0, err
+               }
+               n += copy(buf[addr%sizeofPtr:], data)
+               word := *((*uintptr)(unsafe.Pointer(&buf[0])))
+               err = ptrace(pokeReq, pid, addr-addr%sizeofPtr, word)
+               if err != nil {
+                       return 0, err
+               }
+               data = data[n:]
+       }
+
+       // Interior.
+       for len(data) > sizeofPtr {
+               word := *((*uintptr)(unsafe.Pointer(&data[0])))
+               err = ptrace(pokeReq, pid, addr+uintptr(n), word)
+               if err != nil {
+                       return n, err
+               }
+               n += sizeofPtr
+               data = data[sizeofPtr:]
+       }
+
+       // Trailing edge.
+       if len(data) > 0 {
+               var buf [sizeofPtr]byte
+               err = ptrace(peekReq, pid, addr+uintptr(n), uintptr(unsafe.Pointer(&buf[0])))
+               if err != nil {
+                       return n, err
+               }
+               copy(buf[0:], data)
+               word := *((*uintptr)(unsafe.Pointer(&buf[0])))
+               err = ptrace(pokeReq, pid, addr+uintptr(n), word)
+               if err != nil {
+                       return n, err
+               }
+               n += len(data)
+       }
+
+       return n, nil
+}
+
+func PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) {
+       return ptracePoke(PTRACE_POKETEXT, PTRACE_PEEKTEXT, pid, addr, data)
+}
+
+func PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) {
+       return ptracePoke(PTRACE_POKEDATA, PTRACE_PEEKDATA, pid, addr, data)
+}
+
+func PtraceGetRegs(pid int, regsout *PtraceRegs) (err error) {
+       return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
+}
+
+func PtraceSetRegs(pid int, regs *PtraceRegs) (err error) {
+       return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
+}
+
+func PtraceSetOptions(pid int, options int) (err error) {
+       return ptrace(PTRACE_SETOPTIONS, pid, 0, uintptr(options))
+}
+
+func PtraceGetEventMsg(pid int) (msg uint, err error) {
+       var data _C_long
+       err = ptrace(PTRACE_GETEVENTMSG, pid, 0, uintptr(unsafe.Pointer(&data)))
+       msg = uint(data)
+       return
+}
+
+func PtraceCont(pid int, signal int) (err error) {
+       return ptrace(PTRACE_CONT, pid, 0, uintptr(signal))
+}
+
+func PtraceSyscall(pid int, signal int) (err error) {
+       return ptrace(PTRACE_SYSCALL, pid, 0, uintptr(signal))
+}
+
+func PtraceSingleStep(pid int) (err error) { return ptrace(PTRACE_SINGLESTEP, pid, 0, 0) }
+
+func PtraceAttach(pid int) (err error) { return ptrace(PTRACE_ATTACH, pid, 0, 0) }
+
+func PtraceDetach(pid int) (err error) { return ptrace(PTRACE_DETACH, pid, 0, 0) }
+
+//sys  reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error)
+
+func Reboot(cmd int) (err error) {
+       return reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, cmd, "")
+}
+
+func clen(n []byte) int {
+       for i := 0; i < len(n); i++ {
+               if n[i] == 0 {
+                       return i
+               }
+       }
+       return len(n)
+}
+
+func ReadDirent(fd int, buf []byte) (n int, err error) {
+       return Getdents(fd, buf)
+}
+
+func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) {
+       origlen := len(buf)
+       count = 0
+       for max != 0 && len(buf) > 0 {
+               dirent := (*Dirent)(unsafe.Pointer(&buf[0]))
+               buf = buf[dirent.Reclen:]
+               if dirent.Ino == 0 { // File absent in directory.
+                       continue
+               }
+               bytes := (*[10000]byte)(unsafe.Pointer(&dirent.Name[0]))
+               var name = string(bytes[0:clen(bytes[:])])
+               if name == "." || name == ".." { // Useless names
+                       continue
+               }
+               max--
+               count++
+               names = append(names, name)
+       }
+       return origlen - len(buf), count, names
+}
+
+//sys  mount(source string, target string, fstype string, flags uintptr, data *byte) (err error)
+
+func Mount(source string, target string, fstype string, flags uintptr, data string) (err error) {
+       // Certain file systems get rather angry and EINVAL if you give
+       // them an empty string of data, rather than NULL.
+       if data == "" {
+               return mount(source, target, fstype, flags, nil)
+       }
+       datap, err := BytePtrFromString(data)
+       if err != nil {
+               return err
+       }
+       return mount(source, target, fstype, flags, datap)
+}
+
+// Sendto
+// Recvfrom
+// Socketpair
+
+/*
+ * Direct access
+ */
+//sys  Acct(path string) (err error)
+//sys  Adjtimex(buf *Timex) (state int, err error)
+//sys  Chdir(path string) (err error)
+//sys  Chroot(path string) (err error)
+//sys  ClockGettime(clockid int32, time *Timespec) (err error)
+//sys  Close(fd int) (err error)
+//sys  Dup(oldfd int) (fd int, err error)
+//sys  Dup3(oldfd int, newfd int, flags int) (err error)
+//sysnb        EpollCreate(size int) (fd int, err error)
+//sysnb        EpollCreate1(flag int) (fd int, err error)
+//sysnb        EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error)
+//sys  EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)
+//sys  Exit(code int) = SYS_EXIT_GROUP
+//sys  Faccessat(dirfd int, path string, mode uint32, flags int) (err error)
+//sys  Fallocate(fd int, mode uint32, off int64, len int64) (err error)
+//sys  Fchdir(fd int) (err error)
+//sys  Fchmod(fd int, mode uint32) (err error)
+//sys  Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
+//sys  Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
+//sys  fcntl(fd int, cmd int, arg int) (val int, err error)
+//sys  Fdatasync(fd int) (err error)
+//sys  Flock(fd int, how int) (err error)
+//sys  Fsync(fd int) (err error)
+//sys  Getdents(fd int, buf []byte) (n int, err error) = SYS_GETDENTS64
+//sysnb        Getpgid(pid int) (pgid int, err error)
+
+func Getpgrp() (pid int) {
+       pid, _ = Getpgid(0)
+       return
+}
+
+//sysnb        Getpid() (pid int)
+//sysnb        Getppid() (ppid int)
+//sys  Getpriority(which int, who int) (prio int, err error)
+//sysnb        Getrusage(who int, rusage *Rusage) (err error)
+//sysnb        Gettid() (tid int)
+//sys  Getxattr(path string, attr string, dest []byte) (sz int, err error)
+//sys  InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error)
+//sysnb        InotifyInit1(flags int) (fd int, err error)
+//sysnb        InotifyRmWatch(fd int, watchdesc uint32) (success int, err error)
+//sysnb        Kill(pid int, sig syscall.Signal) (err error)
+//sys  Klogctl(typ int, buf []byte) (n int, err error) = SYS_SYSLOG
+//sys  Listxattr(path string, dest []byte) (sz int, err error)
+//sys  Mkdirat(dirfd int, path string, mode uint32) (err error)
+//sys  Mknodat(dirfd int, path string, mode uint32, dev int) (err error)
+//sys  Nanosleep(time *Timespec, leftover *Timespec) (err error)
+//sys  Pause() (err error)
+//sys  PivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT
+//sysnb prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) = SYS_PRLIMIT64
+//sys   Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error)
+//sys  read(fd int, p []byte) (n int, err error)
+//sys  Removexattr(path string, attr string) (err error)
+//sys  Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
+//sys  Setdomainname(p []byte) (err error)
+//sys  Sethostname(p []byte) (err error)
+//sysnb        Setpgid(pid int, pgid int) (err error)
+//sysnb        Setsid() (pid int, err error)
+//sysnb        Settimeofday(tv *Timeval) (err error)
+//sys  Setns(fd int, nstype int) (err error)
+
+// issue 1435.
+// On linux Setuid and Setgid only affects the current thread, not the process.
+// This does not match what most callers expect so we must return an error
+// here rather than letting the caller think that the call succeeded.
+
+func Setuid(uid int) (err error) {
+       return EOPNOTSUPP
+}
+
+func Setgid(uid int) (err error) {
+       return EOPNOTSUPP
+}
+
+//sys  Setpriority(which int, who int, prio int) (err error)
+//sys  Setxattr(path string, attr string, data []byte, flags int) (err error)
+//sys  Sync()
+//sysnb        Sysinfo(info *Sysinfo_t) (err error)
+//sys  Tee(rfd int, wfd int, len int, flags int) (n int64, err error)
+//sysnb        Tgkill(tgid int, tid int, sig syscall.Signal) (err error)
+//sysnb        Times(tms *Tms) (ticks uintptr, err error)
+//sysnb        Umask(mask int) (oldmask int)
+//sysnb        Uname(buf *Utsname) (err error)
+//sys  Unmount(target string, flags int) (err error) = SYS_UMOUNT2
+//sys  Unshare(flags int) (err error)
+//sys  Ustat(dev int, ubuf *Ustat_t) (err error)
+//sys  write(fd int, p []byte) (n int, err error)
+//sys  exitThread(code int) (err error) = SYS_EXIT
+//sys  readlen(fd int, p *byte, np int) (n int, err error) = SYS_READ
+//sys  writelen(fd int, p *byte, np int) (n int, err error) = SYS_WRITE
+
+// mmap varies by architecture; see syscall_linux_*.go.
+//sys  munmap(addr uintptr, length uintptr) (err error)
+
+var mapper = &mmapper{
+       active: make(map[*byte][]byte),
+       mmap:   mmap,
+       munmap: munmap,
+}
+
+func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {
+       return mapper.Mmap(fd, offset, length, prot, flags)
+}
+
+func Munmap(b []byte) (err error) {
+       return mapper.Munmap(b)
+}
+
+//sys  Madvise(b []byte, advice int) (err error)
+//sys  Mprotect(b []byte, prot int) (err error)
+//sys  Mlock(b []byte) (err error)
+//sys  Munlock(b []byte) (err error)
+//sys  Mlockall(flags int) (err error)
+//sys  Munlockall() (err error)
+
+/*
+ * Unimplemented
+ */
+// AddKey
+// AfsSyscall
+// Alarm
+// ArchPrctl
+// Brk
+// Capget
+// Capset
+// ClockGetres
+// ClockNanosleep
+// ClockSettime
+// Clone
+// CreateModule
+// DeleteModule
+// EpollCtlOld
+// EpollPwait
+// EpollWaitOld
+// Eventfd
+// Execve
+// Fgetxattr
+// Flistxattr
+// Fork
+// Fremovexattr
+// Fsetxattr
+// Futex
+// GetKernelSyms
+// GetMempolicy
+// GetRobustList
+// GetThreadArea
+// Getitimer
+// Getpmsg
+// IoCancel
+// IoDestroy
+// IoGetevents
+// IoSetup
+// IoSubmit
+// Ioctl
+// IoprioGet
+// IoprioSet
+// KexecLoad
+// Keyctl
+// Lgetxattr
+// Llistxattr
+// LookupDcookie
+// Lremovexattr
+// Lsetxattr
+// Mbind
+// MigratePages
+// Mincore
+// ModifyLdt
+// Mount
+// MovePages
+// Mprotect
+// MqGetsetattr
+// MqNotify
+// MqOpen
+// MqTimedreceive
+// MqTimedsend
+// MqUnlink
+// Mremap
+// Msgctl
+// Msgget
+// Msgrcv
+// Msgsnd
+// Msync
+// Newfstatat
+// Nfsservctl
+// Personality
+// Poll
+// Ppoll
+// Pselect6
+// Ptrace
+// Putpmsg
+// QueryModule
+// Quotactl
+// Readahead
+// Readv
+// RemapFilePages
+// RequestKey
+// RestartSyscall
+// RtSigaction
+// RtSigpending
+// RtSigprocmask
+// RtSigqueueinfo
+// RtSigreturn
+// RtSigsuspend
+// RtSigtimedwait
+// SchedGetPriorityMax
+// SchedGetPriorityMin
+// SchedGetaffinity
+// SchedGetparam
+// SchedGetscheduler
+// SchedRrGetInterval
+// SchedSetaffinity
+// SchedSetparam
+// SchedYield
+// Security
+// Semctl
+// Semget
+// Semop
+// Semtimedop
+// SetMempolicy
+// SetRobustList
+// SetThreadArea
+// SetTidAddress
+// Shmat
+// Shmctl
+// Shmdt
+// Shmget
+// Sigaltstack
+// Signalfd
+// Swapoff
+// Swapon
+// Sysfs
+// TimerCreate
+// TimerDelete
+// TimerGetoverrun
+// TimerGettime
+// TimerSettime
+// Timerfd
+// Tkill (obsolete)
+// Tuxcall
+// Umount2
+// Uselib
+// Utimensat
+// Vfork
+// Vhangup
+// Vmsplice
+// Vserver
+// Waitid
+// _Sysctl
diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_386.go
new file mode 100644 (file)
index 0000000..4584401
--- /dev/null
@@ -0,0 +1,390 @@
+// 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.
+
+// TODO(rsc): Rewrite all nn(SP) references into name+(nn-8)(FP)
+// so that go vet can check that they are correct.
+
+// +build 386,linux
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+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 = int32(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.Sec = int32(nsec / 1e9)
+       tv.Usec = int32(nsec % 1e9 / 1e3)
+       return
+}
+
+//sysnb        pipe(p *[2]_C_int) (err error)
+
+func Pipe(p []int) (err error) {
+       if len(p) != 2 {
+               return EINVAL
+       }
+       var pp [2]_C_int
+       err = pipe(&pp)
+       p[0] = int(pp[0])
+       p[1] = int(pp[1])
+       return
+}
+
+//sysnb pipe2(p *[2]_C_int, flags int) (err error)
+
+func Pipe2(p []int, flags int) (err error) {
+       if len(p) != 2 {
+               return EINVAL
+       }
+       var pp [2]_C_int
+       err = pipe2(&pp, flags)
+       p[0] = int(pp[0])
+       p[1] = int(pp[1])
+       return
+}
+
+// 64-bit file system and 32-bit uid calls
+// (386 default is 32-bit file system and 16-bit uid).
+//sys  Dup2(oldfd int, newfd int) (err error)
+//sys  Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64_64
+//sys  Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32
+//sys  Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
+//sys  Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64
+//sysnb        Getegid() (egid int) = SYS_GETEGID32
+//sysnb        Geteuid() (euid int) = SYS_GETEUID32
+//sysnb        Getgid() (gid int) = SYS_GETGID32
+//sysnb        Getuid() (uid int) = SYS_GETUID32
+//sysnb        InotifyInit() (fd int, err error)
+//sys  Ioperm(from int, num int, on int) (err error)
+//sys  Iopl(level int) (err error)
+//sys  Lchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32
+//sys  Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
+//sys  Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
+//sys  Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
+//sys  sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64
+//sys  Setfsgid(gid int) (err error) = SYS_SETFSGID32
+//sys  Setfsuid(uid int) (err error) = SYS_SETFSUID32
+//sysnb        Setregid(rgid int, egid int) (err error) = SYS_SETREGID32
+//sysnb        Setresgid(rgid int, egid int, sgid int) (err error) = SYS_SETRESGID32
+//sysnb        Setresuid(ruid int, euid int, suid int) (err error) = SYS_SETRESUID32
+//sysnb        Setreuid(ruid int, euid int) (err error) = SYS_SETREUID32
+//sys  Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)
+//sys  Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
+//sys  SyncFileRange(fd int, off int64, n int64, flags int) (err error)
+//sys  Truncate(path string, length int64) (err error) = SYS_TRUNCATE64
+//sysnb        getgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32
+//sysnb        setgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32
+//sys  Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT
+
+//sys  mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)
+
+func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
+       page := uintptr(offset / 4096)
+       if offset != int64(page)*4096 {
+               return 0, EINVAL
+       }
+       return mmap2(addr, length, prot, flags, fd, page)
+}
+
+type rlimit32 struct {
+       Cur uint32
+       Max uint32
+}
+
+//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT
+
+const rlimInf32 = ^uint32(0)
+const rlimInf64 = ^uint64(0)
+
+func Getrlimit(resource int, rlim *Rlimit) (err error) {
+       err = prlimit(0, resource, nil, rlim)
+       if err != ENOSYS {
+               return err
+       }
+
+       rl := rlimit32{}
+       err = getrlimit(resource, &rl)
+       if err != nil {
+               return
+       }
+
+       if rl.Cur == rlimInf32 {
+               rlim.Cur = rlimInf64
+       } else {
+               rlim.Cur = uint64(rl.Cur)
+       }
+
+       if rl.Max == rlimInf32 {
+               rlim.Max = rlimInf64
+       } else {
+               rlim.Max = uint64(rl.Max)
+       }
+       return
+}
+
+//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT
+
+func Setrlimit(resource int, rlim *Rlimit) (err error) {
+       err = prlimit(0, resource, rlim, nil)
+       if err != ENOSYS {
+               return err
+       }
+
+       rl := rlimit32{}
+       if rlim.Cur == rlimInf64 {
+               rl.Cur = rlimInf32
+       } else if rlim.Cur < uint64(rlimInf32) {
+               rl.Cur = uint32(rlim.Cur)
+       } else {
+               return EINVAL
+       }
+       if rlim.Max == rlimInf64 {
+               rl.Max = rlimInf32
+       } else if rlim.Max < uint64(rlimInf32) {
+               rl.Max = uint32(rlim.Max)
+       } else {
+               return EINVAL
+       }
+
+       return setrlimit(resource, &rl)
+}
+
+// Underlying system call writes to newoffset via pointer.
+// Implemented in assembly to avoid allocation.
+func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno)
+
+func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
+       newoffset, errno := seek(fd, offset, whence)
+       if errno != 0 {
+               return 0, errno
+       }
+       return newoffset, nil
+}
+
+// Vsyscalls on amd64.
+//sysnb        Gettimeofday(tv *Timeval) (err error)
+//sysnb        Time(t *Time_t) (tt Time_t, err error)
+
+//sys  Utime(path string, buf *Utimbuf) (err error)
+
+// On x86 Linux, all the socket calls go through an extra indirection,
+// I think because the 5-register system call interface can't handle
+// the 6-argument calls like sendto and recvfrom.  Instead the
+// arguments to the underlying system call are the number below
+// and a pointer to an array of uintptr.  We hide the pointer in the
+// socketcall assembly to avoid allocation on every system call.
+
+const (
+       // see linux/net.h
+       _SOCKET      = 1
+       _BIND        = 2
+       _CONNECT     = 3
+       _LISTEN      = 4
+       _ACCEPT      = 5
+       _GETSOCKNAME = 6
+       _GETPEERNAME = 7
+       _SOCKETPAIR  = 8
+       _SEND        = 9
+       _RECV        = 10
+       _SENDTO      = 11
+       _RECVFROM    = 12
+       _SHUTDOWN    = 13
+       _SETSOCKOPT  = 14
+       _GETSOCKOPT  = 15
+       _SENDMSG     = 16
+       _RECVMSG     = 17
+       _ACCEPT4     = 18
+       _RECVMMSG    = 19
+       _SENDMMSG    = 20
+)
+
+func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)
+func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
+       fd, e := socketcall(_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)
+       if e != 0 {
+               err = e
+       }
+       return
+}
+
+func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {
+       fd, e := socketcall(_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
+       if e != 0 {
+               err = e
+       }
+       return
+}
+
+func getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, e := rawsocketcall(_GETSOCKNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)
+       if e != 0 {
+               err = e
+       }
+       return
+}
+
+func getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, e := rawsocketcall(_GETPEERNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)
+       if e != 0 {
+               err = e
+       }
+       return
+}
+
+func socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) {
+       _, e := rawsocketcall(_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0)
+       if e != 0 {
+               err = e
+       }
+       return
+}
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, e := socketcall(_BIND, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)
+       if e != 0 {
+               err = e
+       }
+       return
+}
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, e := socketcall(_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)
+       if e != 0 {
+               err = e
+       }
+       return
+}
+
+func socket(domain int, typ int, proto int) (fd int, err error) {
+       fd, e := rawsocketcall(_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0)
+       if e != 0 {
+               err = e
+       }
+       return
+}
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+       _, e := socketcall(_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+       if e != 0 {
+               err = e
+       }
+       return
+}
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+       _, e := socketcall(_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), vallen, 0)
+       if e != 0 {
+               err = e
+       }
+       return
+}
+
+func recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
+       var base uintptr
+       if len(p) > 0 {
+               base = uintptr(unsafe.Pointer(&p[0]))
+       }
+       n, e := socketcall(_RECVFROM, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+       if e != 0 {
+               err = e
+       }
+       return
+}
+
+func sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+       var base uintptr
+       if len(p) > 0 {
+               base = uintptr(unsafe.Pointer(&p[0]))
+       }
+       _, e := socketcall(_SENDTO, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen))
+       if e != 0 {
+               err = e
+       }
+       return
+}
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       n, e := socketcall(_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)
+       if e != 0 {
+               err = e
+       }
+       return
+}
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       n, e := socketcall(_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)
+       if e != 0 {
+               err = e
+       }
+       return
+}
+
+func Listen(s int, n int) (err error) {
+       _, e := socketcall(_LISTEN, uintptr(s), uintptr(n), 0, 0, 0, 0)
+       if e != 0 {
+               err = e
+       }
+       return
+}
+
+func Shutdown(s, how int) (err error) {
+       _, e := socketcall(_SHUTDOWN, uintptr(s), uintptr(how), 0, 0, 0, 0)
+       if e != 0 {
+               err = e
+       }
+       return
+}
+
+func Fstatfs(fd int, buf *Statfs_t) (err error) {
+       _, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))
+       if e != 0 {
+               err = e
+       }
+       return
+}
+
+func Statfs(path string, buf *Statfs_t) (err error) {
+       pathp, err := BytePtrFromString(path)
+       if err != nil {
+               return err
+       }
+       _, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))
+       if e != 0 {
+               err = e
+       }
+       return
+}
+
+func (r *PtraceRegs) PC() uint64 { return uint64(uint32(r.Eip)) }
+
+func (r *PtraceRegs) SetPC(pc uint64) { r.Eip = int32(pc) }
+
+func (iov *Iovec) SetLen(length int) {
+       iov.Len = uint32(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+       msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+       cmsg.Len = uint32(length)
+}
diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go
new file mode 100644 (file)
index 0000000..60698e4
--- /dev/null
@@ -0,0 +1,148 @@
+// 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.
+
+// +build amd64,linux
+
+package unix
+
+import "syscall"
+
+//sys  Dup2(oldfd int, newfd int) (err error)
+//sys  Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64
+//sys  Fchown(fd int, uid int, gid int) (err error)
+//sys  Fstat(fd int, stat *Stat_t) (err error)
+//sys  Fstatfs(fd int, buf *Statfs_t) (err error)
+//sys  Ftruncate(fd int, length int64) (err error)
+//sysnb        Getegid() (egid int)
+//sysnb        Geteuid() (euid int)
+//sysnb        Getgid() (gid int)
+//sysnb        Getrlimit(resource int, rlim *Rlimit) (err error)
+//sysnb        Getuid() (uid int)
+//sysnb        InotifyInit() (fd int, err error)
+//sys  Ioperm(from int, num int, on int) (err error)
+//sys  Iopl(level int) (err error)
+//sys  Lchown(path string, uid int, gid int) (err error)
+//sys  Listen(s int, n int) (err error)
+//sys  Lstat(path string, stat *Stat_t) (err error)
+//sys  Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
+//sys  Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
+//sys  Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
+//sys  Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
+//sys  sendfile(outfd int, infd int, offset *int64, count int) (written int, err error)
+//sys  Setfsgid(gid int) (err error)
+//sys  Setfsuid(uid int) (err error)
+//sysnb        Setregid(rgid int, egid int) (err error)
+//sysnb        Setresgid(rgid int, egid int, sgid int) (err error)
+//sysnb        Setresuid(ruid int, euid int, suid int) (err error)
+//sysnb        Setrlimit(resource int, rlim *Rlimit) (err error)
+//sysnb        Setreuid(ruid int, euid int) (err error)
+//sys  Shutdown(fd int, how int) (err error)
+//sys  Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)
+//sys  Stat(path string, stat *Stat_t) (err error)
+//sys  Statfs(path string, buf *Statfs_t) (err error)
+//sys  SyncFileRange(fd int, off int64, n int64, flags int) (err error)
+//sys  Truncate(path string, length int64) (err error)
+//sys  accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
+//sys  accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
+//sys  bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
+//sys  connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
+//sysnb        getgroups(n int, list *_Gid_t) (nn int, err error)
+//sysnb        setgroups(n int, list *_Gid_t) (err error)
+//sys  getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)
+//sys  setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)
+//sysnb        socket(domain int, typ int, proto int) (fd int, err error)
+//sysnb        socketpair(domain int, typ int, proto int, fd *[2]int32) (err error)
+//sysnb        getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
+//sysnb        getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
+//sys  recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)
+//sys  sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)
+//sys  recvmsg(s int, msg *Msghdr, flags int) (n int, err error)
+//sys  sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
+//sys  mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
+
+//go:noescape
+func gettimeofday(tv *Timeval) (err syscall.Errno)
+
+func Gettimeofday(tv *Timeval) (err error) {
+       errno := gettimeofday(tv)
+       if errno != 0 {
+               return errno
+       }
+       return nil
+}
+
+func Getpagesize() int { return 4096 }
+
+func Time(t *Time_t) (tt Time_t, err error) {
+       var tv Timeval
+       errno := gettimeofday(&tv)
+       if errno != 0 {
+               return 0, errno
+       }
+       if t != nil {
+               *t = Time_t(tv.Sec)
+       }
+       return Time_t(tv.Sec), nil
+}
+
+//sys  Utime(path string, buf *Utimbuf) (err error)
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+       ts.Sec = 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.Sec = nsec / 1e9
+       tv.Usec = nsec % 1e9 / 1e3
+       return
+}
+
+//sysnb        pipe(p *[2]_C_int) (err error)
+
+func Pipe(p []int) (err error) {
+       if len(p) != 2 {
+               return EINVAL
+       }
+       var pp [2]_C_int
+       err = pipe(&pp)
+       p[0] = int(pp[0])
+       p[1] = int(pp[1])
+       return
+}
+
+//sysnb pipe2(p *[2]_C_int, flags int) (err error)
+
+func Pipe2(p []int, flags int) (err error) {
+       if len(p) != 2 {
+               return EINVAL
+       }
+       var pp [2]_C_int
+       err = pipe2(&pp, flags)
+       p[0] = int(pp[0])
+       p[1] = int(pp[1])
+       return
+}
+
+func (r *PtraceRegs) PC() uint64 { return r.Rip }
+
+func (r *PtraceRegs) SetPC(pc uint64) { r.Rip = pc }
+
+func (iov *Iovec) SetLen(length int) {
+       iov.Len = uint64(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+       msghdr.Controllen = uint64(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+       cmsg.Len = uint64(length)
+}
diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go
new file mode 100644 (file)
index 0000000..3b4da20
--- /dev/null
@@ -0,0 +1,252 @@
+// 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.
+
+// +build arm,linux
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+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 = int32(nsec % 1e9)
+       return
+}
+
+func NsecToTimeval(nsec int64) (tv Timeval) {
+       nsec += 999 // round up to microsecond
+       tv.Sec = int32(nsec / 1e9)
+       tv.Usec = int32(nsec % 1e9 / 1e3)
+       return
+}
+
+func Pipe(p []int) (err error) {
+       if len(p) != 2 {
+               return EINVAL
+       }
+       var pp [2]_C_int
+       err = pipe2(&pp, 0)
+       p[0] = int(pp[0])
+       p[1] = int(pp[1])
+       return
+}
+
+//sysnb pipe2(p *[2]_C_int, flags int) (err error)
+
+func Pipe2(p []int, flags int) (err error) {
+       if len(p) != 2 {
+               return EINVAL
+       }
+       var pp [2]_C_int
+       err = pipe2(&pp, flags)
+       p[0] = int(pp[0])
+       p[1] = int(pp[1])
+       return
+}
+
+// Underlying system call writes to newoffset via pointer.
+// Implemented in assembly to avoid allocation.
+func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno)
+
+func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
+       newoffset, errno := seek(fd, offset, whence)
+       if errno != 0 {
+               return 0, errno
+       }
+       return newoffset, nil
+}
+
+//sys  accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
+//sys  accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
+//sys  bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
+//sys  connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
+//sysnb        getgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32
+//sysnb        setgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32
+//sys  getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)
+//sys  setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)
+//sysnb        socket(domain int, typ int, proto int) (fd int, err error)
+//sysnb        getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
+//sysnb        getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
+//sys  recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)
+//sys  sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)
+//sysnb        socketpair(domain int, typ int, flags int, fd *[2]int32) (err error)
+//sys  recvmsg(s int, msg *Msghdr, flags int) (n int, err error)
+//sys  sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
+
+// 64-bit file system and 32-bit uid calls
+// (16-bit uid calls are not always supported in newer kernels)
+//sys  Dup2(oldfd int, newfd int) (err error)
+//sys  Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32
+//sys  Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64
+//sysnb        Getegid() (egid int) = SYS_GETEGID32
+//sysnb        Geteuid() (euid int) = SYS_GETEUID32
+//sysnb        Getgid() (gid int) = SYS_GETGID32
+//sysnb        Getuid() (uid int) = SYS_GETUID32
+//sysnb        InotifyInit() (fd int, err error)
+//sys  Lchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32
+//sys  Listen(s int, n int) (err error)
+//sys  Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
+//sys  sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64
+//sys  Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT
+//sys  Setfsgid(gid int) (err error) = SYS_SETFSGID32
+//sys  Setfsuid(uid int) (err error) = SYS_SETFSUID32
+//sysnb        Setregid(rgid int, egid int) (err error) = SYS_SETREGID32
+//sysnb        Setresgid(rgid int, egid int, sgid int) (err error) = SYS_SETRESGID32
+//sysnb        Setresuid(ruid int, euid int, suid int) (err error) = SYS_SETRESUID32
+//sysnb        Setreuid(ruid int, euid int) (err error) = SYS_SETREUID32
+//sys  Shutdown(fd int, how int) (err error)
+//sys  Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)
+//sys  Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
+
+// Vsyscalls on amd64.
+//sysnb        Gettimeofday(tv *Timeval) (err error)
+
+func Time(t *Time_t) (Time_t, error) {
+       var tv Timeval
+       err := Gettimeofday(&tv)
+       if err != nil {
+               return 0, err
+       }
+       if t != nil {
+               *t = Time_t(tv.Sec)
+       }
+       return Time_t(tv.Sec), nil
+}
+
+func Utime(path string, buf *Utimbuf) error {
+       tv := []Timeval{
+               {Sec: buf.Actime},
+               {Sec: buf.Modtime},
+       }
+       return Utimes(path, tv)
+}
+
+//sys   Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
+//sys   Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
+//sys  Truncate(path string, length int64) (err error) = SYS_TRUNCATE64
+//sys  Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64
+
+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
+       _, _, e1 := Syscall6(SYS_ARM_FADVISE64_64, uintptr(fd), uintptr(advice), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+//sys  mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)
+
+func Fstatfs(fd int, buf *Statfs_t) (err error) {
+       _, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))
+       if e != 0 {
+               err = e
+       }
+       return
+}
+
+func Statfs(path string, buf *Statfs_t) (err error) {
+       pathp, err := BytePtrFromString(path)
+       if err != nil {
+               return err
+       }
+       _, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))
+       if e != 0 {
+               err = e
+       }
+       return
+}
+
+func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
+       page := uintptr(offset / 4096)
+       if offset != int64(page)*4096 {
+               return 0, EINVAL
+       }
+       return mmap2(addr, length, prot, flags, fd, page)
+}
+
+type rlimit32 struct {
+       Cur uint32
+       Max uint32
+}
+
+//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT
+
+const rlimInf32 = ^uint32(0)
+const rlimInf64 = ^uint64(0)
+
+func Getrlimit(resource int, rlim *Rlimit) (err error) {
+       err = prlimit(0, resource, nil, rlim)
+       if err != ENOSYS {
+               return err
+       }
+
+       rl := rlimit32{}
+       err = getrlimit(resource, &rl)
+       if err != nil {
+               return
+       }
+
+       if rl.Cur == rlimInf32 {
+               rlim.Cur = rlimInf64
+       } else {
+               rlim.Cur = uint64(rl.Cur)
+       }
+
+       if rl.Max == rlimInf32 {
+               rlim.Max = rlimInf64
+       } else {
+               rlim.Max = uint64(rl.Max)
+       }
+       return
+}
+
+//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT
+
+func Setrlimit(resource int, rlim *Rlimit) (err error) {
+       err = prlimit(0, resource, rlim, nil)
+       if err != ENOSYS {
+               return err
+       }
+
+       rl := rlimit32{}
+       if rlim.Cur == rlimInf64 {
+               rl.Cur = rlimInf32
+       } else if rlim.Cur < uint64(rlimInf32) {
+               rl.Cur = uint32(rlim.Cur)
+       } else {
+               return EINVAL
+       }
+       if rlim.Max == rlimInf64 {
+               rl.Max = rlimInf32
+       } else if rlim.Max < uint64(rlimInf32) {
+               rl.Max = uint32(rlim.Max)
+       } else {
+               return EINVAL
+       }
+
+       return setrlimit(resource, &rl)
+}
+
+func (r *PtraceRegs) PC() uint64 { return uint64(r.Uregs[15]) }
+
+func (r *PtraceRegs) SetPC(pc uint64) { r.Uregs[15] = uint32(pc) }
+
+func (iov *Iovec) SetLen(length int) {
+       iov.Len = uint32(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+       msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+       cmsg.Len = uint32(length)
+}
diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go
new file mode 100644 (file)
index 0000000..4258115
--- /dev/null
@@ -0,0 +1,169 @@
+// Copyright 2015 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.
+
+// +build arm64,linux
+
+package unix
+
+const _SYS_dup = SYS_DUP3
+
+//sys  Fchown(fd int, uid int, gid int) (err error)
+//sys  Fstat(fd int, stat *Stat_t) (err error)
+//sys  Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
+//sys  Fstatfs(fd int, buf *Statfs_t) (err error)
+//sys  Ftruncate(fd int, length int64) (err error)
+//sysnb        Getegid() (egid int)
+//sysnb        Geteuid() (euid int)
+//sysnb        Getgid() (gid int)
+//sysnb        Getrlimit(resource int, rlim *Rlimit) (err error)
+//sysnb        Getuid() (uid int)
+//sys  Listen(s int, n int) (err error)
+//sys  Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
+//sys  Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
+//sys  Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
+//sys  Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS_PSELECT6
+//sys  sendfile(outfd int, infd int, offset *int64, count int) (written int, err error)
+//sys  Setfsgid(gid int) (err error)
+//sys  Setfsuid(uid int) (err error)
+//sysnb        Setregid(rgid int, egid int) (err error)
+//sysnb        Setresgid(rgid int, egid int, sgid int) (err error)
+//sysnb        Setresuid(ruid int, euid int, suid int) (err error)
+//sysnb        Setrlimit(resource int, rlim *Rlimit) (err error)
+//sysnb        Setreuid(ruid int, euid int) (err error)
+//sys  Shutdown(fd int, how int) (err error)
+//sys  Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)
+
+func Stat(path string, stat *Stat_t) (err error) {
+       return Fstatat(AT_FDCWD, path, stat, 0)
+}
+
+func Lchown(path string, uid int, gid int) (err error) {
+       return Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW)
+}
+
+func Lstat(path string, stat *Stat_t) (err error) {
+       return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)
+}
+
+//sys  Statfs(path string, buf *Statfs_t) (err error)
+//sys  SyncFileRange(fd int, off int64, n int64, flags int) (err error)
+//sys  Truncate(path string, length int64) (err error)
+//sys  accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
+//sys  accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
+//sys  bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
+//sys  connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
+//sysnb        getgroups(n int, list *_Gid_t) (nn int, err error)
+//sysnb        setgroups(n int, list *_Gid_t) (err error)
+//sys  getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)
+//sys  setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)
+//sysnb        socket(domain int, typ int, proto int) (fd int, err error)
+//sysnb        socketpair(domain int, typ int, proto int, fd *[2]int32) (err error)
+//sysnb        getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
+//sysnb        getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
+//sys  recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)
+//sys  sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)
+//sys  recvmsg(s int, msg *Msghdr, flags int) (n int, err error)
+//sys  sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
+//sys  mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
+
+func Getpagesize() int { return 65536 }
+
+//sysnb        Gettimeofday(tv *Timeval) (err error)
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+       ts.Sec = 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.Sec = nsec / 1e9
+       tv.Usec = nsec % 1e9 / 1e3
+       return
+}
+
+func Time(t *Time_t) (Time_t, error) {
+       var tv Timeval
+       err := Gettimeofday(&tv)
+       if err != nil {
+               return 0, err
+       }
+       if t != nil {
+               *t = Time_t(tv.Sec)
+       }
+       return Time_t(tv.Sec), nil
+}
+
+func Utime(path string, buf *Utimbuf) error {
+       tv := []Timeval{
+               {Sec: buf.Actime},
+               {Sec: buf.Modtime},
+       }
+       return Utimes(path, tv)
+}
+
+func Pipe(p []int) (err error) {
+       if len(p) != 2 {
+               return EINVAL
+       }
+       var pp [2]_C_int
+       err = pipe2(&pp, 0)
+       p[0] = int(pp[0])
+       p[1] = int(pp[1])
+       return
+}
+
+//sysnb pipe2(p *[2]_C_int, flags int) (err error)
+
+func Pipe2(p []int, flags int) (err error) {
+       if len(p) != 2 {
+               return EINVAL
+       }
+       var pp [2]_C_int
+       err = pipe2(&pp, flags)
+       p[0] = int(pp[0])
+       p[1] = int(pp[1])
+       return
+}
+
+func (r *PtraceRegs) PC() uint64 { return r.Pc }
+
+func (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc }
+
+func (iov *Iovec) SetLen(length int) {
+       iov.Len = uint64(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+       msghdr.Controllen = uint64(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+       cmsg.Len = uint64(length)
+}
+
+func InotifyInit() (fd int, err error) {
+       return InotifyInit1(0)
+}
+
+// TODO(dfc): constants that should be in zsysnum_linux_arm64.go, remove
+// these when the deprecated syscalls that the syscall package relies on
+// are removed.
+const (
+       SYS_GETPGRP      = 1060
+       SYS_UTIMES       = 1037
+       SYS_FUTIMESAT    = 1066
+       SYS_PAUSE        = 1061
+       SYS_USTAT        = 1070
+       SYS_UTIME        = 1063
+       SYS_LCHOWN       = 1032
+       SYS_TIME         = 1062
+       SYS_EPOLL_CREATE = 1042
+       SYS_EPOLL_WAIT   = 1069
+)
diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go
new file mode 100644 (file)
index 0000000..f23dd6c
--- /dev/null
@@ -0,0 +1,206 @@
+// Copyright 2015 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.
+
+// +build linux
+// +build mips64 mips64le
+
+package unix
+
+// Linux introduced getdents64 syscall for N64 ABI only in 3.10
+// (May 21 2013, rev dec33abaafc89bcbd78f85fad0513170415a26d5),
+// to support older kernels, we have to use getdents for mips64.
+// Also note that struct dirent is different for these two.
+// Lookup linux_dirent{,64} in kernel source code for details.
+const _SYS_getdents = SYS_GETDENTS
+
+//sys  Fchown(fd int, uid int, gid int) (err error)
+//sys  Fstatfs(fd int, buf *Statfs_t) (err error)
+//sys  Ftruncate(fd int, length int64) (err error)
+//sysnb        Getegid() (egid int)
+//sysnb        Geteuid() (euid int)
+//sysnb        Getgid() (gid int)
+//sysnb        Getrlimit(resource int, rlim *Rlimit) (err error)
+//sysnb        Getuid() (uid int)
+//sys  Lchown(path string, uid int, gid int) (err error)
+//sys  Listen(s int, n int) (err error)
+//sys  Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
+//sys  Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
+//sys  Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
+//sys  Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS_PSELECT6
+//sys  sendfile(outfd int, infd int, offset *int64, count int) (written int, err error)
+//sys  Setfsgid(gid int) (err error)
+//sys  Setfsuid(uid int) (err error)
+//sysnb        Setregid(rgid int, egid int) (err error)
+//sysnb        Setresgid(rgid int, egid int, sgid int) (err error)
+//sysnb        Setresuid(ruid int, euid int, suid int) (err error)
+//sysnb        Setrlimit(resource int, rlim *Rlimit) (err error)
+//sysnb        Setreuid(ruid int, euid int) (err error)
+//sys  Shutdown(fd int, how int) (err error)
+//sys  Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)
+//sys  Statfs(path string, buf *Statfs_t) (err error)
+//sys  SyncFileRange(fd int, off int64, n int64, flags int) (err error)
+//sys  Truncate(path string, length int64) (err error)
+//sys  accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
+//sys  accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
+//sys  bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
+//sys  connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
+//sysnb        getgroups(n int, list *_Gid_t) (nn int, err error)
+//sysnb        setgroups(n int, list *_Gid_t) (err error)
+//sys  getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)
+//sys  setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)
+//sysnb        socket(domain int, typ int, proto int) (fd int, err error)
+//sysnb        socketpair(domain int, typ int, proto int, fd *[2]int32) (err error)
+//sysnb        getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
+//sysnb        getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
+//sys  recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)
+//sys  sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)
+//sys  recvmsg(s int, msg *Msghdr, flags int) (n int, err error)
+//sys  sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
+//sys  mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
+
+func Getpagesize() int { return 65536 }
+
+//sysnb        Gettimeofday(tv *Timeval) (err error)
+
+func Time(t *Time_t) (tt Time_t, err error) {
+       var tv Timeval
+       err = Gettimeofday(&tv)
+       if err != nil {
+               return 0, err
+       }
+       if t != nil {
+               *t = Time_t(tv.Sec)
+       }
+       return Time_t(tv.Sec), nil
+}
+
+//sys  Utime(path string, buf *Utimbuf) (err error)
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+       ts.Sec = 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.Sec = nsec / 1e9
+       tv.Usec = nsec % 1e9 / 1e3
+       return
+}
+
+func Pipe(p []int) (err error) {
+       if len(p) != 2 {
+               return EINVAL
+       }
+       var pp [2]_C_int
+       err = pipe2(&pp, 0)
+       p[0] = int(pp[0])
+       p[1] = int(pp[1])
+       return
+}
+
+//sysnb pipe2(p *[2]_C_int, flags int) (err error)
+
+func Pipe2(p []int, flags int) (err error) {
+       if len(p) != 2 {
+               return EINVAL
+       }
+       var pp [2]_C_int
+       err = pipe2(&pp, flags)
+       p[0] = int(pp[0])
+       p[1] = int(pp[1])
+       return
+}
+
+func Ioperm(from int, num int, on int) (err error) {
+       return ENOSYS
+}
+
+func Iopl(level int) (err error) {
+       return ENOSYS
+}
+
+type stat_t struct {
+       Dev        uint32
+       Pad0       [3]int32
+       Ino        uint64
+       Mode       uint32
+       Nlink      uint32
+       Uid        uint32
+       Gid        uint32
+       Rdev       uint32
+       Pad1       [3]uint32
+       Size       int64
+       Atime      uint32
+       Atime_nsec uint32
+       Mtime      uint32
+       Mtime_nsec uint32
+       Ctime      uint32
+       Ctime_nsec uint32
+       Blksize    uint32
+       Pad2       uint32
+       Blocks     int64
+}
+
+//sys  fstat(fd int, st *stat_t) (err error)
+//sys  lstat(path string, st *stat_t) (err error)
+//sys  stat(path string, st *stat_t) (err error)
+
+func Fstat(fd int, s *Stat_t) (err error) {
+       st := &stat_t{}
+       err = fstat(fd, st)
+       fillStat_t(s, st)
+       return
+}
+
+func Lstat(path string, s *Stat_t) (err error) {
+       st := &stat_t{}
+       err = lstat(path, st)
+       fillStat_t(s, st)
+       return
+}
+
+func Stat(path string, s *Stat_t) (err error) {
+       st := &stat_t{}
+       err = stat(path, st)
+       fillStat_t(s, st)
+       return
+}
+
+func fillStat_t(s *Stat_t, st *stat_t) {
+       s.Dev = st.Dev
+       s.Ino = st.Ino
+       s.Mode = st.Mode
+       s.Nlink = st.Nlink
+       s.Uid = st.Uid
+       s.Gid = st.Gid
+       s.Rdev = st.Rdev
+       s.Size = st.Size
+       s.Atim = Timespec{int64(st.Atime), int64(st.Atime_nsec)}
+       s.Mtim = Timespec{int64(st.Mtime), int64(st.Mtime_nsec)}
+       s.Ctim = Timespec{int64(st.Ctime), int64(st.Ctime_nsec)}
+       s.Blksize = st.Blksize
+       s.Blocks = st.Blocks
+}
+
+func (r *PtraceRegs) PC() uint64 { return r.Regs[64] }
+
+func (r *PtraceRegs) SetPC(pc uint64) { r.Regs[64] = pc }
+
+func (iov *Iovec) SetLen(length int) {
+       iov.Len = uint64(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+       msghdr.Controllen = uint64(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+       cmsg.Len = uint64(length)
+}
diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go
new file mode 100644 (file)
index 0000000..2503b7f
--- /dev/null
@@ -0,0 +1,98 @@
+// 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.
+
+// +build linux
+// +build ppc64 ppc64le
+
+package unix
+
+//sys  Fchown(fd int, uid int, gid int) (err error)
+//sys  Fstat(fd int, stat *Stat_t) (err error)
+//sys  Fstatfs(fd int, buf *Statfs_t) (err error)
+//sys  Ftruncate(fd int, length int64) (err error)
+//sysnb        Getegid() (egid int)
+//sysnb        Geteuid() (euid int)
+//sysnb        Getgid() (gid int)
+//sysnb        Getrlimit(resource int, rlim *Rlimit) (err error) = SYS_UGETRLIMIT
+//sysnb        Getuid() (uid int)
+//sys  Ioperm(from int, num int, on int) (err error)
+//sys  Iopl(level int) (err error)
+//sys  Lchown(path string, uid int, gid int) (err error)
+//sys  Listen(s int, n int) (err error)
+//sys  Lstat(path string, stat *Stat_t) (err error)
+//sys  Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64
+//sys  Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64
+//sys  Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK
+//sys  Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
+//sys  sendfile(outfd int, infd int, offset *int64, count int) (written int, err error)
+//sys  Setfsgid(gid int) (err error)
+//sys  Setfsuid(uid int) (err error)
+//sysnb        Setregid(rgid int, egid int) (err error)
+//sysnb        Setresgid(rgid int, egid int, sgid int) (err error)
+//sysnb        Setresuid(ruid int, euid int, suid int) (err error)
+//sysnb        Setrlimit(resource int, rlim *Rlimit) (err error)
+//sysnb        Setreuid(ruid int, euid int) (err error)
+//sys  Shutdown(fd int, how int) (err error)
+//sys  Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)
+//sys  Stat(path string, stat *Stat_t) (err error)
+//sys  Statfs(path string, buf *Statfs_t) (err error)
+//sys  SyncFileRange(fd int, off int64, n int64, flags int) (err error) = SYS_SYNC_FILE_RANGE2
+//sys  Truncate(path string, length int64) (err error)
+//sys  accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
+//sys  accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)
+//sys  bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
+//sys  connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
+//sysnb        getgroups(n int, list *_Gid_t) (nn int, err error)
+//sysnb        setgroups(n int, list *_Gid_t) (err error)
+//sys  getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)
+//sys  setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)
+//sysnb        socket(domain int, typ int, proto int) (fd int, err error)
+//sysnb        socketpair(domain int, typ int, proto int, fd *[2]int32) (err error)
+//sysnb        getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
+//sysnb        getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
+//sys  recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)
+//sys  sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)
+//sys  recvmsg(s int, msg *Msghdr, flags int) (n int, err error)
+//sys  sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
+//sys  mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
+
+func Getpagesize() int { return 65536 }
+
+//sysnb        Gettimeofday(tv *Timeval) (err error)
+//sysnb        Time(t *Time_t) (tt Time_t, err error)
+
+//sys  Utime(path string, buf *Utimbuf) (err error)
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+       ts.Sec = 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.Sec = nsec / 1e9
+       tv.Usec = nsec % 1e9 / 1e3
+       return
+}
+
+func (r *PtraceRegs) PC() uint64 { return r.Nip }
+
+func (r *PtraceRegs) SetPC(pc uint64) { r.Nip = pc }
+
+func (iov *Iovec) SetLen(length int) {
+       iov.Len = uint64(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+       msghdr.Controllen = uint64(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+       cmsg.Len = uint64(length)
+}
diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd.go b/vendor/golang.org/x/sys/unix/syscall_netbsd.go
new file mode 100644 (file)
index 0000000..c4e945c
--- /dev/null
@@ -0,0 +1,492 @@
+// 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.
+
+// NetBSD 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 unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+type SockaddrDatalink struct {
+       Len    uint8
+       Family uint8
+       Index  uint16
+       Type   uint8
+       Nlen   uint8
+       Alen   uint8
+       Slen   uint8
+       Data   [12]int8
+       raw    RawSockaddrDatalink
+}
+
+func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
+
+func sysctlNodes(mib []_C_int) (nodes []Sysctlnode, err error) {
+       var olen uintptr
+
+       // Get a list of all sysctl nodes below the given MIB by performing
+       // a sysctl for the given MIB with CTL_QUERY appended.
+       mib = append(mib, CTL_QUERY)
+       qnode := Sysctlnode{Flags: SYSCTL_VERS_1}
+       qp := (*byte)(unsafe.Pointer(&qnode))
+       sz := unsafe.Sizeof(qnode)
+       if err = sysctl(mib, nil, &olen, qp, sz); err != nil {
+               return nil, err
+       }
+
+       // Now that we know the size, get the actual nodes.
+       nodes = make([]Sysctlnode, olen/sz)
+       np := (*byte)(unsafe.Pointer(&nodes[0]))
+       if err = sysctl(mib, np, &olen, qp, sz); err != nil {
+               return nil, err
+       }
+
+       return nodes, nil
+}
+
+func nametomib(name string) (mib []_C_int, err error) {
+
+       // Split name into components.
+       var parts []string
+       last := 0
+       for i := 0; i < len(name); i++ {
+               if name[i] == '.' {
+                       parts = append(parts, name[last:i])
+                       last = i + 1
+               }
+       }
+       parts = append(parts, name[last:])
+
+       // Discover the nodes and construct the MIB OID.
+       for partno, part := range parts {
+               nodes, err := sysctlNodes(mib)
+               if err != nil {
+                       return nil, err
+               }
+               for _, node := range nodes {
+                       n := make([]byte, 0)
+                       for i := range node.Name {
+                               if node.Name[i] != 0 {
+                                       n = append(n, byte(node.Name[i]))
+                               }
+                       }
+                       if string(n) == part {
+                               mib = append(mib, _C_int(node.Num))
+                               break
+                       }
+               }
+               if len(mib) != partno+1 {
+                       return nil, EINVAL
+               }
+       }
+
+       return mib, nil
+}
+
+// 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() (fd1 int, fd2 int, err error)
+func Pipe(p []int) (err error) {
+       if len(p) != 2 {
+               return EINVAL
+       }
+       p[0], p[1], err = pipe()
+       return
+}
+
+//sys getdents(fd int, buf []byte) (n int, err error)
+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
+       return getdents(fd, buf)
+}
+
+// TODO
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+       return -1, ENOSYS
+}
+
+/*
+ * Exposed directly
+ */
+//sys  Access(path string, mode uint32) (err error)
+//sys  Adjtime(delta *Timeval, olddelta *Timeval) (err error)
+//sys  Chdir(path string) (err error)
+//sys  Chflags(path string, flags int) (err error)
+//sys  Chmod(path string, mode uint32) (err error)
+//sys  Chown(path string, uid int, gid int) (err error)
+//sys  Chroot(path string) (err error)
+//sys  Close(fd int) (err error)
+//sys  Dup(fd int) (nfd int, err error)
+//sys  Dup2(from int, to int) (err error)
+//sys  Exit(code int)
+//sys  Fchdir(fd int) (err error)
+//sys  Fchflags(fd int, flags int) (err error)
+//sys  Fchmod(fd int, mode uint32) (err error)
+//sys  Fchown(fd int, uid int, gid int) (err error)
+//sys  Flock(fd int, how int) (err error)
+//sys  Fpathconf(fd int, name int) (val int, err error)
+//sys  Fstat(fd int, stat *Stat_t) (err error)
+//sys  Fsync(fd int) (err error)
+//sys  Ftruncate(fd int, length int64) (err error)
+//sysnb        Getegid() (egid int)
+//sysnb        Geteuid() (uid int)
+//sysnb        Getgid() (gid int)
+//sysnb        Getpgid(pid int) (pgid int, err error)
+//sysnb        Getpgrp() (pgrp int)
+//sysnb        Getpid() (pid int)
+//sysnb        Getppid() (ppid int)
+//sys  Getpriority(which int, who int) (prio int, err error)
+//sysnb        Getrlimit(which int, lim *Rlimit) (err error)
+//sysnb        Getrusage(who int, rusage *Rusage) (err error)
+//sysnb        Getsid(pid int) (sid int, err error)
+//sysnb        Gettimeofday(tv *Timeval) (err error)
+//sysnb        Getuid() (uid int)
+//sys  Issetugid() (tainted bool)
+//sys  Kill(pid int, signum syscall.Signal) (err error)
+//sys  Kqueue() (fd int, err error)
+//sys  Lchown(path string, uid int, gid int) (err error)
+//sys  Link(path string, link string) (err error)
+//sys  Listen(s int, backlog int) (err error)
+//sys  Lstat(path string, stat *Stat_t) (err error)
+//sys  Mkdir(path string, mode uint32) (err error)
+//sys  Mkfifo(path string, mode uint32) (err error)
+//sys  Mknod(path string, mode uint32, dev int) (err error)
+//sys  Mlock(b []byte) (err error)
+//sys  Mlockall(flags int) (err error)
+//sys  Mprotect(b []byte, prot int) (err error)
+//sys  Munlock(b []byte) (err error)
+//sys  Munlockall() (err error)
+//sys  Nanosleep(time *Timespec, leftover *Timespec) (err error)
+//sys  Open(path string, mode int, perm uint32) (fd int, err error)
+//sys  Pathconf(path string, name int) (val int, err error)
+//sys  Pread(fd int, p []byte, offset int64) (n int, err error)
+//sys  Pwrite(fd int, p []byte, offset int64) (n int, err error)
+//sys  read(fd int, p []byte) (n int, err error)
+//sys  Readlink(path string, buf []byte) (n int, err error)
+//sys  Rename(from string, to string) (err error)
+//sys  Revoke(path string) (err error)
+//sys  Rmdir(path string) (err error)
+//sys  Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
+//sys  Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)
+//sysnb        Setegid(egid int) (err error)
+//sysnb        Seteuid(euid int) (err error)
+//sysnb        Setgid(gid int) (err error)
+//sysnb        Setpgid(pid int, pgid int) (err error)
+//sys  Setpriority(which int, who int, prio int) (err error)
+//sysnb        Setregid(rgid int, egid int) (err error)
+//sysnb        Setreuid(ruid int, euid int) (err error)
+//sysnb        Setrlimit(which int, lim *Rlimit) (err error)
+//sysnb        Setsid() (pid int, err error)
+//sysnb        Settimeofday(tp *Timeval) (err error)
+//sysnb        Setuid(uid int) (err error)
+//sys  Stat(path string, stat *Stat_t) (err error)
+//sys  Symlink(path string, link string) (err error)
+//sys  Sync() (err error)
+//sys  Truncate(path string, length int64) (err error)
+//sys  Umask(newmask int) (oldmask int)
+//sys  Unlink(path string) (err error)
+//sys  Unmount(path string, flags int) (err error)
+//sys  write(fd int, p []byte) (n int, err error)
+//sys  mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
+//sys  munmap(addr uintptr, length uintptr) (err error)
+//sys  readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ
+//sys  writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE
+
+/*
+ * Unimplemented
+ */
+// ____semctl13
+// __clone
+// __fhopen40
+// __fhstat40
+// __fhstatvfs140
+// __fstat30
+// __getcwd
+// __getfh30
+// __getlogin
+// __lstat30
+// __mount50
+// __msgctl13
+// __msync13
+// __ntp_gettime30
+// __posix_chown
+// __posix_fadvise50
+// __posix_fchown
+// __posix_lchown
+// __posix_rename
+// __setlogin
+// __shmctl13
+// __sigaction_sigtramp
+// __sigaltstack14
+// __sigpending14
+// __sigprocmask14
+// __sigsuspend14
+// __sigtimedwait
+// __stat30
+// __syscall
+// __vfork14
+// _ksem_close
+// _ksem_destroy
+// _ksem_getvalue
+// _ksem_init
+// _ksem_open
+// _ksem_post
+// _ksem_trywait
+// _ksem_unlink
+// _ksem_wait
+// _lwp_continue
+// _lwp_create
+// _lwp_ctl
+// _lwp_detach
+// _lwp_exit
+// _lwp_getname
+// _lwp_getprivate
+// _lwp_kill
+// _lwp_park
+// _lwp_self
+// _lwp_setname
+// _lwp_setprivate
+// _lwp_suspend
+// _lwp_unpark
+// _lwp_unpark_all
+// _lwp_wait
+// _lwp_wakeup
+// _pset_bind
+// _sched_getaffinity
+// _sched_getparam
+// _sched_setaffinity
+// _sched_setparam
+// acct
+// aio_cancel
+// aio_error
+// aio_fsync
+// aio_read
+// aio_return
+// aio_suspend
+// aio_write
+// break
+// clock_getres
+// clock_gettime
+// clock_settime
+// compat_09_ogetdomainname
+// compat_09_osetdomainname
+// compat_09_ouname
+// compat_10_omsgsys
+// compat_10_osemsys
+// compat_10_oshmsys
+// compat_12_fstat12
+// compat_12_getdirentries
+// compat_12_lstat12
+// compat_12_msync
+// compat_12_oreboot
+// compat_12_oswapon
+// compat_12_stat12
+// compat_13_sigaction13
+// compat_13_sigaltstack13
+// compat_13_sigpending13
+// compat_13_sigprocmask13
+// compat_13_sigreturn13
+// compat_13_sigsuspend13
+// compat_14___semctl
+// compat_14_msgctl
+// compat_14_shmctl
+// compat_16___sigaction14
+// compat_16___sigreturn14
+// compat_20_fhstatfs
+// compat_20_fstatfs
+// compat_20_getfsstat
+// compat_20_statfs
+// compat_30___fhstat30
+// compat_30___fstat13
+// compat_30___lstat13
+// compat_30___stat13
+// compat_30_fhopen
+// compat_30_fhstat
+// compat_30_fhstatvfs1
+// compat_30_getdents
+// compat_30_getfh
+// compat_30_ntp_gettime
+// compat_30_socket
+// compat_40_mount
+// compat_43_fstat43
+// compat_43_lstat43
+// compat_43_oaccept
+// compat_43_ocreat
+// compat_43_oftruncate
+// compat_43_ogetdirentries
+// compat_43_ogetdtablesize
+// compat_43_ogethostid
+// compat_43_ogethostname
+// compat_43_ogetkerninfo
+// compat_43_ogetpagesize
+// compat_43_ogetpeername
+// compat_43_ogetrlimit
+// compat_43_ogetsockname
+// compat_43_okillpg
+// compat_43_olseek
+// compat_43_ommap
+// compat_43_oquota
+// compat_43_orecv
+// compat_43_orecvfrom
+// compat_43_orecvmsg
+// compat_43_osend
+// compat_43_osendmsg
+// compat_43_osethostid
+// compat_43_osethostname
+// compat_43_osetrlimit
+// compat_43_osigblock
+// compat_43_osigsetmask
+// compat_43_osigstack
+// compat_43_osigvec
+// compat_43_otruncate
+// compat_43_owait
+// compat_43_stat43
+// execve
+// extattr_delete_fd
+// extattr_delete_file
+// extattr_delete_link
+// extattr_get_fd
+// extattr_get_file
+// extattr_get_link
+// extattr_list_fd
+// extattr_list_file
+// extattr_list_link
+// extattr_set_fd
+// extattr_set_file
+// extattr_set_link
+// extattrctl
+// fchroot
+// fdatasync
+// fgetxattr
+// fktrace
+// flistxattr
+// fork
+// fremovexattr
+// fsetxattr
+// fstatvfs1
+// fsync_range
+// getcontext
+// getitimer
+// getvfsstat
+// getxattr
+// ioctl
+// ktrace
+// lchflags
+// lchmod
+// lfs_bmapv
+// lfs_markv
+// lfs_segclean
+// lfs_segwait
+// lgetxattr
+// lio_listio
+// listxattr
+// llistxattr
+// lremovexattr
+// lseek
+// lsetxattr
+// lutimes
+// madvise
+// mincore
+// minherit
+// modctl
+// mq_close
+// mq_getattr
+// mq_notify
+// mq_open
+// mq_receive
+// mq_send
+// mq_setattr
+// mq_timedreceive
+// mq_timedsend
+// mq_unlink
+// mremap
+// msgget
+// msgrcv
+// msgsnd
+// nfssvc
+// ntp_adjtime
+// pmc_control
+// pmc_get_info
+// poll
+// pollts
+// preadv
+// profil
+// pselect
+// pset_assign
+// pset_create
+// pset_destroy
+// ptrace
+// pwritev
+// quotactl
+// rasctl
+// readv
+// reboot
+// removexattr
+// sa_enable
+// sa_preempt
+// sa_register
+// sa_setconcurrency
+// sa_stacks
+// sa_yield
+// sbrk
+// sched_yield
+// semconfig
+// semget
+// semop
+// setcontext
+// setitimer
+// setxattr
+// shmat
+// shmdt
+// shmget
+// sstk
+// statvfs1
+// swapctl
+// sysarch
+// syscall
+// timer_create
+// timer_delete
+// timer_getoverrun
+// timer_gettime
+// timer_settime
+// undelete
+// utrace
+// uuidgen
+// vadvise
+// vfork
+// writev
diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go
new file mode 100644 (file)
index 0000000..1b0e1af
--- /dev/null
@@ -0,0 +1,44 @@
+// 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.
+
+// +build 386,netbsd
+
+package unix
+
+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 = int64(nsec / 1e9)
+       ts.Nsec = int32(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 = int32(nsec % 1e9 / 1e3)
+       tv.Sec = int64(nsec / 1e9)
+       return
+}
+
+func SetKevent(k *Kevent_t, fd, mode, flags int) {
+       k.Ident = uint32(fd)
+       k.Filter = uint32(mode)
+       k.Flags = uint32(flags)
+}
+
+func (iov *Iovec) SetLen(length int) {
+       iov.Len = uint32(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+       msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+       cmsg.Len = uint32(length)
+}
diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go
new file mode 100644 (file)
index 0000000..1b6dcbe
--- /dev/null
@@ -0,0 +1,44 @@
+// 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.
+
+// +build amd64,netbsd
+
+package unix
+
+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 = int64(nsec / 1e9)
+       ts.Nsec = int64(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 = int32(nsec % 1e9 / 1e3)
+       tv.Sec = int64(nsec / 1e9)
+       return
+}
+
+func SetKevent(k *Kevent_t, fd, mode, flags int) {
+       k.Ident = uint64(fd)
+       k.Filter = uint32(mode)
+       k.Flags = uint32(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/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go
new file mode 100644 (file)
index 0000000..87d1d6f
--- /dev/null
@@ -0,0 +1,44 @@
+// Copyright 2013 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.
+
+// +build arm,netbsd
+
+package unix
+
+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 = int64(nsec / 1e9)
+       ts.Nsec = int32(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 = int32(nsec % 1e9 / 1e3)
+       tv.Sec = int64(nsec / 1e9)
+       return
+}
+
+func SetKevent(k *Kevent_t, fd, mode, flags int) {
+       k.Ident = uint32(fd)
+       k.Filter = uint32(mode)
+       k.Flags = uint32(flags)
+}
+
+func (iov *Iovec) SetLen(length int) {
+       iov.Len = uint32(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+       msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+       cmsg.Len = uint32(length)
+}
diff --git a/vendor/golang.org/x/sys/unix/syscall_no_getwd.go b/vendor/golang.org/x/sys/unix/syscall_no_getwd.go
new file mode 100644 (file)
index 0000000..530792e
--- /dev/null
@@ -0,0 +1,11 @@
+// Copyright 2013 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.
+
+// +build dragonfly freebsd netbsd openbsd
+
+package unix
+
+const ImplementsGetwd = false
+
+func Getwd() (string, error) { return "", ENOTSUP }
diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/vendor/golang.org/x/sys/unix/syscall_openbsd.go
new file mode 100644 (file)
index 0000000..246131d
--- /dev/null
@@ -0,0 +1,303 @@
+// 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 unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+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 uintptr, err syscall.Errno)
+
+func nametomib(name string) (mib []_C_int, err error) {
+
+       // Perform lookup via a binary search
+       left := 0
+       right := len(sysctlMib) - 1
+       for {
+               idx := left + (right-left)/2
+               switch {
+               case name == sysctlMib[idx].ctlname:
+                       return sysctlMib[idx].ctloid, nil
+               case name > sysctlMib[idx].ctlname:
+                       left = idx + 1
+               default:
+                       right = idx - 1
+               }
+               if left > right {
+                       break
+               }
+       }
+       return nil, EINVAL
+}
+
+// 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) (err error)
+func Pipe(p []int) (err error) {
+       if len(p) != 2 {
+               return EINVAL
+       }
+       var pp [2]_C_int
+       err = pipe(&pp)
+       p[0] = int(pp[0])
+       p[1] = int(pp[1])
+       return
+}
+
+//sys getdents(fd int, buf []byte) (n int, err error)
+func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {
+       return getdents(fd, buf)
+}
+
+// TODO
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+       return -1, ENOSYS
+}
+
+func Getfsstat(buf []Statfs_t, flags int) (n int, err error) {
+       var _p0 unsafe.Pointer
+       var bufsize uintptr
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+               bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))
+       }
+       r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+/*
+ * Exposed directly
+ */
+//sys  Access(path string, mode uint32) (err error)
+//sys  Adjtime(delta *Timeval, olddelta *Timeval) (err error)
+//sys  Chdir(path string) (err error)
+//sys  Chflags(path string, flags int) (err error)
+//sys  Chmod(path string, mode uint32) (err error)
+//sys  Chown(path string, uid int, gid int) (err error)
+//sys  Chroot(path string) (err error)
+//sys  Close(fd int) (err error)
+//sys  Dup(fd int) (nfd int, err error)
+//sys  Dup2(from int, to int) (err error)
+//sys  Exit(code int)
+//sys  Fchdir(fd int) (err error)
+//sys  Fchflags(fd int, flags int) (err error)
+//sys  Fchmod(fd int, mode uint32) (err error)
+//sys  Fchown(fd int, uid int, gid int) (err error)
+//sys  Flock(fd int, how int) (err error)
+//sys  Fpathconf(fd int, name int) (val int, err error)
+//sys  Fstat(fd int, stat *Stat_t) (err error)
+//sys  Fstatfs(fd int, stat *Statfs_t) (err error)
+//sys  Fsync(fd int) (err error)
+//sys  Ftruncate(fd int, length int64) (err error)
+//sysnb        Getegid() (egid int)
+//sysnb        Geteuid() (uid int)
+//sysnb        Getgid() (gid int)
+//sysnb        Getpgid(pid int) (pgid int, err error)
+//sysnb        Getpgrp() (pgrp int)
+//sysnb        Getpid() (pid int)
+//sysnb        Getppid() (ppid int)
+//sys  Getpriority(which int, who int) (prio int, err error)
+//sysnb        Getrlimit(which int, lim *Rlimit) (err error)
+//sysnb        Getrusage(who int, rusage *Rusage) (err error)
+//sysnb        Getsid(pid int) (sid int, err error)
+//sysnb        Gettimeofday(tv *Timeval) (err error)
+//sysnb        Getuid() (uid int)
+//sys  Issetugid() (tainted bool)
+//sys  Kill(pid int, signum syscall.Signal) (err error)
+//sys  Kqueue() (fd int, err error)
+//sys  Lchown(path string, uid int, gid int) (err error)
+//sys  Link(path string, link string) (err error)
+//sys  Listen(s int, backlog int) (err error)
+//sys  Lstat(path string, stat *Stat_t) (err error)
+//sys  Mkdir(path string, mode uint32) (err error)
+//sys  Mkfifo(path string, mode uint32) (err error)
+//sys  Mknod(path string, mode uint32, dev int) (err error)
+//sys  Mlock(b []byte) (err error)
+//sys  Mlockall(flags int) (err error)
+//sys  Mprotect(b []byte, prot int) (err error)
+//sys  Munlock(b []byte) (err error)
+//sys  Munlockall() (err error)
+//sys  Nanosleep(time *Timespec, leftover *Timespec) (err error)
+//sys  Open(path string, mode int, perm uint32) (fd int, err error)
+//sys  Pathconf(path string, name int) (val int, err error)
+//sys  Pread(fd int, p []byte, offset int64) (n int, err error)
+//sys  Pwrite(fd int, p []byte, offset int64) (n int, err error)
+//sys  read(fd int, p []byte) (n int, err error)
+//sys  Readlink(path string, buf []byte) (n int, err error)
+//sys  Rename(from string, to string) (err error)
+//sys  Revoke(path string) (err error)
+//sys  Rmdir(path string) (err error)
+//sys  Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK
+//sys  Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error)
+//sysnb        Setegid(egid int) (err error)
+//sysnb        Seteuid(euid int) (err error)
+//sysnb        Setgid(gid int) (err error)
+//sys  Setlogin(name string) (err error)
+//sysnb        Setpgid(pid int, pgid int) (err error)
+//sys  Setpriority(which int, who int, prio int) (err error)
+//sysnb        Setregid(rgid int, egid int) (err error)
+//sysnb        Setreuid(ruid int, euid int) (err error)
+//sysnb        Setresgid(rgid int, egid int, sgid int) (err error)
+//sysnb        Setresuid(ruid int, euid int, suid int) (err error)
+//sysnb        Setrlimit(which int, lim *Rlimit) (err error)
+//sysnb        Setsid() (pid int, err error)
+//sysnb        Settimeofday(tp *Timeval) (err error)
+//sysnb        Setuid(uid int) (err error)
+//sys  Stat(path string, stat *Stat_t) (err error)
+//sys  Statfs(path string, stat *Statfs_t) (err error)
+//sys  Symlink(path string, link string) (err error)
+//sys  Sync() (err error)
+//sys  Truncate(path string, length int64) (err error)
+//sys  Umask(newmask int) (oldmask int)
+//sys  Unlink(path string) (err error)
+//sys  Unmount(path string, flags int) (err error)
+//sys  write(fd int, p []byte) (n int, err error)
+//sys  mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
+//sys  munmap(addr uintptr, length uintptr) (err error)
+//sys  readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ
+//sys  writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE
+
+/*
+ * 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
+// mount
+// mquery
+// msgctl
+// msgget
+// msgrcv
+// msgsnd
+// nfssvc
+// nnpfspioctl
+// openat
+// poll
+// preadv
+// profil
+// pwritev
+// quotactl
+// readlinkat
+// readv
+// reboot
+// renameat
+// rfork
+// sched_yield
+// semget
+// semop
+// setgroups
+// setitimer
+// 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/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go
new file mode 100644 (file)
index 0000000..9529b20
--- /dev/null
@@ -0,0 +1,44 @@
+// 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.
+
+// +build 386,openbsd
+
+package unix
+
+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 = int64(nsec / 1e9)
+       ts.Nsec = int32(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 = int32(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 = uint32(length)
+}
+
+func (msghdr *Msghdr) SetControllen(length int) {
+       msghdr.Controllen = uint32(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+       cmsg.Len = uint32(length)
+}
diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go
new file mode 100644 (file)
index 0000000..fc64029
--- /dev/null
@@ -0,0 +1,44 @@
+// 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.
+
+// +build amd64,openbsd
+
+package unix
+
+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 = 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 = nsec / 1e9
+       return
+}
+
+func SetKevent(k *Kevent_t, fd, mode, flags int) {
+       k.Ident = uint64(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/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go
new file mode 100644 (file)
index 0000000..eb489b1
--- /dev/null
@@ -0,0 +1,713 @@
+// 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.
+
+// Solaris 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_solaris.go or syscall_unix.go.
+
+package unix
+
+import (
+       "sync/atomic"
+       "syscall"
+       "unsafe"
+)
+
+// Implemented in runtime/syscall_solaris.go.
+type syscallFunc uintptr
+
+func rawSysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)
+func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)
+
+type SockaddrDatalink struct {
+       Family uint16
+       Index  uint16
+       Type   uint8
+       Nlen   uint8
+       Alen   uint8
+       Slen   uint8
+       Data   [244]int8
+       raw    RawSockaddrDatalink
+}
+
+func clen(n []byte) int {
+       for i := 0; i < len(n); i++ {
+               if n[i] == 0 {
+                       return i
+               }
+       }
+       return len(n)
+}
+
+// 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.Ino == 0 { // File absent in directory.
+                       continue
+               }
+               bytes := (*[10000]byte)(unsafe.Pointer(&dirent.Name[0]))
+               var name = string(bytes[0:clen(bytes[:])])
+               if name == "." || name == ".." { // Useless names
+                       continue
+               }
+               max--
+               count++
+               names = append(names, name)
+       }
+       return origlen - len(buf), count, names
+}
+
+func pipe() (r uintptr, w uintptr, err uintptr)
+
+func Pipe(p []int) (err error) {
+       if len(p) != 2 {
+               return EINVAL
+       }
+       r0, w0, e1 := pipe()
+       if e1 != 0 {
+               err = syscall.Errno(e1)
+       }
+       p[0], p[1] = int(r0), int(w0)
+       return
+}
+
+func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {
+       if sa.Port < 0 || sa.Port > 0xFFFF {
+               return nil, 0, EINVAL
+       }
+       sa.raw.Family = AF_INET
+       p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
+       p[0] = byte(sa.Port >> 8)
+       p[1] = byte(sa.Port)
+       for i := 0; i < len(sa.Addr); i++ {
+               sa.raw.Addr[i] = sa.Addr[i]
+       }
+       return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil
+}
+
+func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {
+       if sa.Port < 0 || sa.Port > 0xFFFF {
+               return nil, 0, EINVAL
+       }
+       sa.raw.Family = AF_INET6
+       p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
+       p[0] = byte(sa.Port >> 8)
+       p[1] = byte(sa.Port)
+       sa.raw.Scope_id = sa.ZoneId
+       for i := 0; i < len(sa.Addr); i++ {
+               sa.raw.Addr[i] = sa.Addr[i]
+       }
+       return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil
+}
+
+func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {
+       name := sa.Name
+       n := len(name)
+       if n >= len(sa.raw.Path) {
+               return nil, 0, EINVAL
+       }
+       sa.raw.Family = AF_UNIX
+       for i := 0; i < n; i++ {
+               sa.raw.Path[i] = int8(name[i])
+       }
+       // length is family (uint16), name, NUL.
+       sl := _Socklen(2)
+       if n > 0 {
+               sl += _Socklen(n) + 1
+       }
+       if sa.raw.Path[0] == '@' {
+               sa.raw.Path[0] = 0
+               // Don't count trailing NUL for abstract address.
+               sl--
+       }
+
+       return unsafe.Pointer(&sa.raw), sl, nil
+}
+
+//sys  getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getsockname
+
+func Getsockname(fd int) (sa Sockaddr, err error) {
+       var rsa RawSockaddrAny
+       var len _Socklen = SizeofSockaddrAny
+       if err = getsockname(fd, &rsa, &len); err != nil {
+               return
+       }
+       return anyToSockaddr(&rsa)
+}
+
+const ImplementsGetwd = true
+
+//sys  Getcwd(buf []byte) (n int, err error)
+
+func Getwd() (wd string, err error) {
+       var buf [PathMax]byte
+       // Getcwd will return an error if it failed for any reason.
+       _, err = Getcwd(buf[0:])
+       if err != nil {
+               return "", err
+       }
+       n := clen(buf[:])
+       if n < 1 {
+               return "", EINVAL
+       }
+       return string(buf[:n]), nil
+}
+
+/*
+ * Wrapped
+ */
+
+//sysnb        getgroups(ngid int, gid *_Gid_t) (n int, err error)
+//sysnb        setgroups(ngid int, gid *_Gid_t) (err error)
+
+func Getgroups() (gids []int, err error) {
+       n, err := getgroups(0, nil)
+       // Check for error and sanity check group count.  Newer versions of
+       // Solaris allow up to 1024 (NGROUPS_MAX).
+       if n < 0 || n > 1024 {
+               if err != nil {
+                       return nil, err
+               }
+               return nil, EINVAL
+       } else if n == 0 {
+               return nil, nil
+       }
+
+       a := make([]_Gid_t, n)
+       n, err = getgroups(n, &a[0])
+       if n == -1 {
+               return nil, err
+       }
+       gids = make([]int, n)
+       for i, v := range a[0:n] {
+               gids[i] = int(v)
+       }
+       return
+}
+
+func Setgroups(gids []int) (err error) {
+       if len(gids) == 0 {
+               return setgroups(0, nil)
+       }
+
+       a := make([]_Gid_t, len(gids))
+       for i, v := range gids {
+               a[i] = _Gid_t(v)
+       }
+       return setgroups(len(a), &a[0])
+}
+
+func ReadDirent(fd int, buf []byte) (n int, err error) {
+       // Final argument is (basep *uintptr) and the syscall doesn't take nil.
+       // TODO(rsc): Can we use a single global basep for all calls?
+       return Getdents(fd, buf, new(uintptr))
+}
+
+// Wait status is 7 bits at bottom, either 0 (exited),
+// 0x7F (stopped), or a signal number that caused an exit.
+// The 0x80 bit is whether there was a core dump.
+// An extra number (exit code, signal causing a stop)
+// is in the high bits.
+
+type WaitStatus uint32
+
+const (
+       mask  = 0x7F
+       core  = 0x80
+       shift = 8
+
+       exited  = 0
+       stopped = 0x7F
+)
+
+func (w WaitStatus) Exited() bool { return w&mask == exited }
+
+func (w WaitStatus) ExitStatus() int {
+       if w&mask != exited {
+               return -1
+       }
+       return int(w >> shift)
+}
+
+func (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != 0 }
+
+func (w WaitStatus) Signal() syscall.Signal {
+       sig := syscall.Signal(w & mask)
+       if sig == stopped || sig == 0 {
+               return -1
+       }
+       return sig
+}
+
+func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }
+
+func (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP }
+
+func (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP }
+
+func (w WaitStatus) StopSignal() syscall.Signal {
+       if !w.Stopped() {
+               return -1
+       }
+       return syscall.Signal(w>>shift) & 0xFF
+}
+
+func (w WaitStatus) TrapCause() int { return -1 }
+
+func wait4(pid uintptr, wstatus *WaitStatus, options uintptr, rusage *Rusage) (wpid uintptr, err uintptr)
+
+func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {
+       r0, e1 := wait4(uintptr(pid), wstatus, uintptr(options), rusage)
+       if e1 != 0 {
+               err = syscall.Errno(e1)
+       }
+       return int(r0), err
+}
+
+func gethostname() (name string, err uintptr)
+
+func Gethostname() (name string, err error) {
+       name, e1 := gethostname()
+       if e1 != 0 {
+               err = syscall.Errno(e1)
+       }
+       return name, err
+}
+
+//sys  utimes(path string, times *[2]Timeval) (err error)
+
+func Utimes(path string, tv []Timeval) (err error) {
+       if tv == nil {
+               return utimes(path, nil)
+       }
+       if len(tv) != 2 {
+               return EINVAL
+       }
+       return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
+}
+
+//sys  utimensat(fd int, path string, times *[2]Timespec, flag int) (err error)
+
+func UtimesNano(path string, ts []Timespec) error {
+       if ts == nil {
+               return utimensat(AT_FDCWD, path, nil, 0)
+       }
+       if len(ts) != 2 {
+               return EINVAL
+       }
+       return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
+}
+
+func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {
+       if ts == nil {
+               return utimensat(dirfd, path, nil, flags)
+       }
+       if len(ts) != 2 {
+               return EINVAL
+       }
+       return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)
+}
+
+//sys  fcntl(fd int, cmd int, arg int) (val int, err error)
+
+// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.
+func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(unsafe.Pointer(lk)), 0, 0, 0)
+       if e1 != 0 {
+               return e1
+       }
+       return nil
+}
+
+//sys  futimesat(fildes int, path *byte, times *[2]Timeval) (err error)
+
+func Futimesat(dirfd int, path string, tv []Timeval) error {
+       pathp, err := BytePtrFromString(path)
+       if err != nil {
+               return err
+       }
+       if tv == nil {
+               return futimesat(dirfd, pathp, nil)
+       }
+       if len(tv) != 2 {
+               return EINVAL
+       }
+       return futimesat(dirfd, pathp, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
+}
+
+// Solaris doesn't have an futimes function because it allows NULL to be
+// specified as the path for futimesat.  However, Go doesn't like
+// NULL-style string interfaces, so this simple wrapper is provided.
+func Futimes(fd int, tv []Timeval) error {
+       if tv == nil {
+               return futimesat(fd, nil, nil)
+       }
+       if len(tv) != 2 {
+               return EINVAL
+       }
+       return futimesat(fd, nil, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
+}
+
+func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) {
+       switch rsa.Addr.Family {
+       case AF_UNIX:
+               pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))
+               sa := new(SockaddrUnix)
+               // Assume path ends at NUL.
+               // This is not technically the Solaris semantics for
+               // abstract Unix domain sockets -- they are supposed
+               // to be uninterpreted fixed-size binary blobs -- but
+               // everyone uses this convention.
+               n := 0
+               for n < len(pp.Path) && pp.Path[n] != 0 {
+                       n++
+               }
+               bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]
+               sa.Name = string(bytes)
+               return sa, nil
+
+       case AF_INET:
+               pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))
+               sa := new(SockaddrInet4)
+               p := (*[2]byte)(unsafe.Pointer(&pp.Port))
+               sa.Port = int(p[0])<<8 + int(p[1])
+               for i := 0; i < len(sa.Addr); i++ {
+                       sa.Addr[i] = pp.Addr[i]
+               }
+               return sa, nil
+
+       case AF_INET6:
+               pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))
+               sa := new(SockaddrInet6)
+               p := (*[2]byte)(unsafe.Pointer(&pp.Port))
+               sa.Port = int(p[0])<<8 + int(p[1])
+               sa.ZoneId = pp.Scope_id
+               for i := 0; i < len(sa.Addr); i++ {
+                       sa.Addr[i] = pp.Addr[i]
+               }
+               return sa, nil
+       }
+       return nil, EAFNOSUPPORT
+}
+
+//sys  accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) = libsocket.accept
+
+func Accept(fd int) (nfd int, sa Sockaddr, err error) {
+       var rsa RawSockaddrAny
+       var len _Socklen = SizeofSockaddrAny
+       nfd, err = accept(fd, &rsa, &len)
+       if nfd == -1 {
+               return
+       }
+       sa, err = anyToSockaddr(&rsa)
+       if err != nil {
+               Close(nfd)
+               nfd = 0
+       }
+       return
+}
+
+//sys  recvmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.recvmsg
+
+func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {
+       var msg Msghdr
+       var rsa RawSockaddrAny
+       msg.Name = (*byte)(unsafe.Pointer(&rsa))
+       msg.Namelen = uint32(SizeofSockaddrAny)
+       var iov Iovec
+       if len(p) > 0 {
+               iov.Base = (*int8)(unsafe.Pointer(&p[0]))
+               iov.SetLen(len(p))
+       }
+       var dummy int8
+       if len(oob) > 0 {
+               // receive at least one normal byte
+               if len(p) == 0 {
+                       iov.Base = &dummy
+                       iov.SetLen(1)
+               }
+               msg.Accrights = (*int8)(unsafe.Pointer(&oob[0]))
+       }
+       msg.Iov = &iov
+       msg.Iovlen = 1
+       if n, err = recvmsg(fd, &msg, flags); n == -1 {
+               return
+       }
+       oobn = int(msg.Accrightslen)
+       // source address is only specified if the socket is unconnected
+       if rsa.Addr.Family != AF_UNSPEC {
+               from, err = anyToSockaddr(&rsa)
+       }
+       return
+}
+
+func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) {
+       _, err = SendmsgN(fd, p, oob, to, flags)
+       return
+}
+
+//sys  sendmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.sendmsg
+
+func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) {
+       var ptr unsafe.Pointer
+       var salen _Socklen
+       if to != nil {
+               ptr, salen, err = to.sockaddr()
+               if err != nil {
+                       return 0, err
+               }
+       }
+       var msg Msghdr
+       msg.Name = (*byte)(unsafe.Pointer(ptr))
+       msg.Namelen = uint32(salen)
+       var iov Iovec
+       if len(p) > 0 {
+               iov.Base = (*int8)(unsafe.Pointer(&p[0]))
+               iov.SetLen(len(p))
+       }
+       var dummy int8
+       if len(oob) > 0 {
+               // send at least one normal byte
+               if len(p) == 0 {
+                       iov.Base = &dummy
+                       iov.SetLen(1)
+               }
+               msg.Accrights = (*int8)(unsafe.Pointer(&oob[0]))
+       }
+       msg.Iov = &iov
+       msg.Iovlen = 1
+       if n, err = sendmsg(fd, &msg, flags); err != nil {
+               return 0, err
+       }
+       if len(oob) > 0 && len(p) == 0 {
+               n = 0
+       }
+       return n, nil
+}
+
+//sys  acct(path *byte) (err error)
+
+func Acct(path string) (err error) {
+       if len(path) == 0 {
+               // Assume caller wants to disable accounting.
+               return acct(nil)
+       }
+
+       pathp, err := BytePtrFromString(path)
+       if err != nil {
+               return err
+       }
+       return acct(pathp)
+}
+
+/*
+ * Expose the ioctl function
+ */
+
+//sys  ioctl(fd int, req int, arg uintptr) (err error)
+
+func IoctlSetInt(fd int, req int, value int) (err error) {
+       return ioctl(fd, req, uintptr(value))
+}
+
+func IoctlSetWinsize(fd int, req int, value *Winsize) (err error) {
+       return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
+}
+
+func IoctlSetTermios(fd int, req int, value *Termios) (err error) {
+       return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
+}
+
+func IoctlSetTermio(fd int, req int, value *Termio) (err error) {
+       return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
+}
+
+func IoctlGetInt(fd int, req int) (int, error) {
+       var value int
+       err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
+       return value, err
+}
+
+func IoctlGetWinsize(fd int, req int) (*Winsize, error) {
+       var value Winsize
+       err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
+       return &value, err
+}
+
+func IoctlGetTermios(fd int, req int) (*Termios, error) {
+       var value Termios
+       err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
+       return &value, err
+}
+
+func IoctlGetTermio(fd int, req int) (*Termio, error) {
+       var value Termio
+       err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
+       return &value, err
+}
+
+/*
+ * Exposed directly
+ */
+//sys  Access(path string, mode uint32) (err error)
+//sys  Adjtime(delta *Timeval, olddelta *Timeval) (err error)
+//sys  Chdir(path string) (err error)
+//sys  Chmod(path string, mode uint32) (err error)
+//sys  Chown(path string, uid int, gid int) (err error)
+//sys  Chroot(path string) (err error)
+//sys  Close(fd int) (err error)
+//sys  Creat(path string, mode uint32) (fd int, err error)
+//sys  Dup(fd int) (nfd int, err error)
+//sys  Dup2(oldfd int, newfd int) (err error)
+//sys  Exit(code int)
+//sys  Fchdir(fd int) (err error)
+//sys  Fchmod(fd int, mode uint32) (err error)
+//sys  Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
+//sys  Fchown(fd int, uid int, gid int) (err error)
+//sys  Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
+//sys  Fdatasync(fd int) (err error)
+//sys  Fpathconf(fd int, name int) (val int, err error)
+//sys  Fstat(fd int, stat *Stat_t) (err error)
+//sys  Getdents(fd int, buf []byte, basep *uintptr) (n int, err error)
+//sysnb        Getgid() (gid int)
+//sysnb        Getpid() (pid int)
+//sysnb        Getpgid(pid int) (pgid int, err error)
+//sysnb        Getpgrp() (pgid int, err error)
+//sys  Geteuid() (euid int)
+//sys  Getegid() (egid int)
+//sys  Getppid() (ppid int)
+//sys  Getpriority(which int, who int) (n int, err error)
+//sysnb        Getrlimit(which int, lim *Rlimit) (err error)
+//sysnb        Getrusage(who int, rusage *Rusage) (err error)
+//sysnb        Gettimeofday(tv *Timeval) (err error)
+//sysnb        Getuid() (uid int)
+//sys  Kill(pid int, signum syscall.Signal) (err error)
+//sys  Lchown(path string, uid int, gid int) (err error)
+//sys  Link(path string, link string) (err error)
+//sys  Listen(s int, backlog int) (err error) = libsocket.listen
+//sys  Lstat(path string, stat *Stat_t) (err error)
+//sys  Madvise(b []byte, advice int) (err error)
+//sys  Mkdir(path string, mode uint32) (err error)
+//sys  Mkdirat(dirfd int, path string, mode uint32) (err error)
+//sys  Mkfifo(path string, mode uint32) (err error)
+//sys  Mkfifoat(dirfd int, path string, mode uint32) (err error)
+//sys  Mknod(path string, mode uint32, dev int) (err error)
+//sys  Mknodat(dirfd int, path string, mode uint32, dev int) (err error)
+//sys  Mlock(b []byte) (err error)
+//sys  Mlockall(flags int) (err error)
+//sys  Mprotect(b []byte, prot int) (err error)
+//sys  Munlock(b []byte) (err error)
+//sys  Munlockall() (err error)
+//sys  Nanosleep(time *Timespec, leftover *Timespec) (err error)
+//sys  Open(path string, mode int, perm uint32) (fd int, err error)
+//sys  Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error)
+//sys  Pathconf(path string, name int) (val int, err error)
+//sys  Pause() (err error)
+//sys  Pread(fd int, p []byte, offset int64) (n int, err error)
+//sys  Pwrite(fd int, p []byte, offset int64) (n int, err error)
+//sys  read(fd int, p []byte) (n int, err error)
+//sys  Readlink(path string, buf []byte) (n int, err error)
+//sys  Rename(from string, to string) (err error)
+//sys  Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
+//sys  Rmdir(path string) (err error)
+//sys  Seek(fd int, offset int64, whence int) (newoffset int64, err error) = lseek
+//sysnb        Setegid(egid int) (err error)
+//sysnb        Seteuid(euid int) (err error)
+//sysnb        Setgid(gid int) (err error)
+//sys  Sethostname(p []byte) (err error)
+//sysnb        Setpgid(pid int, pgid int) (err error)
+//sys  Setpriority(which int, who int, prio int) (err error)
+//sysnb        Setregid(rgid int, egid int) (err error)
+//sysnb        Setreuid(ruid int, euid int) (err error)
+//sysnb        Setrlimit(which int, lim *Rlimit) (err error)
+//sysnb        Setsid() (pid int, err error)
+//sysnb        Setuid(uid int) (err error)
+//sys  Shutdown(s int, how int) (err error) = libsocket.shutdown
+//sys  Stat(path string, stat *Stat_t) (err error)
+//sys  Symlink(path string, link string) (err error)
+//sys  Sync() (err error)
+//sysnb        Times(tms *Tms) (ticks uintptr, err error)
+//sys  Truncate(path string, length int64) (err error)
+//sys  Fsync(fd int) (err error)
+//sys  Ftruncate(fd int, length int64) (err error)
+//sys  Umask(mask int) (oldmask int)
+//sysnb        Uname(buf *Utsname) (err error)
+//sys  Unmount(target string, flags int) (err error) = libc.umount
+//sys  Unlink(path string) (err error)
+//sys  Unlinkat(dirfd int, path string, flags int) (err error)
+//sys  Ustat(dev int, ubuf *Ustat_t) (err error)
+//sys  Utime(path string, buf *Utimbuf) (err error)
+//sys  bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.bind
+//sys  connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.connect
+//sys  mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
+//sys  munmap(addr uintptr, length uintptr) (err error)
+//sys  sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.sendto
+//sys  socket(domain int, typ int, proto int) (fd int, err error) = libsocket.socket
+//sysnb        socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) = libsocket.socketpair
+//sys  write(fd int, p []byte) (n int, err error)
+//sys  getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) = libsocket.getsockopt
+//sysnb        getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getpeername
+//sys  setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) = libsocket.setsockopt
+//sys  recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = libsocket.recvfrom
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procread)), 3, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf), 0, 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwrite)), 3, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf), 0, 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+var mapper = &mmapper{
+       active: make(map[*byte][]byte),
+       mmap:   mmap,
+       munmap: munmap,
+}
+
+func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {
+       return mapper.Mmap(fd, offset, length, prot, flags)
+}
+
+func Munmap(b []byte) (err error) {
+       return mapper.Munmap(b)
+}
+
+//sys  sysconf(name int) (n int64, err error)
+
+// pageSize caches the value of Getpagesize, since it can't change
+// once the system is booted.
+var pageSize int64 // accessed atomically
+
+func Getpagesize() int {
+       n := atomic.LoadInt64(&pageSize)
+       if n == 0 {
+               n, _ = sysconf(_SC_PAGESIZE)
+               atomic.StoreInt64(&pageSize, n)
+       }
+       return int(n)
+}
diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go
new file mode 100644 (file)
index 0000000..2e44630
--- /dev/null
@@ -0,0 +1,37 @@
+// 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.
+
+// +build amd64,solaris
+
+package unix
+
+func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }
+
+func NsecToTimespec(nsec int64) (ts Timespec) {
+       ts.Sec = 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 (iov *Iovec) SetLen(length int) {
+       iov.Len = uint64(length)
+}
+
+func (cmsg *Cmsghdr) SetLen(length int) {
+       cmsg.Len = uint32(length)
+}
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+       // TODO(aram): implement this, see issue 5847.
+       panic("unimplemented")
+}
diff --git a/vendor/golang.org/x/sys/unix/syscall_unix.go b/vendor/golang.org/x/sys/unix/syscall_unix.go
new file mode 100644 (file)
index 0000000..b46b250
--- /dev/null
@@ -0,0 +1,297 @@
+// 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.
+
+// +build darwin dragonfly freebsd linux netbsd openbsd solaris
+
+package unix
+
+import (
+       "runtime"
+       "sync"
+       "syscall"
+       "unsafe"
+)
+
+var (
+       Stdin  = 0
+       Stdout = 1
+       Stderr = 2
+)
+
+const (
+       darwin64Bit    = runtime.GOOS == "darwin" && sizeofPtr == 8
+       dragonfly64Bit = runtime.GOOS == "dragonfly" && sizeofPtr == 8
+       netbsd32Bit    = runtime.GOOS == "netbsd" && sizeofPtr == 4
+)
+
+// Do the interface allocations only once for common
+// Errno values.
+var (
+       errEAGAIN error = syscall.EAGAIN
+       errEINVAL error = syscall.EINVAL
+       errENOENT error = syscall.ENOENT
+)
+
+// errnoErr returns common boxed Errno values, to prevent
+// allocations at runtime.
+func errnoErr(e syscall.Errno) error {
+       switch e {
+       case 0:
+               return nil
+       case EAGAIN:
+               return errEAGAIN
+       case EINVAL:
+               return errEINVAL
+       case ENOENT:
+               return errENOENT
+       }
+       return e
+}
+
+func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)
+func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)
+func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)
+func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)
+
+// Mmap manager, for use by operating system-specific implementations.
+
+type mmapper struct {
+       sync.Mutex
+       active map[*byte][]byte // active mappings; key is last byte in mapping
+       mmap   func(addr, length uintptr, prot, flags, fd int, offset int64) (uintptr, error)
+       munmap func(addr uintptr, length uintptr) error
+}
+
+func (m *mmapper) Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {
+       if length <= 0 {
+               return nil, EINVAL
+       }
+
+       // Map the requested memory.
+       addr, errno := m.mmap(0, uintptr(length), prot, flags, fd, offset)
+       if errno != nil {
+               return nil, errno
+       }
+
+       // Slice memory layout
+       var sl = struct {
+               addr uintptr
+               len  int
+               cap  int
+       }{addr, length, length}
+
+       // Use unsafe to turn sl into a []byte.
+       b := *(*[]byte)(unsafe.Pointer(&sl))
+
+       // Register mapping in m and return it.
+       p := &b[cap(b)-1]
+       m.Lock()
+       defer m.Unlock()
+       m.active[p] = b
+       return b, nil
+}
+
+func (m *mmapper) Munmap(data []byte) (err error) {
+       if len(data) == 0 || len(data) != cap(data) {
+               return EINVAL
+       }
+
+       // Find the base of the mapping.
+       p := &data[cap(data)-1]
+       m.Lock()
+       defer m.Unlock()
+       b := m.active[p]
+       if b == nil || &b[0] != &data[0] {
+               return EINVAL
+       }
+
+       // Unmap the memory and update m.
+       if errno := m.munmap(uintptr(unsafe.Pointer(&b[0])), uintptr(len(b))); errno != nil {
+               return errno
+       }
+       delete(m.active, p)
+       return nil
+}
+
+func Read(fd int, p []byte) (n int, err error) {
+       n, err = read(fd, p)
+       if raceenabled {
+               if n > 0 {
+                       raceWriteRange(unsafe.Pointer(&p[0]), n)
+               }
+               if err == nil {
+                       raceAcquire(unsafe.Pointer(&ioSync))
+               }
+       }
+       return
+}
+
+func Write(fd int, p []byte) (n int, err error) {
+       if raceenabled {
+               raceReleaseMerge(unsafe.Pointer(&ioSync))
+       }
+       n, err = write(fd, p)
+       if raceenabled && n > 0 {
+               raceReadRange(unsafe.Pointer(&p[0]), n)
+       }
+       return
+}
+
+// For testing: clients can set this flag to force
+// creation of IPv6 sockets to return EAFNOSUPPORT.
+var SocketDisableIPv6 bool
+
+type Sockaddr interface {
+       sockaddr() (ptr unsafe.Pointer, len _Socklen, err error) // lowercase; only we can define Sockaddrs
+}
+
+type SockaddrInet4 struct {
+       Port int
+       Addr [4]byte
+       raw  RawSockaddrInet4
+}
+
+type SockaddrInet6 struct {
+       Port   int
+       ZoneId uint32
+       Addr   [16]byte
+       raw    RawSockaddrInet6
+}
+
+type SockaddrUnix struct {
+       Name string
+       raw  RawSockaddrUnix
+}
+
+func Bind(fd int, sa Sockaddr) (err error) {
+       ptr, n, err := sa.sockaddr()
+       if err != nil {
+               return err
+       }
+       return bind(fd, ptr, n)
+}
+
+func Connect(fd int, sa Sockaddr) (err error) {
+       ptr, n, err := sa.sockaddr()
+       if err != nil {
+               return err
+       }
+       return connect(fd, ptr, n)
+}
+
+func Getpeername(fd int) (sa Sockaddr, err error) {
+       var rsa RawSockaddrAny
+       var len _Socklen = SizeofSockaddrAny
+       if err = getpeername(fd, &rsa, &len); err != nil {
+               return
+       }
+       return anyToSockaddr(&rsa)
+}
+
+func GetsockoptInt(fd, level, opt int) (value int, err error) {
+       var n int32
+       vallen := _Socklen(4)
+       err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)
+       return int(n), err
+}
+
+func Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) {
+       var rsa RawSockaddrAny
+       var len _Socklen = SizeofSockaddrAny
+       if n, err = recvfrom(fd, p, flags, &rsa, &len); err != nil {
+               return
+       }
+       if rsa.Addr.Family != AF_UNSPEC {
+               from, err = anyToSockaddr(&rsa)
+       }
+       return
+}
+
+func Sendto(fd int, p []byte, flags int, to Sockaddr) (err error) {
+       ptr, n, err := to.sockaddr()
+       if err != nil {
+               return err
+       }
+       return sendto(fd, p, flags, ptr, n)
+}
+
+func SetsockoptByte(fd, level, opt int, value byte) (err error) {
+       return setsockopt(fd, level, opt, unsafe.Pointer(&value), 1)
+}
+
+func SetsockoptInt(fd, level, opt int, value int) (err error) {
+       var n = int32(value)
+       return setsockopt(fd, level, opt, unsafe.Pointer(&n), 4)
+}
+
+func SetsockoptInet4Addr(fd, level, opt int, value [4]byte) (err error) {
+       return setsockopt(fd, level, opt, unsafe.Pointer(&value[0]), 4)
+}
+
+func SetsockoptIPMreq(fd, level, opt int, mreq *IPMreq) (err error) {
+       return setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPMreq)
+}
+
+func SetsockoptIPv6Mreq(fd, level, opt int, mreq *IPv6Mreq) (err error) {
+       return setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPv6Mreq)
+}
+
+func SetsockoptICMPv6Filter(fd, level, opt int, filter *ICMPv6Filter) error {
+       return setsockopt(fd, level, opt, unsafe.Pointer(filter), SizeofICMPv6Filter)
+}
+
+func SetsockoptLinger(fd, level, opt int, l *Linger) (err error) {
+       return setsockopt(fd, level, opt, unsafe.Pointer(l), SizeofLinger)
+}
+
+func SetsockoptString(fd, level, opt int, s string) (err error) {
+       return setsockopt(fd, level, opt, unsafe.Pointer(&[]byte(s)[0]), uintptr(len(s)))
+}
+
+func SetsockoptTimeval(fd, level, opt int, tv *Timeval) (err error) {
+       return setsockopt(fd, level, opt, unsafe.Pointer(tv), unsafe.Sizeof(*tv))
+}
+
+func Socket(domain, typ, proto int) (fd int, err error) {
+       if domain == AF_INET6 && SocketDisableIPv6 {
+               return -1, EAFNOSUPPORT
+       }
+       fd, err = socket(domain, typ, proto)
+       return
+}
+
+func Socketpair(domain, typ, proto int) (fd [2]int, err error) {
+       var fdx [2]int32
+       err = socketpair(domain, typ, proto, &fdx)
+       if err == nil {
+               fd[0] = int(fdx[0])
+               fd[1] = int(fdx[1])
+       }
+       return
+}
+
+func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+       if raceenabled {
+               raceReleaseMerge(unsafe.Pointer(&ioSync))
+       }
+       return sendfile(outfd, infd, offset, count)
+}
+
+var ioSync int64
+
+func CloseOnExec(fd int) { fcntl(fd, F_SETFD, FD_CLOEXEC) }
+
+func SetNonblock(fd int, nonblocking bool) (err error) {
+       flag, err := fcntl(fd, F_GETFL, 0)
+       if err != nil {
+               return err
+       }
+       if nonblocking {
+               flag |= O_NONBLOCK
+       } else {
+               flag &= ^O_NONBLOCK
+       }
+       _, err = fcntl(fd, F_SETFL, flag)
+       return err
+}
diff --git a/vendor/golang.org/x/sys/unix/types_darwin.go b/vendor/golang.org/x/sys/unix/types_darwin.go
new file mode 100644 (file)
index 0000000..1153261
--- /dev/null
@@ -0,0 +1,250 @@
+// 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.
+
+// +build ignore
+
+/*
+Input to cgo -godefs.  See also mkerrors.sh and mkall.sh
+*/
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package unix
+
+/*
+#define __DARWIN_UNIX03 0
+#define KERNEL
+#define _DARWIN_USE_64_BIT_INODE
+#include <dirent.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <termios.h>
+#include <unistd.h>
+#include <mach/mach.h>
+#include <mach/message.h>
+#include <sys/event.h>
+#include <sys/mman.h>
+#include <sys/mount.h>
+#include <sys/param.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/types.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/if_var.h>
+#include <net/route.h>
+#include <netinet/in.h>
+#include <netinet/icmp6.h>
+#include <netinet/tcp.h>
+
+enum {
+       sizeofPtr = sizeof(void*),
+};
+
+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)];
+};
+
+*/
+import "C"
+
+// Machine characteristics; for internal use.
+
+const (
+       sizeofPtr      = C.sizeofPtr
+       sizeofShort    = C.sizeof_short
+       sizeofInt      = C.sizeof_int
+       sizeofLong     = C.sizeof_long
+       sizeofLongLong = C.sizeof_longlong
+)
+
+// Basic types
+
+type (
+       _C_short     C.short
+       _C_int       C.int
+       _C_long      C.long
+       _C_long_long C.longlong
+)
+
+// Time
+
+type Timespec C.struct_timespec
+
+type Timeval C.struct_timeval
+
+type Timeval32 C.struct_timeval32
+
+// Processes
+
+type Rusage C.struct_rusage
+
+type Rlimit C.struct_rlimit
+
+type _Gid_t C.gid_t
+
+// Files
+
+type Stat_t C.struct_stat64
+
+type Statfs_t C.struct_statfs64
+
+type Flock_t C.struct_flock
+
+type Fstore_t C.struct_fstore
+
+type Radvisory_t C.struct_radvisory
+
+type Fbootstraptransfer_t C.struct_fbootstraptransfer
+
+type Log2phys_t C.struct_log2phys
+
+type Fsid C.struct_fsid
+
+type Dirent C.struct_dirent
+
+// Sockets
+
+type RawSockaddrInet4 C.struct_sockaddr_in
+
+type RawSockaddrInet6 C.struct_sockaddr_in6
+
+type RawSockaddrUnix C.struct_sockaddr_un
+
+type RawSockaddrDatalink C.struct_sockaddr_dl
+
+type RawSockaddr C.struct_sockaddr
+
+type RawSockaddrAny C.struct_sockaddr_any
+
+type _Socklen C.socklen_t
+
+type Linger C.struct_linger
+
+type Iovec C.struct_iovec
+
+type IPMreq C.struct_ip_mreq
+
+type IPv6Mreq C.struct_ipv6_mreq
+
+type Msghdr C.struct_msghdr
+
+type Cmsghdr C.struct_cmsghdr
+
+type Inet4Pktinfo C.struct_in_pktinfo
+
+type Inet6Pktinfo C.struct_in6_pktinfo
+
+type IPv6MTUInfo C.struct_ip6_mtuinfo
+
+type ICMPv6Filter C.struct_icmp6_filter
+
+const (
+       SizeofSockaddrInet4    = C.sizeof_struct_sockaddr_in
+       SizeofSockaddrInet6    = C.sizeof_struct_sockaddr_in6
+       SizeofSockaddrAny      = C.sizeof_struct_sockaddr_any
+       SizeofSockaddrUnix     = C.sizeof_struct_sockaddr_un
+       SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl
+       SizeofLinger           = C.sizeof_struct_linger
+       SizeofIPMreq           = C.sizeof_struct_ip_mreq
+       SizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq
+       SizeofMsghdr           = C.sizeof_struct_msghdr
+       SizeofCmsghdr          = C.sizeof_struct_cmsghdr
+       SizeofInet4Pktinfo     = C.sizeof_struct_in_pktinfo
+       SizeofInet6Pktinfo     = C.sizeof_struct_in6_pktinfo
+       SizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo
+       SizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter
+)
+
+// Ptrace requests
+
+const (
+       PTRACE_TRACEME = C.PT_TRACE_ME
+       PTRACE_CONT    = C.PT_CONTINUE
+       PTRACE_KILL    = C.PT_KILL
+)
+
+// Events (kqueue, kevent)
+
+type Kevent_t C.struct_kevent
+
+// Select
+
+type FdSet C.fd_set
+
+// Routing and interface messages
+
+const (
+       SizeofIfMsghdr    = C.sizeof_struct_if_msghdr
+       SizeofIfData      = C.sizeof_struct_if_data
+       SizeofIfaMsghdr   = C.sizeof_struct_ifa_msghdr
+       SizeofIfmaMsghdr  = C.sizeof_struct_ifma_msghdr
+       SizeofIfmaMsghdr2 = C.sizeof_struct_ifma_msghdr2
+       SizeofRtMsghdr    = C.sizeof_struct_rt_msghdr
+       SizeofRtMetrics   = C.sizeof_struct_rt_metrics
+)
+
+type IfMsghdr C.struct_if_msghdr
+
+type IfData C.struct_if_data
+
+type IfaMsghdr C.struct_ifa_msghdr
+
+type IfmaMsghdr C.struct_ifma_msghdr
+
+type IfmaMsghdr2 C.struct_ifma_msghdr2
+
+type RtMsghdr C.struct_rt_msghdr
+
+type RtMetrics C.struct_rt_metrics
+
+// Berkeley packet filter
+
+const (
+       SizeofBpfVersion = C.sizeof_struct_bpf_version
+       SizeofBpfStat    = C.sizeof_struct_bpf_stat
+       SizeofBpfProgram = C.sizeof_struct_bpf_program
+       SizeofBpfInsn    = C.sizeof_struct_bpf_insn
+       SizeofBpfHdr     = C.sizeof_struct_bpf_hdr
+)
+
+type BpfVersion C.struct_bpf_version
+
+type BpfStat C.struct_bpf_stat
+
+type BpfProgram C.struct_bpf_program
+
+type BpfInsn C.struct_bpf_insn
+
+type BpfHdr C.struct_bpf_hdr
+
+// Terminal handling
+
+type Termios C.struct_termios
+
+// fchmodat-like syscalls.
+
+const (
+       AT_FDCWD            = C.AT_FDCWD
+       AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
+)
diff --git a/vendor/golang.org/x/sys/unix/types_dragonfly.go b/vendor/golang.org/x/sys/unix/types_dragonfly.go
new file mode 100644 (file)
index 0000000..f3c971d
--- /dev/null
@@ -0,0 +1,242 @@
+// 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.
+
+// +build ignore
+
+/*
+Input to cgo -godefs.  See also mkerrors.sh and mkall.sh
+*/
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package unix
+
+/*
+#define KERNEL
+#include <dirent.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <termios.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/event.h>
+#include <sys/mman.h>
+#include <sys/mount.h>
+#include <sys/param.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/types.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/icmp6.h>
+#include <netinet/tcp.h>
+
+enum {
+       sizeofPtr = sizeof(void*),
+};
+
+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)];
+};
+
+*/
+import "C"
+
+// Machine characteristics; for internal use.
+
+const (
+       sizeofPtr      = C.sizeofPtr
+       sizeofShort    = C.sizeof_short
+       sizeofInt      = C.sizeof_int
+       sizeofLong     = C.sizeof_long
+       sizeofLongLong = C.sizeof_longlong
+)
+
+// Basic types
+
+type (
+       _C_short     C.short
+       _C_int       C.int
+       _C_long      C.long
+       _C_long_long C.longlong
+)
+
+// Time
+
+type Timespec C.struct_timespec
+
+type Timeval C.struct_timeval
+
+// Processes
+
+type Rusage C.struct_rusage
+
+type Rlimit C.struct_rlimit
+
+type _Gid_t C.gid_t
+
+// Files
+
+const ( // Directory mode bits
+       S_IFMT   = C.S_IFMT
+       S_IFIFO  = C.S_IFIFO
+       S_IFCHR  = C.S_IFCHR
+       S_IFDIR  = C.S_IFDIR
+       S_IFBLK  = C.S_IFBLK
+       S_IFREG  = C.S_IFREG
+       S_IFLNK  = C.S_IFLNK
+       S_IFSOCK = C.S_IFSOCK
+       S_ISUID  = C.S_ISUID
+       S_ISGID  = C.S_ISGID
+       S_ISVTX  = C.S_ISVTX
+       S_IRUSR  = C.S_IRUSR
+       S_IWUSR  = C.S_IWUSR
+       S_IXUSR  = C.S_IXUSR
+)
+
+type Stat_t C.struct_stat
+
+type Statfs_t C.struct_statfs
+
+type Flock_t C.struct_flock
+
+type Dirent C.struct_dirent
+
+type Fsid C.struct_fsid
+
+// Sockets
+
+type RawSockaddrInet4 C.struct_sockaddr_in
+
+type RawSockaddrInet6 C.struct_sockaddr_in6
+
+type RawSockaddrUnix C.struct_sockaddr_un
+
+type RawSockaddrDatalink C.struct_sockaddr_dl
+
+type RawSockaddr C.struct_sockaddr
+
+type RawSockaddrAny C.struct_sockaddr_any
+
+type _Socklen C.socklen_t
+
+type Linger C.struct_linger
+
+type Iovec C.struct_iovec
+
+type IPMreq C.struct_ip_mreq
+
+type IPv6Mreq C.struct_ipv6_mreq
+
+type Msghdr C.struct_msghdr
+
+type Cmsghdr C.struct_cmsghdr
+
+type Inet6Pktinfo C.struct_in6_pktinfo
+
+type IPv6MTUInfo C.struct_ip6_mtuinfo
+
+type ICMPv6Filter C.struct_icmp6_filter
+
+const (
+       SizeofSockaddrInet4    = C.sizeof_struct_sockaddr_in
+       SizeofSockaddrInet6    = C.sizeof_struct_sockaddr_in6
+       SizeofSockaddrAny      = C.sizeof_struct_sockaddr_any
+       SizeofSockaddrUnix     = C.sizeof_struct_sockaddr_un
+       SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl
+       SizeofLinger           = C.sizeof_struct_linger
+       SizeofIPMreq           = C.sizeof_struct_ip_mreq
+       SizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq
+       SizeofMsghdr           = C.sizeof_struct_msghdr
+       SizeofCmsghdr          = C.sizeof_struct_cmsghdr
+       SizeofInet6Pktinfo     = C.sizeof_struct_in6_pktinfo
+       SizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo
+       SizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter
+)
+
+// Ptrace requests
+
+const (
+       PTRACE_TRACEME = C.PT_TRACE_ME
+       PTRACE_CONT    = C.PT_CONTINUE
+       PTRACE_KILL    = C.PT_KILL
+)
+
+// Events (kqueue, kevent)
+
+type Kevent_t C.struct_kevent
+
+// Select
+
+type FdSet C.fd_set
+
+// Routing and interface messages
+
+const (
+       SizeofIfMsghdr         = C.sizeof_struct_if_msghdr
+       SizeofIfData           = C.sizeof_struct_if_data
+       SizeofIfaMsghdr        = C.sizeof_struct_ifa_msghdr
+       SizeofIfmaMsghdr       = C.sizeof_struct_ifma_msghdr
+       SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr
+       SizeofRtMsghdr         = C.sizeof_struct_rt_msghdr
+       SizeofRtMetrics        = C.sizeof_struct_rt_metrics
+)
+
+type IfMsghdr C.struct_if_msghdr
+
+type IfData C.struct_if_data
+
+type IfaMsghdr C.struct_ifa_msghdr
+
+type IfmaMsghdr C.struct_ifma_msghdr
+
+type IfAnnounceMsghdr C.struct_if_announcemsghdr
+
+type RtMsghdr C.struct_rt_msghdr
+
+type RtMetrics C.struct_rt_metrics
+
+// Berkeley packet filter
+
+const (
+       SizeofBpfVersion = C.sizeof_struct_bpf_version
+       SizeofBpfStat    = C.sizeof_struct_bpf_stat
+       SizeofBpfProgram = C.sizeof_struct_bpf_program
+       SizeofBpfInsn    = C.sizeof_struct_bpf_insn
+       SizeofBpfHdr     = C.sizeof_struct_bpf_hdr
+)
+
+type BpfVersion C.struct_bpf_version
+
+type BpfStat C.struct_bpf_stat
+
+type BpfProgram C.struct_bpf_program
+
+type BpfInsn C.struct_bpf_insn
+
+type BpfHdr C.struct_bpf_hdr
+
+// Terminal handling
+
+type Termios C.struct_termios
diff --git a/vendor/golang.org/x/sys/unix/types_freebsd.go b/vendor/golang.org/x/sys/unix/types_freebsd.go
new file mode 100644 (file)
index 0000000..ae24557
--- /dev/null
@@ -0,0 +1,353 @@
+// 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.
+
+// +build ignore
+
+/*
+Input to cgo -godefs.  See also mkerrors.sh and mkall.sh
+*/
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package unix
+
+/*
+#define KERNEL
+#include <dirent.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <termios.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/event.h>
+#include <sys/mman.h>
+#include <sys/mount.h>
+#include <sys/param.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/types.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/icmp6.h>
+#include <netinet/tcp.h>
+
+enum {
+       sizeofPtr = sizeof(void*),
+};
+
+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)];
+};
+
+// This structure is a duplicate of stat on FreeBSD 8-STABLE.
+// See /usr/include/sys/stat.h.
+struct stat8 {
+#undef st_atimespec    st_atim
+#undef st_mtimespec    st_mtim
+#undef st_ctimespec    st_ctim
+#undef st_birthtimespec        st_birthtim
+       __dev_t   st_dev;
+       ino_t     st_ino;
+       mode_t    st_mode;
+       nlink_t   st_nlink;
+       uid_t     st_uid;
+       gid_t     st_gid;
+       __dev_t   st_rdev;
+#if __BSD_VISIBLE
+       struct  timespec st_atimespec;
+       struct  timespec st_mtimespec;
+       struct  timespec st_ctimespec;
+#else
+       time_t    st_atime;
+       long      __st_atimensec;
+       time_t    st_mtime;
+       long      __st_mtimensec;
+       time_t    st_ctime;
+       long      __st_ctimensec;
+#endif
+       off_t     st_size;
+       blkcnt_t st_blocks;
+       blksize_t st_blksize;
+       fflags_t  st_flags;
+       __uint32_t st_gen;
+       __int32_t st_lspare;
+#if __BSD_VISIBLE
+       struct timespec st_birthtimespec;
+       unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));
+       unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec));
+#else
+       time_t    st_birthtime;
+       long      st_birthtimensec;
+       unsigned int :(8 / 2) * (16 - (int)sizeof(struct __timespec));
+       unsigned int :(8 / 2) * (16 - (int)sizeof(struct __timespec));
+#endif
+};
+
+// This structure is a duplicate of if_data on FreeBSD 8-STABLE.
+// See /usr/include/net/if.h.
+struct if_data8 {
+       u_char  ifi_type;
+       u_char  ifi_physical;
+       u_char  ifi_addrlen;
+       u_char  ifi_hdrlen;
+       u_char  ifi_link_state;
+       u_char  ifi_spare_char1;
+       u_char  ifi_spare_char2;
+       u_char  ifi_datalen;
+       u_long  ifi_mtu;
+       u_long  ifi_metric;
+       u_long  ifi_baudrate;
+       u_long  ifi_ipackets;
+       u_long  ifi_ierrors;
+       u_long  ifi_opackets;
+       u_long  ifi_oerrors;
+       u_long  ifi_collisions;
+       u_long  ifi_ibytes;
+       u_long  ifi_obytes;
+       u_long  ifi_imcasts;
+       u_long  ifi_omcasts;
+       u_long  ifi_iqdrops;
+       u_long  ifi_noproto;
+       u_long  ifi_hwassist;
+       time_t  ifi_epoch;
+       struct  timeval ifi_lastchange;
+};
+
+// This structure is a duplicate of if_msghdr on FreeBSD 8-STABLE.
+// See /usr/include/net/if.h.
+struct if_msghdr8 {
+       u_short ifm_msglen;
+       u_char  ifm_version;
+       u_char  ifm_type;
+       int     ifm_addrs;
+       int     ifm_flags;
+       u_short ifm_index;
+       struct  if_data8 ifm_data;
+};
+*/
+import "C"
+
+// Machine characteristics; for internal use.
+
+const (
+       sizeofPtr      = C.sizeofPtr
+       sizeofShort    = C.sizeof_short
+       sizeofInt      = C.sizeof_int
+       sizeofLong     = C.sizeof_long
+       sizeofLongLong = C.sizeof_longlong
+)
+
+// Basic types
+
+type (
+       _C_short     C.short
+       _C_int       C.int
+       _C_long      C.long
+       _C_long_long C.longlong
+)
+
+// Time
+
+type Timespec C.struct_timespec
+
+type Timeval C.struct_timeval
+
+// Processes
+
+type Rusage C.struct_rusage
+
+type Rlimit C.struct_rlimit
+
+type _Gid_t C.gid_t
+
+// Files
+
+const ( // Directory mode bits
+       S_IFMT   = C.S_IFMT
+       S_IFIFO  = C.S_IFIFO
+       S_IFCHR  = C.S_IFCHR
+       S_IFDIR  = C.S_IFDIR
+       S_IFBLK  = C.S_IFBLK
+       S_IFREG  = C.S_IFREG
+       S_IFLNK  = C.S_IFLNK
+       S_IFSOCK = C.S_IFSOCK
+       S_ISUID  = C.S_ISUID
+       S_ISGID  = C.S_ISGID
+       S_ISVTX  = C.S_ISVTX
+       S_IRUSR  = C.S_IRUSR
+       S_IWUSR  = C.S_IWUSR
+       S_IXUSR  = C.S_IXUSR
+)
+
+type Stat_t C.struct_stat8
+
+type Statfs_t C.struct_statfs
+
+type Flock_t C.struct_flock
+
+type Dirent C.struct_dirent
+
+type Fsid C.struct_fsid
+
+// Advice to Fadvise
+
+const (
+       FADV_NORMAL     = C.POSIX_FADV_NORMAL
+       FADV_RANDOM     = C.POSIX_FADV_RANDOM
+       FADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL
+       FADV_WILLNEED   = C.POSIX_FADV_WILLNEED
+       FADV_DONTNEED   = C.POSIX_FADV_DONTNEED
+       FADV_NOREUSE    = C.POSIX_FADV_NOREUSE
+)
+
+// Sockets
+
+type RawSockaddrInet4 C.struct_sockaddr_in
+
+type RawSockaddrInet6 C.struct_sockaddr_in6
+
+type RawSockaddrUnix C.struct_sockaddr_un
+
+type RawSockaddrDatalink C.struct_sockaddr_dl
+
+type RawSockaddr C.struct_sockaddr
+
+type RawSockaddrAny C.struct_sockaddr_any
+
+type _Socklen C.socklen_t
+
+type Linger C.struct_linger
+
+type Iovec C.struct_iovec
+
+type IPMreq C.struct_ip_mreq
+
+type IPMreqn C.struct_ip_mreqn
+
+type IPv6Mreq C.struct_ipv6_mreq
+
+type Msghdr C.struct_msghdr
+
+type Cmsghdr C.struct_cmsghdr
+
+type Inet6Pktinfo C.struct_in6_pktinfo
+
+type IPv6MTUInfo C.struct_ip6_mtuinfo
+
+type ICMPv6Filter C.struct_icmp6_filter
+
+const (
+       SizeofSockaddrInet4    = C.sizeof_struct_sockaddr_in
+       SizeofSockaddrInet6    = C.sizeof_struct_sockaddr_in6
+       SizeofSockaddrAny      = C.sizeof_struct_sockaddr_any
+       SizeofSockaddrUnix     = C.sizeof_struct_sockaddr_un
+       SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl
+       SizeofLinger           = C.sizeof_struct_linger
+       SizeofIPMreq           = C.sizeof_struct_ip_mreq
+       SizeofIPMreqn          = C.sizeof_struct_ip_mreqn
+       SizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq
+       SizeofMsghdr           = C.sizeof_struct_msghdr
+       SizeofCmsghdr          = C.sizeof_struct_cmsghdr
+       SizeofInet6Pktinfo     = C.sizeof_struct_in6_pktinfo
+       SizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo
+       SizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter
+)
+
+// Ptrace requests
+
+const (
+       PTRACE_TRACEME = C.PT_TRACE_ME
+       PTRACE_CONT    = C.PT_CONTINUE
+       PTRACE_KILL    = C.PT_KILL
+)
+
+// Events (kqueue, kevent)
+
+type Kevent_t C.struct_kevent
+
+// Select
+
+type FdSet C.fd_set
+
+// Routing and interface messages
+
+const (
+       sizeofIfMsghdr         = C.sizeof_struct_if_msghdr
+       SizeofIfMsghdr         = C.sizeof_struct_if_msghdr8
+       sizeofIfData           = C.sizeof_struct_if_data
+       SizeofIfData           = C.sizeof_struct_if_data8
+       SizeofIfaMsghdr        = C.sizeof_struct_ifa_msghdr
+       SizeofIfmaMsghdr       = C.sizeof_struct_ifma_msghdr
+       SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr
+       SizeofRtMsghdr         = C.sizeof_struct_rt_msghdr
+       SizeofRtMetrics        = C.sizeof_struct_rt_metrics
+)
+
+type ifMsghdr C.struct_if_msghdr
+
+type IfMsghdr C.struct_if_msghdr8
+
+type ifData C.struct_if_data
+
+type IfData C.struct_if_data8
+
+type IfaMsghdr C.struct_ifa_msghdr
+
+type IfmaMsghdr C.struct_ifma_msghdr
+
+type IfAnnounceMsghdr C.struct_if_announcemsghdr
+
+type RtMsghdr C.struct_rt_msghdr
+
+type RtMetrics C.struct_rt_metrics
+
+// Berkeley packet filter
+
+const (
+       SizeofBpfVersion    = C.sizeof_struct_bpf_version
+       SizeofBpfStat       = C.sizeof_struct_bpf_stat
+       SizeofBpfZbuf       = C.sizeof_struct_bpf_zbuf
+       SizeofBpfProgram    = C.sizeof_struct_bpf_program
+       SizeofBpfInsn       = C.sizeof_struct_bpf_insn
+       SizeofBpfHdr        = C.sizeof_struct_bpf_hdr
+       SizeofBpfZbufHeader = C.sizeof_struct_bpf_zbuf_header
+)
+
+type BpfVersion C.struct_bpf_version
+
+type BpfStat C.struct_bpf_stat
+
+type BpfZbuf C.struct_bpf_zbuf
+
+type BpfProgram C.struct_bpf_program
+
+type BpfInsn C.struct_bpf_insn
+
+type BpfHdr C.struct_bpf_hdr
+
+type BpfZbufHeader C.struct_bpf_zbuf_header
+
+// Terminal handling
+
+type Termios C.struct_termios
diff --git a/vendor/golang.org/x/sys/unix/types_linux.go b/vendor/golang.org/x/sys/unix/types_linux.go
new file mode 100644 (file)
index 0000000..16378fa
--- /dev/null
@@ -0,0 +1,408 @@
+// 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.
+
+// +build ignore
+
+/*
+Input to cgo -godefs.  See also mkerrors.sh and mkall.sh
+*/
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package unix
+
+/*
+#define _LARGEFILE_SOURCE
+#define _LARGEFILE64_SOURCE
+#define _FILE_OFFSET_BITS 64
+#define _GNU_SOURCE
+
+#include <dirent.h>
+#include <fcntl.h>
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+#include <netpacket/packet.h>
+#include <signal.h>
+#include <stdio.h>
+#include <sys/epoll.h>
+#include <sys/inotify.h>
+#include <sys/mman.h>
+#include <sys/mount.h>
+#include <sys/param.h>
+#include <sys/ptrace.h>
+#include <sys/resource.h>
+#include <sys/select.h>
+#include <sys/signal.h>
+#include <sys/stat.h>
+#include <sys/statfs.h>
+#include <sys/sysinfo.h>
+#include <sys/time.h>
+#include <sys/times.h>
+#include <sys/timex.h>
+#include <sys/types.h>
+#include <sys/un.h>
+#include <sys/user.h>
+#include <sys/utsname.h>
+#include <sys/wait.h>
+#include <linux/filter.h>
+#include <linux/netlink.h>
+#include <linux/rtnetlink.h>
+#include <linux/icmpv6.h>
+#include <asm/termbits.h>
+#include <time.h>
+#include <unistd.h>
+#include <ustat.h>
+#include <utime.h>
+
+#ifdef TCSETS2
+// On systems that have "struct termios2" use this as type Termios.
+typedef struct termios2 termios_t;
+#else
+typedef struct termios termios_t;
+#endif
+
+enum {
+       sizeofPtr = sizeof(void*),
+};
+
+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_ll s5;
+       struct sockaddr_nl s6;
+};
+
+struct sockaddr_any {
+       struct sockaddr addr;
+       char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];
+};
+
+// copied from /usr/include/linux/un.h
+struct my_sockaddr_un {
+       sa_family_t sun_family;
+#if defined(__ARM_EABI__) || defined(__powerpc64__)
+       // on ARM char is by default unsigned
+       signed char sun_path[108];
+#else
+       char sun_path[108];
+#endif
+};
+
+#ifdef __ARM_EABI__
+typedef struct user_regs PtraceRegs;
+#elif defined(__aarch64__)
+typedef struct user_pt_regs PtraceRegs;
+#elif defined(__powerpc64__)
+typedef struct pt_regs PtraceRegs;
+#elif defined(__mips__)
+typedef struct user PtraceRegs;
+#else
+typedef struct user_regs_struct PtraceRegs;
+#endif
+
+// The real epoll_event is a union, and godefs doesn't handle it well.
+struct my_epoll_event {
+       uint32_t events;
+#ifdef __ARM_EABI__
+       // padding is not specified in linux/eventpoll.h but added to conform to the
+       // alignment requirements of EABI
+       int32_t padFd;
+#endif
+       int32_t fd;
+       int32_t pad;
+};
+
+*/
+import "C"
+
+// Machine characteristics; for internal use.
+
+const (
+       sizeofPtr      = C.sizeofPtr
+       sizeofShort    = C.sizeof_short
+       sizeofInt      = C.sizeof_int
+       sizeofLong     = C.sizeof_long
+       sizeofLongLong = C.sizeof_longlong
+       PathMax        = C.PATH_MAX
+)
+
+// Basic types
+
+type (
+       _C_short     C.short
+       _C_int       C.int
+       _C_long      C.long
+       _C_long_long C.longlong
+)
+
+// Time
+
+type Timespec C.struct_timespec
+
+type Timeval C.struct_timeval
+
+type Timex C.struct_timex
+
+type Time_t C.time_t
+
+type Tms C.struct_tms
+
+type Utimbuf C.struct_utimbuf
+
+// Processes
+
+type Rusage C.struct_rusage
+
+type Rlimit C.struct_rlimit
+
+type _Gid_t C.gid_t
+
+// Files
+
+type Stat_t C.struct_stat
+
+type Statfs_t C.struct_statfs
+
+type Dirent C.struct_dirent
+
+type Fsid C.fsid_t
+
+type Flock_t C.struct_flock
+
+// Advice to Fadvise
+
+const (
+       FADV_NORMAL     = C.POSIX_FADV_NORMAL
+       FADV_RANDOM     = C.POSIX_FADV_RANDOM
+       FADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL
+       FADV_WILLNEED   = C.POSIX_FADV_WILLNEED
+       FADV_DONTNEED   = C.POSIX_FADV_DONTNEED
+       FADV_NOREUSE    = C.POSIX_FADV_NOREUSE
+)
+
+// Sockets
+
+type RawSockaddrInet4 C.struct_sockaddr_in
+
+type RawSockaddrInet6 C.struct_sockaddr_in6
+
+type RawSockaddrUnix C.struct_my_sockaddr_un
+
+type RawSockaddrLinklayer C.struct_sockaddr_ll
+
+type RawSockaddrNetlink C.struct_sockaddr_nl
+
+type RawSockaddr C.struct_sockaddr
+
+type RawSockaddrAny C.struct_sockaddr_any
+
+type _Socklen C.socklen_t
+
+type Linger C.struct_linger
+
+type Iovec C.struct_iovec
+
+type IPMreq C.struct_ip_mreq
+
+type IPMreqn C.struct_ip_mreqn
+
+type IPv6Mreq C.struct_ipv6_mreq
+
+type Msghdr C.struct_msghdr
+
+type Cmsghdr C.struct_cmsghdr
+
+type Inet4Pktinfo C.struct_in_pktinfo
+
+type Inet6Pktinfo C.struct_in6_pktinfo
+
+type IPv6MTUInfo C.struct_ip6_mtuinfo
+
+type ICMPv6Filter C.struct_icmp6_filter
+
+type Ucred C.struct_ucred
+
+type TCPInfo C.struct_tcp_info
+
+const (
+       SizeofSockaddrInet4     = C.sizeof_struct_sockaddr_in
+       SizeofSockaddrInet6     = C.sizeof_struct_sockaddr_in6
+       SizeofSockaddrAny       = C.sizeof_struct_sockaddr_any
+       SizeofSockaddrUnix      = C.sizeof_struct_sockaddr_un
+       SizeofSockaddrLinklayer = C.sizeof_struct_sockaddr_ll
+       SizeofSockaddrNetlink   = C.sizeof_struct_sockaddr_nl
+       SizeofLinger            = C.sizeof_struct_linger
+       SizeofIPMreq            = C.sizeof_struct_ip_mreq
+       SizeofIPMreqn           = C.sizeof_struct_ip_mreqn
+       SizeofIPv6Mreq          = C.sizeof_struct_ipv6_mreq
+       SizeofMsghdr            = C.sizeof_struct_msghdr
+       SizeofCmsghdr           = C.sizeof_struct_cmsghdr
+       SizeofInet4Pktinfo      = C.sizeof_struct_in_pktinfo
+       SizeofInet6Pktinfo      = C.sizeof_struct_in6_pktinfo
+       SizeofIPv6MTUInfo       = C.sizeof_struct_ip6_mtuinfo
+       SizeofICMPv6Filter      = C.sizeof_struct_icmp6_filter
+       SizeofUcred             = C.sizeof_struct_ucred
+       SizeofTCPInfo           = C.sizeof_struct_tcp_info
+)
+
+// Netlink routing and interface messages
+
+const (
+       IFA_UNSPEC          = C.IFA_UNSPEC
+       IFA_ADDRESS         = C.IFA_ADDRESS
+       IFA_LOCAL           = C.IFA_LOCAL
+       IFA_LABEL           = C.IFA_LABEL
+       IFA_BROADCAST       = C.IFA_BROADCAST
+       IFA_ANYCAST         = C.IFA_ANYCAST
+       IFA_CACHEINFO       = C.IFA_CACHEINFO
+       IFA_MULTICAST       = C.IFA_MULTICAST
+       IFLA_UNSPEC         = C.IFLA_UNSPEC
+       IFLA_ADDRESS        = C.IFLA_ADDRESS
+       IFLA_BROADCAST      = C.IFLA_BROADCAST
+       IFLA_IFNAME         = C.IFLA_IFNAME
+       IFLA_MTU            = C.IFLA_MTU
+       IFLA_LINK           = C.IFLA_LINK
+       IFLA_QDISC          = C.IFLA_QDISC
+       IFLA_STATS          = C.IFLA_STATS
+       IFLA_COST           = C.IFLA_COST
+       IFLA_PRIORITY       = C.IFLA_PRIORITY
+       IFLA_MASTER         = C.IFLA_MASTER
+       IFLA_WIRELESS       = C.IFLA_WIRELESS
+       IFLA_PROTINFO       = C.IFLA_PROTINFO
+       IFLA_TXQLEN         = C.IFLA_TXQLEN
+       IFLA_MAP            = C.IFLA_MAP
+       IFLA_WEIGHT         = C.IFLA_WEIGHT
+       IFLA_OPERSTATE      = C.IFLA_OPERSTATE
+       IFLA_LINKMODE       = C.IFLA_LINKMODE
+       IFLA_LINKINFO       = C.IFLA_LINKINFO
+       IFLA_NET_NS_PID     = C.IFLA_NET_NS_PID
+       IFLA_IFALIAS        = C.IFLA_IFALIAS
+       IFLA_MAX            = C.IFLA_MAX
+       RT_SCOPE_UNIVERSE   = C.RT_SCOPE_UNIVERSE
+       RT_SCOPE_SITE       = C.RT_SCOPE_SITE
+       RT_SCOPE_LINK       = C.RT_SCOPE_LINK
+       RT_SCOPE_HOST       = C.RT_SCOPE_HOST
+       RT_SCOPE_NOWHERE    = C.RT_SCOPE_NOWHERE
+       RT_TABLE_UNSPEC     = C.RT_TABLE_UNSPEC
+       RT_TABLE_COMPAT     = C.RT_TABLE_COMPAT
+       RT_TABLE_DEFAULT    = C.RT_TABLE_DEFAULT
+       RT_TABLE_MAIN       = C.RT_TABLE_MAIN
+       RT_TABLE_LOCAL      = C.RT_TABLE_LOCAL
+       RT_TABLE_MAX        = C.RT_TABLE_MAX
+       RTA_UNSPEC          = C.RTA_UNSPEC
+       RTA_DST             = C.RTA_DST
+       RTA_SRC             = C.RTA_SRC
+       RTA_IIF             = C.RTA_IIF
+       RTA_OIF             = C.RTA_OIF
+       RTA_GATEWAY         = C.RTA_GATEWAY
+       RTA_PRIORITY        = C.RTA_PRIORITY
+       RTA_PREFSRC         = C.RTA_PREFSRC
+       RTA_METRICS         = C.RTA_METRICS
+       RTA_MULTIPATH       = C.RTA_MULTIPATH
+       RTA_FLOW            = C.RTA_FLOW
+       RTA_CACHEINFO       = C.RTA_CACHEINFO
+       RTA_TABLE           = C.RTA_TABLE
+       RTN_UNSPEC          = C.RTN_UNSPEC
+       RTN_UNICAST         = C.RTN_UNICAST
+       RTN_LOCAL           = C.RTN_LOCAL
+       RTN_BROADCAST       = C.RTN_BROADCAST
+       RTN_ANYCAST         = C.RTN_ANYCAST
+       RTN_MULTICAST       = C.RTN_MULTICAST
+       RTN_BLACKHOLE       = C.RTN_BLACKHOLE
+       RTN_UNREACHABLE     = C.RTN_UNREACHABLE
+       RTN_PROHIBIT        = C.RTN_PROHIBIT
+       RTN_THROW           = C.RTN_THROW
+       RTN_NAT             = C.RTN_NAT
+       RTN_XRESOLVE        = C.RTN_XRESOLVE
+       RTNLGRP_NONE        = C.RTNLGRP_NONE
+       RTNLGRP_LINK        = C.RTNLGRP_LINK
+       RTNLGRP_NOTIFY      = C.RTNLGRP_NOTIFY
+       RTNLGRP_NEIGH       = C.RTNLGRP_NEIGH
+       RTNLGRP_TC          = C.RTNLGRP_TC
+       RTNLGRP_IPV4_IFADDR = C.RTNLGRP_IPV4_IFADDR
+       RTNLGRP_IPV4_MROUTE = C.RTNLGRP_IPV4_MROUTE
+       RTNLGRP_IPV4_ROUTE  = C.RTNLGRP_IPV4_ROUTE
+       RTNLGRP_IPV4_RULE   = C.RTNLGRP_IPV4_RULE
+       RTNLGRP_IPV6_IFADDR = C.RTNLGRP_IPV6_IFADDR
+       RTNLGRP_IPV6_MROUTE = C.RTNLGRP_IPV6_MROUTE
+       RTNLGRP_IPV6_ROUTE  = C.RTNLGRP_IPV6_ROUTE
+       RTNLGRP_IPV6_IFINFO = C.RTNLGRP_IPV6_IFINFO
+       RTNLGRP_IPV6_PREFIX = C.RTNLGRP_IPV6_PREFIX
+       RTNLGRP_IPV6_RULE   = C.RTNLGRP_IPV6_RULE
+       RTNLGRP_ND_USEROPT  = C.RTNLGRP_ND_USEROPT
+       SizeofNlMsghdr      = C.sizeof_struct_nlmsghdr
+       SizeofNlMsgerr      = C.sizeof_struct_nlmsgerr
+       SizeofRtGenmsg      = C.sizeof_struct_rtgenmsg
+       SizeofNlAttr        = C.sizeof_struct_nlattr
+       SizeofRtAttr        = C.sizeof_struct_rtattr
+       SizeofIfInfomsg     = C.sizeof_struct_ifinfomsg
+       SizeofIfAddrmsg     = C.sizeof_struct_ifaddrmsg
+       SizeofRtMsg         = C.sizeof_struct_rtmsg
+       SizeofRtNexthop     = C.sizeof_struct_rtnexthop
+)
+
+type NlMsghdr C.struct_nlmsghdr
+
+type NlMsgerr C.struct_nlmsgerr
+
+type RtGenmsg C.struct_rtgenmsg
+
+type NlAttr C.struct_nlattr
+
+type RtAttr C.struct_rtattr
+
+type IfInfomsg C.struct_ifinfomsg
+
+type IfAddrmsg C.struct_ifaddrmsg
+
+type RtMsg C.struct_rtmsg
+
+type RtNexthop C.struct_rtnexthop
+
+// Linux socket filter
+
+const (
+       SizeofSockFilter = C.sizeof_struct_sock_filter
+       SizeofSockFprog  = C.sizeof_struct_sock_fprog
+)
+
+type SockFilter C.struct_sock_filter
+
+type SockFprog C.struct_sock_fprog
+
+// Inotify
+
+type InotifyEvent C.struct_inotify_event
+
+const SizeofInotifyEvent = C.sizeof_struct_inotify_event
+
+// Ptrace
+
+// Register structures
+type PtraceRegs C.PtraceRegs
+
+// Misc
+
+type FdSet C.fd_set
+
+type Sysinfo_t C.struct_sysinfo
+
+type Utsname C.struct_utsname
+
+type Ustat_t C.struct_ustat
+
+type EpollEvent C.struct_my_epoll_event
+
+const (
+       AT_FDCWD            = C.AT_FDCWD
+       AT_REMOVEDIR        = C.AT_REMOVEDIR
+       AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
+)
+
+// Terminal handling
+
+type Termios C.termios_t
diff --git a/vendor/golang.org/x/sys/unix/types_netbsd.go b/vendor/golang.org/x/sys/unix/types_netbsd.go
new file mode 100644 (file)
index 0000000..d15f93d
--- /dev/null
@@ -0,0 +1,232 @@
+// 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.
+
+// +build ignore
+
+/*
+Input to cgo -godefs.  See also mkerrors.sh and mkall.sh
+*/
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package unix
+
+/*
+#define KERNEL
+#include <dirent.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <termios.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/sysctl.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/icmp6.h>
+#include <netinet/tcp.h>
+
+enum {
+       sizeofPtr = sizeof(void*),
+};
+
+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)];
+};
+
+*/
+import "C"
+
+// Machine characteristics; for internal use.
+
+const (
+       sizeofPtr      = C.sizeofPtr
+       sizeofShort    = C.sizeof_short
+       sizeofInt      = C.sizeof_int
+       sizeofLong     = C.sizeof_long
+       sizeofLongLong = C.sizeof_longlong
+)
+
+// Basic types
+
+type (
+       _C_short     C.short
+       _C_int       C.int
+       _C_long      C.long
+       _C_long_long C.longlong
+)
+
+// Time
+
+type Timespec C.struct_timespec
+
+type Timeval C.struct_timeval
+
+// Processes
+
+type Rusage C.struct_rusage
+
+type Rlimit C.struct_rlimit
+
+type _Gid_t C.gid_t
+
+// Files
+
+type Stat_t C.struct_stat
+
+type Statfs_t C.struct_statfs
+
+type Flock_t C.struct_flock
+
+type Dirent C.struct_dirent
+
+type Fsid C.fsid_t
+
+// Sockets
+
+type RawSockaddrInet4 C.struct_sockaddr_in
+
+type RawSockaddrInet6 C.struct_sockaddr_in6
+
+type RawSockaddrUnix C.struct_sockaddr_un
+
+type RawSockaddrDatalink C.struct_sockaddr_dl
+
+type RawSockaddr C.struct_sockaddr
+
+type RawSockaddrAny C.struct_sockaddr_any
+
+type _Socklen C.socklen_t
+
+type Linger C.struct_linger
+
+type Iovec C.struct_iovec
+
+type IPMreq C.struct_ip_mreq
+
+type IPv6Mreq C.struct_ipv6_mreq
+
+type Msghdr C.struct_msghdr
+
+type Cmsghdr C.struct_cmsghdr
+
+type Inet6Pktinfo C.struct_in6_pktinfo
+
+type IPv6MTUInfo C.struct_ip6_mtuinfo
+
+type ICMPv6Filter C.struct_icmp6_filter
+
+const (
+       SizeofSockaddrInet4    = C.sizeof_struct_sockaddr_in
+       SizeofSockaddrInet6    = C.sizeof_struct_sockaddr_in6
+       SizeofSockaddrAny      = C.sizeof_struct_sockaddr_any
+       SizeofSockaddrUnix     = C.sizeof_struct_sockaddr_un
+       SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl
+       SizeofLinger           = C.sizeof_struct_linger
+       SizeofIPMreq           = C.sizeof_struct_ip_mreq
+       SizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq
+       SizeofMsghdr           = C.sizeof_struct_msghdr
+       SizeofCmsghdr          = C.sizeof_struct_cmsghdr
+       SizeofInet6Pktinfo     = C.sizeof_struct_in6_pktinfo
+       SizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo
+       SizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter
+)
+
+// Ptrace requests
+
+const (
+       PTRACE_TRACEME = C.PT_TRACE_ME
+       PTRACE_CONT    = C.PT_CONTINUE
+       PTRACE_KILL    = C.PT_KILL
+)
+
+// Events (kqueue, kevent)
+
+type Kevent_t C.struct_kevent
+
+// Select
+
+type FdSet C.fd_set
+
+// Routing and interface messages
+
+const (
+       SizeofIfMsghdr         = C.sizeof_struct_if_msghdr
+       SizeofIfData           = C.sizeof_struct_if_data
+       SizeofIfaMsghdr        = C.sizeof_struct_ifa_msghdr
+       SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr
+       SizeofRtMsghdr         = C.sizeof_struct_rt_msghdr
+       SizeofRtMetrics        = C.sizeof_struct_rt_metrics
+)
+
+type IfMsghdr C.struct_if_msghdr
+
+type IfData C.struct_if_data
+
+type IfaMsghdr C.struct_ifa_msghdr
+
+type IfAnnounceMsghdr C.struct_if_announcemsghdr
+
+type RtMsghdr C.struct_rt_msghdr
+
+type RtMetrics C.struct_rt_metrics
+
+type Mclpool C.struct_mclpool
+
+// Berkeley packet filter
+
+const (
+       SizeofBpfVersion = C.sizeof_struct_bpf_version
+       SizeofBpfStat    = C.sizeof_struct_bpf_stat
+       SizeofBpfProgram = C.sizeof_struct_bpf_program
+       SizeofBpfInsn    = C.sizeof_struct_bpf_insn
+       SizeofBpfHdr     = C.sizeof_struct_bpf_hdr
+)
+
+type BpfVersion C.struct_bpf_version
+
+type BpfStat C.struct_bpf_stat
+
+type BpfProgram C.struct_bpf_program
+
+type BpfInsn C.struct_bpf_insn
+
+type BpfHdr C.struct_bpf_hdr
+
+type BpfTimeval C.struct_bpf_timeval
+
+// Terminal handling
+
+type Termios C.struct_termios
+
+// Sysctl
+
+type Sysctlnode C.struct_sysctlnode
diff --git a/vendor/golang.org/x/sys/unix/types_openbsd.go b/vendor/golang.org/x/sys/unix/types_openbsd.go
new file mode 100644 (file)
index 0000000..b66fe25
--- /dev/null
@@ -0,0 +1,244 @@
+// 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.
+
+// +build ignore
+
+/*
+Input to cgo -godefs.  See also mkerrors.sh and mkall.sh
+*/
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package unix
+
+/*
+#define KERNEL
+#include <dirent.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <termios.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/icmp6.h>
+#include <netinet/tcp.h>
+
+enum {
+       sizeofPtr = sizeof(void*),
+};
+
+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)];
+};
+
+*/
+import "C"
+
+// Machine characteristics; for internal use.
+
+const (
+       sizeofPtr      = C.sizeofPtr
+       sizeofShort    = C.sizeof_short
+       sizeofInt      = C.sizeof_int
+       sizeofLong     = C.sizeof_long
+       sizeofLongLong = C.sizeof_longlong
+)
+
+// Basic types
+
+type (
+       _C_short     C.short
+       _C_int       C.int
+       _C_long      C.long
+       _C_long_long C.longlong
+)
+
+// Time
+
+type Timespec C.struct_timespec
+
+type Timeval C.struct_timeval
+
+// Processes
+
+type Rusage C.struct_rusage
+
+type Rlimit C.struct_rlimit
+
+type _Gid_t C.gid_t
+
+// Files
+
+const ( // Directory mode bits
+       S_IFMT   = C.S_IFMT
+       S_IFIFO  = C.S_IFIFO
+       S_IFCHR  = C.S_IFCHR
+       S_IFDIR  = C.S_IFDIR
+       S_IFBLK  = C.S_IFBLK
+       S_IFREG  = C.S_IFREG
+       S_IFLNK  = C.S_IFLNK
+       S_IFSOCK = C.S_IFSOCK
+       S_ISUID  = C.S_ISUID
+       S_ISGID  = C.S_ISGID
+       S_ISVTX  = C.S_ISVTX
+       S_IRUSR  = C.S_IRUSR
+       S_IWUSR  = C.S_IWUSR
+       S_IXUSR  = C.S_IXUSR
+)
+
+type Stat_t C.struct_stat
+
+type Statfs_t C.struct_statfs
+
+type Flock_t C.struct_flock
+
+type Dirent C.struct_dirent
+
+type Fsid C.fsid_t
+
+// Sockets
+
+type RawSockaddrInet4 C.struct_sockaddr_in
+
+type RawSockaddrInet6 C.struct_sockaddr_in6
+
+type RawSockaddrUnix C.struct_sockaddr_un
+
+type RawSockaddrDatalink C.struct_sockaddr_dl
+
+type RawSockaddr C.struct_sockaddr
+
+type RawSockaddrAny C.struct_sockaddr_any
+
+type _Socklen C.socklen_t
+
+type Linger C.struct_linger
+
+type Iovec C.struct_iovec
+
+type IPMreq C.struct_ip_mreq
+
+type IPv6Mreq C.struct_ipv6_mreq
+
+type Msghdr C.struct_msghdr
+
+type Cmsghdr C.struct_cmsghdr
+
+type Inet6Pktinfo C.struct_in6_pktinfo
+
+type IPv6MTUInfo C.struct_ip6_mtuinfo
+
+type ICMPv6Filter C.struct_icmp6_filter
+
+const (
+       SizeofSockaddrInet4    = C.sizeof_struct_sockaddr_in
+       SizeofSockaddrInet6    = C.sizeof_struct_sockaddr_in6
+       SizeofSockaddrAny      = C.sizeof_struct_sockaddr_any
+       SizeofSockaddrUnix     = C.sizeof_struct_sockaddr_un
+       SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl
+       SizeofLinger           = C.sizeof_struct_linger
+       SizeofIPMreq           = C.sizeof_struct_ip_mreq
+       SizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq
+       SizeofMsghdr           = C.sizeof_struct_msghdr
+       SizeofCmsghdr          = C.sizeof_struct_cmsghdr
+       SizeofInet6Pktinfo     = C.sizeof_struct_in6_pktinfo
+       SizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo
+       SizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter
+)
+
+// Ptrace requests
+
+const (
+       PTRACE_TRACEME = C.PT_TRACE_ME
+       PTRACE_CONT    = C.PT_CONTINUE
+       PTRACE_KILL    = C.PT_KILL
+)
+
+// Events (kqueue, kevent)
+
+type Kevent_t C.struct_kevent
+
+// Select
+
+type FdSet C.fd_set
+
+// Routing and interface messages
+
+const (
+       SizeofIfMsghdr         = C.sizeof_struct_if_msghdr
+       SizeofIfData           = C.sizeof_struct_if_data
+       SizeofIfaMsghdr        = C.sizeof_struct_ifa_msghdr
+       SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr
+       SizeofRtMsghdr         = C.sizeof_struct_rt_msghdr
+       SizeofRtMetrics        = C.sizeof_struct_rt_metrics
+)
+
+type IfMsghdr C.struct_if_msghdr
+
+type IfData C.struct_if_data
+
+type IfaMsghdr C.struct_ifa_msghdr
+
+type IfAnnounceMsghdr C.struct_if_announcemsghdr
+
+type RtMsghdr C.struct_rt_msghdr
+
+type RtMetrics C.struct_rt_metrics
+
+type Mclpool C.struct_mclpool
+
+// Berkeley packet filter
+
+const (
+       SizeofBpfVersion = C.sizeof_struct_bpf_version
+       SizeofBpfStat    = C.sizeof_struct_bpf_stat
+       SizeofBpfProgram = C.sizeof_struct_bpf_program
+       SizeofBpfInsn    = C.sizeof_struct_bpf_insn
+       SizeofBpfHdr     = C.sizeof_struct_bpf_hdr
+)
+
+type BpfVersion C.struct_bpf_version
+
+type BpfStat C.struct_bpf_stat
+
+type BpfProgram C.struct_bpf_program
+
+type BpfInsn C.struct_bpf_insn
+
+type BpfHdr C.struct_bpf_hdr
+
+type BpfTimeval C.struct_bpf_timeval
+
+// Terminal handling
+
+type Termios C.struct_termios
diff --git a/vendor/golang.org/x/sys/unix/types_solaris.go b/vendor/golang.org/x/sys/unix/types_solaris.go
new file mode 100644 (file)
index 0000000..6ad50ea
--- /dev/null
@@ -0,0 +1,260 @@
+// 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.
+
+// +build ignore
+
+/*
+Input to cgo -godefs.  See also mkerrors.sh and mkall.sh
+*/
+
+// +godefs map struct_in_addr [4]byte /* in_addr */
+// +godefs map struct_in6_addr [16]byte /* in6_addr */
+
+package unix
+
+/*
+#define KERNEL
+// These defines ensure that builds done on newer versions of Solaris are
+// backwards-compatible with older versions of Solaris and
+// OpenSolaris-based derivatives.
+#define __USE_SUNOS_SOCKETS__          // msghdr
+#define __USE_LEGACY_PROTOTYPES__      // iovec
+#include <dirent.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <signal.h>
+#include <termios.h>
+#include <termio.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/mman.h>
+#include <sys/mount.h>
+#include <sys/param.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/times.h>
+#include <sys/types.h>
+#include <sys/utsname.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/icmp6.h>
+#include <netinet/tcp.h>
+#include <ustat.h>
+#include <utime.h>
+
+enum {
+       sizeofPtr = sizeof(void*),
+};
+
+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)];
+};
+
+*/
+import "C"
+
+// Machine characteristics; for internal use.
+
+const (
+       sizeofPtr      = C.sizeofPtr
+       sizeofShort    = C.sizeof_short
+       sizeofInt      = C.sizeof_int
+       sizeofLong     = C.sizeof_long
+       sizeofLongLong = C.sizeof_longlong
+       PathMax        = C.PATH_MAX
+)
+
+// Basic types
+
+type (
+       _C_short     C.short
+       _C_int       C.int
+       _C_long      C.long
+       _C_long_long C.longlong
+)
+
+// Time
+
+type Timespec C.struct_timespec
+
+type Timeval C.struct_timeval
+
+type Timeval32 C.struct_timeval32
+
+type Tms C.struct_tms
+
+type Utimbuf C.struct_utimbuf
+
+// Processes
+
+type Rusage C.struct_rusage
+
+type Rlimit C.struct_rlimit
+
+type _Gid_t C.gid_t
+
+// Files
+
+const ( // Directory mode bits
+       S_IFMT   = C.S_IFMT
+       S_IFIFO  = C.S_IFIFO
+       S_IFCHR  = C.S_IFCHR
+       S_IFDIR  = C.S_IFDIR
+       S_IFBLK  = C.S_IFBLK
+       S_IFREG  = C.S_IFREG
+       S_IFLNK  = C.S_IFLNK
+       S_IFSOCK = C.S_IFSOCK
+       S_ISUID  = C.S_ISUID
+       S_ISGID  = C.S_ISGID
+       S_ISVTX  = C.S_ISVTX
+       S_IRUSR  = C.S_IRUSR
+       S_IWUSR  = C.S_IWUSR
+       S_IXUSR  = C.S_IXUSR
+)
+
+type Stat_t C.struct_stat
+
+type Flock_t C.struct_flock
+
+type Dirent C.struct_dirent
+
+// Sockets
+
+type RawSockaddrInet4 C.struct_sockaddr_in
+
+type RawSockaddrInet6 C.struct_sockaddr_in6
+
+type RawSockaddrUnix C.struct_sockaddr_un
+
+type RawSockaddrDatalink C.struct_sockaddr_dl
+
+type RawSockaddr C.struct_sockaddr
+
+type RawSockaddrAny C.struct_sockaddr_any
+
+type _Socklen C.socklen_t
+
+type Linger C.struct_linger
+
+type Iovec C.struct_iovec
+
+type IPMreq C.struct_ip_mreq
+
+type IPv6Mreq C.struct_ipv6_mreq
+
+type Msghdr C.struct_msghdr
+
+type Cmsghdr C.struct_cmsghdr
+
+type Inet6Pktinfo C.struct_in6_pktinfo
+
+type IPv6MTUInfo C.struct_ip6_mtuinfo
+
+type ICMPv6Filter C.struct_icmp6_filter
+
+const (
+       SizeofSockaddrInet4    = C.sizeof_struct_sockaddr_in
+       SizeofSockaddrInet6    = C.sizeof_struct_sockaddr_in6
+       SizeofSockaddrAny      = C.sizeof_struct_sockaddr_any
+       SizeofSockaddrUnix     = C.sizeof_struct_sockaddr_un
+       SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl
+       SizeofLinger           = C.sizeof_struct_linger
+       SizeofIPMreq           = C.sizeof_struct_ip_mreq
+       SizeofIPv6Mreq         = C.sizeof_struct_ipv6_mreq
+       SizeofMsghdr           = C.sizeof_struct_msghdr
+       SizeofCmsghdr          = C.sizeof_struct_cmsghdr
+       SizeofInet6Pktinfo     = C.sizeof_struct_in6_pktinfo
+       SizeofIPv6MTUInfo      = C.sizeof_struct_ip6_mtuinfo
+       SizeofICMPv6Filter     = C.sizeof_struct_icmp6_filter
+)
+
+// Select
+
+type FdSet C.fd_set
+
+// Misc
+
+type Utsname C.struct_utsname
+
+type Ustat_t C.struct_ustat
+
+const (
+       AT_FDCWD            = C.AT_FDCWD
+       AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW
+       AT_SYMLINK_FOLLOW   = C.AT_SYMLINK_FOLLOW
+       AT_REMOVEDIR        = C.AT_REMOVEDIR
+       AT_EACCESS          = C.AT_EACCESS
+)
+
+// Routing and interface messages
+
+const (
+       SizeofIfMsghdr  = C.sizeof_struct_if_msghdr
+       SizeofIfData    = C.sizeof_struct_if_data
+       SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr
+       SizeofRtMsghdr  = C.sizeof_struct_rt_msghdr
+       SizeofRtMetrics = C.sizeof_struct_rt_metrics
+)
+
+type IfMsghdr C.struct_if_msghdr
+
+type IfData C.struct_if_data
+
+type IfaMsghdr C.struct_ifa_msghdr
+
+type RtMsghdr C.struct_rt_msghdr
+
+type RtMetrics C.struct_rt_metrics
+
+// Berkeley packet filter
+
+const (
+       SizeofBpfVersion = C.sizeof_struct_bpf_version
+       SizeofBpfStat    = C.sizeof_struct_bpf_stat
+       SizeofBpfProgram = C.sizeof_struct_bpf_program
+       SizeofBpfInsn    = C.sizeof_struct_bpf_insn
+       SizeofBpfHdr     = C.sizeof_struct_bpf_hdr
+)
+
+type BpfVersion C.struct_bpf_version
+
+type BpfStat C.struct_bpf_stat
+
+type BpfProgram C.struct_bpf_program
+
+type BpfInsn C.struct_bpf_insn
+
+type BpfTimeval C.struct_bpf_timeval
+
+type BpfHdr C.struct_bpf_hdr
+
+// sysconf information
+
+const _SC_PAGESIZE = C._SC_PAGESIZE
+
+// Terminal handling
+
+type Termios C.struct_termios
+
+type Termio C.struct_termio
+
+type Winsize C.struct_winsize
diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go
new file mode 100644 (file)
index 0000000..8e63888
--- /dev/null
@@ -0,0 +1,1576 @@
+// mkerrors.sh -m32
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build 386,darwin
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m32 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+       AF_APPLETALK                      = 0x10
+       AF_CCITT                          = 0xa
+       AF_CHAOS                          = 0x5
+       AF_CNT                            = 0x15
+       AF_COIP                           = 0x14
+       AF_DATAKIT                        = 0x9
+       AF_DECnet                         = 0xc
+       AF_DLI                            = 0xd
+       AF_E164                           = 0x1c
+       AF_ECMA                           = 0x8
+       AF_HYLINK                         = 0xf
+       AF_IEEE80211                      = 0x25
+       AF_IMPLINK                        = 0x3
+       AF_INET                           = 0x2
+       AF_INET6                          = 0x1e
+       AF_IPX                            = 0x17
+       AF_ISDN                           = 0x1c
+       AF_ISO                            = 0x7
+       AF_LAT                            = 0xe
+       AF_LINK                           = 0x12
+       AF_LOCAL                          = 0x1
+       AF_MAX                            = 0x28
+       AF_NATM                           = 0x1f
+       AF_NDRV                           = 0x1b
+       AF_NETBIOS                        = 0x21
+       AF_NS                             = 0x6
+       AF_OSI                            = 0x7
+       AF_PPP                            = 0x22
+       AF_PUP                            = 0x4
+       AF_RESERVED_36                    = 0x24
+       AF_ROUTE                          = 0x11
+       AF_SIP                            = 0x18
+       AF_SNA                            = 0xb
+       AF_SYSTEM                         = 0x20
+       AF_UNIX                           = 0x1
+       AF_UNSPEC                         = 0x0
+       AF_UTUN                           = 0x26
+       B0                                = 0x0
+       B110                              = 0x6e
+       B115200                           = 0x1c200
+       B1200                             = 0x4b0
+       B134                              = 0x86
+       B14400                            = 0x3840
+       B150                              = 0x96
+       B1800                             = 0x708
+       B19200                            = 0x4b00
+       B200                              = 0xc8
+       B230400                           = 0x38400
+       B2400                             = 0x960
+       B28800                            = 0x7080
+       B300                              = 0x12c
+       B38400                            = 0x9600
+       B4800                             = 0x12c0
+       B50                               = 0x32
+       B57600                            = 0xe100
+       B600                              = 0x258
+       B7200                             = 0x1c20
+       B75                               = 0x4b
+       B76800                            = 0x12c00
+       B9600                             = 0x2580
+       BIOCFLUSH                         = 0x20004268
+       BIOCGBLEN                         = 0x40044266
+       BIOCGDLT                          = 0x4004426a
+       BIOCGDLTLIST                      = 0xc00c4279
+       BIOCGETIF                         = 0x4020426b
+       BIOCGHDRCMPLT                     = 0x40044274
+       BIOCGRSIG                         = 0x40044272
+       BIOCGRTIMEOUT                     = 0x4008426e
+       BIOCGSEESENT                      = 0x40044276
+       BIOCGSTATS                        = 0x4008426f
+       BIOCIMMEDIATE                     = 0x80044270
+       BIOCPROMISC                       = 0x20004269
+       BIOCSBLEN                         = 0xc0044266
+       BIOCSDLT                          = 0x80044278
+       BIOCSETF                          = 0x80084267
+       BIOCSETFNR                        = 0x8008427e
+       BIOCSETIF                         = 0x8020426c
+       BIOCSHDRCMPLT                     = 0x80044275
+       BIOCSRSIG                         = 0x80044273
+       BIOCSRTIMEOUT                     = 0x8008426d
+       BIOCSSEESENT                      = 0x80044277
+       BIOCVERSION                       = 0x40044271
+       BPF_A                             = 0x10
+       BPF_ABS                           = 0x20
+       BPF_ADD                           = 0x0
+       BPF_ALIGNMENT                     = 0x4
+       BPF_ALU                           = 0x4
+       BPF_AND                           = 0x50
+       BPF_B                             = 0x10
+       BPF_DIV                           = 0x30
+       BPF_H                             = 0x8
+       BPF_IMM                           = 0x0
+       BPF_IND                           = 0x40
+       BPF_JA                            = 0x0
+       BPF_JEQ                           = 0x10
+       BPF_JGE                           = 0x30
+       BPF_JGT                           = 0x20
+       BPF_JMP                           = 0x5
+       BPF_JSET                          = 0x40
+       BPF_K                             = 0x0
+       BPF_LD                            = 0x0
+       BPF_LDX                           = 0x1
+       BPF_LEN                           = 0x80
+       BPF_LSH                           = 0x60
+       BPF_MAJOR_VERSION                 = 0x1
+       BPF_MAXBUFSIZE                    = 0x80000
+       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                           = 0x0
+       BPF_TXA                           = 0x80
+       BPF_W                             = 0x0
+       BPF_X                             = 0x8
+       BRKINT                            = 0x2
+       CFLUSH                            = 0xf
+       CLOCAL                            = 0x8000
+       CREAD                             = 0x800
+       CS5                               = 0x0
+       CS6                               = 0x100
+       CS7                               = 0x200
+       CS8                               = 0x300
+       CSIZE                             = 0x300
+       CSTART                            = 0x11
+       CSTATUS                           = 0x14
+       CSTOP                             = 0x13
+       CSTOPB                            = 0x400
+       CSUSP                             = 0x1a
+       CTL_MAXNAME                       = 0xc
+       CTL_NET                           = 0x4
+       DLT_A429                          = 0xb8
+       DLT_A653_ICM                      = 0xb9
+       DLT_AIRONET_HEADER                = 0x78
+       DLT_AOS                           = 0xde
+       DLT_APPLE_IP_OVER_IEEE1394        = 0x8a
+       DLT_ARCNET                        = 0x7
+       DLT_ARCNET_LINUX                  = 0x81
+       DLT_ATM_CLIP                      = 0x13
+       DLT_ATM_RFC1483                   = 0xb
+       DLT_AURORA                        = 0x7e
+       DLT_AX25                          = 0x3
+       DLT_AX25_KISS                     = 0xca
+       DLT_BACNET_MS_TP                  = 0xa5
+       DLT_BLUETOOTH_HCI_H4              = 0xbb
+       DLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9
+       DLT_CAN20B                        = 0xbe
+       DLT_CAN_SOCKETCAN                 = 0xe3
+       DLT_CHAOS                         = 0x5
+       DLT_CHDLC                         = 0x68
+       DLT_CISCO_IOS                     = 0x76
+       DLT_C_HDLC                        = 0x68
+       DLT_C_HDLC_WITH_DIR               = 0xcd
+       DLT_DBUS                          = 0xe7
+       DLT_DECT                          = 0xdd
+       DLT_DOCSIS                        = 0x8f
+       DLT_DVB_CI                        = 0xeb
+       DLT_ECONET                        = 0x73
+       DLT_EN10MB                        = 0x1
+       DLT_EN3MB                         = 0x2
+       DLT_ENC                           = 0x6d
+       DLT_ERF                           = 0xc5
+       DLT_ERF_ETH                       = 0xaf
+       DLT_ERF_POS                       = 0xb0
+       DLT_FC_2                          = 0xe0
+       DLT_FC_2_WITH_FRAME_DELIMS        = 0xe1
+       DLT_FDDI                          = 0xa
+       DLT_FLEXRAY                       = 0xd2
+       DLT_FRELAY                        = 0x6b
+       DLT_FRELAY_WITH_DIR               = 0xce
+       DLT_GCOM_SERIAL                   = 0xad
+       DLT_GCOM_T1E1                     = 0xac
+       DLT_GPF_F                         = 0xab
+       DLT_GPF_T                         = 0xaa
+       DLT_GPRS_LLC                      = 0xa9
+       DLT_GSMTAP_ABIS                   = 0xda
+       DLT_GSMTAP_UM                     = 0xd9
+       DLT_HHDLC                         = 0x79
+       DLT_IBM_SN                        = 0x92
+       DLT_IBM_SP                        = 0x91
+       DLT_IEEE802                       = 0x6
+       DLT_IEEE802_11                    = 0x69
+       DLT_IEEE802_11_RADIO              = 0x7f
+       DLT_IEEE802_11_RADIO_AVS          = 0xa3
+       DLT_IEEE802_15_4                  = 0xc3
+       DLT_IEEE802_15_4_LINUX            = 0xbf
+       DLT_IEEE802_15_4_NOFCS            = 0xe6
+       DLT_IEEE802_15_4_NONASK_PHY       = 0xd7
+       DLT_IEEE802_16_MAC_CPS            = 0xbc
+       DLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1
+       DLT_IPFILTER                      = 0x74
+       DLT_IPMB                          = 0xc7
+       DLT_IPMB_LINUX                    = 0xd1
+       DLT_IPNET                         = 0xe2
+       DLT_IPOIB                         = 0xf2
+       DLT_IPV4                          = 0xe4
+       DLT_IPV6                          = 0xe5
+       DLT_IP_OVER_FC                    = 0x7a
+       DLT_JUNIPER_ATM1                  = 0x89
+       DLT_JUNIPER_ATM2                  = 0x87
+       DLT_JUNIPER_ATM_CEMIC             = 0xee
+       DLT_JUNIPER_CHDLC                 = 0xb5
+       DLT_JUNIPER_ES                    = 0x84
+       DLT_JUNIPER_ETHER                 = 0xb2
+       DLT_JUNIPER_FIBRECHANNEL          = 0xea
+       DLT_JUNIPER_FRELAY                = 0xb4
+       DLT_JUNIPER_GGSN                  = 0x85
+       DLT_JUNIPER_ISM                   = 0xc2
+       DLT_JUNIPER_MFR                   = 0x86
+       DLT_JUNIPER_MLFR                  = 0x83
+       DLT_JUNIPER_MLPPP                 = 0x82
+       DLT_JUNIPER_MONITOR               = 0xa4
+       DLT_JUNIPER_PIC_PEER              = 0xae
+       DLT_JUNIPER_PPP                   = 0xb3
+       DLT_JUNIPER_PPPOE                 = 0xa7
+       DLT_JUNIPER_PPPOE_ATM             = 0xa8
+       DLT_JUNIPER_SERVICES              = 0x88
+       DLT_JUNIPER_SRX_E2E               = 0xe9
+       DLT_JUNIPER_ST                    = 0xc8
+       DLT_JUNIPER_VP                    = 0xb7
+       DLT_JUNIPER_VS                    = 0xe8
+       DLT_LAPB_WITH_DIR                 = 0xcf
+       DLT_LAPD                          = 0xcb
+       DLT_LIN                           = 0xd4
+       DLT_LINUX_EVDEV                   = 0xd8
+       DLT_LINUX_IRDA                    = 0x90
+       DLT_LINUX_LAPD                    = 0xb1
+       DLT_LINUX_PPP_WITHDIRECTION       = 0xa6
+       DLT_LINUX_SLL                     = 0x71
+       DLT_LOOP                          = 0x6c
+       DLT_LTALK                         = 0x72
+       DLT_MATCHING_MAX                  = 0xf5
+       DLT_MATCHING_MIN                  = 0x68
+       DLT_MFR                           = 0xb6
+       DLT_MOST                          = 0xd3
+       DLT_MPEG_2_TS                     = 0xf3
+       DLT_MPLS                          = 0xdb
+       DLT_MTP2                          = 0x8c
+       DLT_MTP2_WITH_PHDR                = 0x8b
+       DLT_MTP3                          = 0x8d
+       DLT_MUX27010                      = 0xec
+       DLT_NETANALYZER                   = 0xf0
+       DLT_NETANALYZER_TRANSPARENT       = 0xf1
+       DLT_NFC_LLCP                      = 0xf5
+       DLT_NFLOG                         = 0xef
+       DLT_NG40                          = 0xf4
+       DLT_NULL                          = 0x0
+       DLT_PCI_EXP                       = 0x7d
+       DLT_PFLOG                         = 0x75
+       DLT_PFSYNC                        = 0x12
+       DLT_PPI                           = 0xc0
+       DLT_PPP                           = 0x9
+       DLT_PPP_BSDOS                     = 0x10
+       DLT_PPP_ETHER                     = 0x33
+       DLT_PPP_PPPD                      = 0xa6
+       DLT_PPP_SERIAL                    = 0x32
+       DLT_PPP_WITH_DIR                  = 0xcc
+       DLT_PPP_WITH_DIRECTION            = 0xa6
+       DLT_PRISM_HEADER                  = 0x77
+       DLT_PRONET                        = 0x4
+       DLT_RAIF1                         = 0xc6
+       DLT_RAW                           = 0xc
+       DLT_RIO                           = 0x7c
+       DLT_SCCP                          = 0x8e
+       DLT_SITA                          = 0xc4
+       DLT_SLIP                          = 0x8
+       DLT_SLIP_BSDOS                    = 0xf
+       DLT_STANAG_5066_D_PDU             = 0xed
+       DLT_SUNATM                        = 0x7b
+       DLT_SYMANTEC_FIREWALL             = 0x63
+       DLT_TZSP                          = 0x80
+       DLT_USB                           = 0xba
+       DLT_USB_LINUX                     = 0xbd
+       DLT_USB_LINUX_MMAPPED             = 0xdc
+       DLT_USER0                         = 0x93
+       DLT_USER1                         = 0x94
+       DLT_USER10                        = 0x9d
+       DLT_USER11                        = 0x9e
+       DLT_USER12                        = 0x9f
+       DLT_USER13                        = 0xa0
+       DLT_USER14                        = 0xa1
+       DLT_USER15                        = 0xa2
+       DLT_USER2                         = 0x95
+       DLT_USER3                         = 0x96
+       DLT_USER4                         = 0x97
+       DLT_USER5                         = 0x98
+       DLT_USER6                         = 0x99
+       DLT_USER7                         = 0x9a
+       DLT_USER8                         = 0x9b
+       DLT_USER9                         = 0x9c
+       DLT_WIHART                        = 0xdf
+       DLT_X2E_SERIAL                    = 0xd5
+       DLT_X2E_XORAYA                    = 0xd6
+       DT_BLK                            = 0x6
+       DT_CHR                            = 0x2
+       DT_DIR                            = 0x4
+       DT_FIFO                           = 0x1
+       DT_LNK                            = 0xa
+       DT_REG                            = 0x8
+       DT_SOCK                           = 0xc
+       DT_UNKNOWN                        = 0x0
+       DT_WHT                            = 0xe
+       ECHO                              = 0x8
+       ECHOCTL                           = 0x40
+       ECHOE                             = 0x2
+       ECHOK                             = 0x4
+       ECHOKE                            = 0x1
+       ECHONL                            = 0x10
+       ECHOPRT                           = 0x20
+       EVFILT_AIO                        = -0x3
+       EVFILT_FS                         = -0x9
+       EVFILT_MACHPORT                   = -0x8
+       EVFILT_PROC                       = -0x5
+       EVFILT_READ                       = -0x1
+       EVFILT_SIGNAL                     = -0x6
+       EVFILT_SYSCOUNT                   = 0xe
+       EVFILT_THREADMARKER               = 0xe
+       EVFILT_TIMER                      = -0x7
+       EVFILT_USER                       = -0xa
+       EVFILT_VM                         = -0xc
+       EVFILT_VNODE                      = -0x4
+       EVFILT_WRITE                      = -0x2
+       EV_ADD                            = 0x1
+       EV_CLEAR                          = 0x20
+       EV_DELETE                         = 0x2
+       EV_DISABLE                        = 0x8
+       EV_DISPATCH                       = 0x80
+       EV_ENABLE                         = 0x4
+       EV_EOF                            = 0x8000
+       EV_ERROR                          = 0x4000
+       EV_FLAG0                          = 0x1000
+       EV_FLAG1                          = 0x2000
+       EV_ONESHOT                        = 0x10
+       EV_OOBAND                         = 0x2000
+       EV_POLL                           = 0x1000
+       EV_RECEIPT                        = 0x40
+       EV_SYSFLAGS                       = 0xf000
+       EXTA                              = 0x4b00
+       EXTB                              = 0x9600
+       EXTPROC                           = 0x800
+       FD_CLOEXEC                        = 0x1
+       FD_SETSIZE                        = 0x400
+       FLUSHO                            = 0x800000
+       F_ADDFILESIGS                     = 0x3d
+       F_ADDSIGS                         = 0x3b
+       F_ALLOCATEALL                     = 0x4
+       F_ALLOCATECONTIG                  = 0x2
+       F_CHKCLEAN                        = 0x29
+       F_DUPFD                           = 0x0
+       F_DUPFD_CLOEXEC                   = 0x43
+       F_FINDSIGS                        = 0x4e
+       F_FLUSH_DATA                      = 0x28
+       F_FREEZE_FS                       = 0x35
+       F_FULLFSYNC                       = 0x33
+       F_GETCODEDIR                      = 0x48
+       F_GETFD                           = 0x1
+       F_GETFL                           = 0x3
+       F_GETLK                           = 0x7
+       F_GETLKPID                        = 0x42
+       F_GETNOSIGPIPE                    = 0x4a
+       F_GETOWN                          = 0x5
+       F_GETPATH                         = 0x32
+       F_GETPATH_MTMINFO                 = 0x47
+       F_GETPROTECTIONCLASS              = 0x3f
+       F_GETPROTECTIONLEVEL              = 0x4d
+       F_GLOBAL_NOCACHE                  = 0x37
+       F_LOG2PHYS                        = 0x31
+       F_LOG2PHYS_EXT                    = 0x41
+       F_NOCACHE                         = 0x30
+       F_NODIRECT                        = 0x3e
+       F_OK                              = 0x0
+       F_PATHPKG_CHECK                   = 0x34
+       F_PEOFPOSMODE                     = 0x3
+       F_PREALLOCATE                     = 0x2a
+       F_RDADVISE                        = 0x2c
+       F_RDAHEAD                         = 0x2d
+       F_RDLCK                           = 0x1
+       F_SETBACKINGSTORE                 = 0x46
+       F_SETFD                           = 0x2
+       F_SETFL                           = 0x4
+       F_SETLK                           = 0x8
+       F_SETLKW                          = 0x9
+       F_SETLKWTIMEOUT                   = 0xa
+       F_SETNOSIGPIPE                    = 0x49
+       F_SETOWN                          = 0x6
+       F_SETPROTECTIONCLASS              = 0x40
+       F_SETSIZE                         = 0x2b
+       F_SINGLE_WRITER                   = 0x4c
+       F_THAW_FS                         = 0x36
+       F_TRANSCODEKEY                    = 0x4b
+       F_UNLCK                           = 0x2
+       F_VOLPOSMODE                      = 0x4
+       F_WRLCK                           = 0x3
+       HUPCL                             = 0x4000
+       ICANON                            = 0x100
+       ICMP6_FILTER                      = 0x12
+       ICRNL                             = 0x100
+       IEXTEN                            = 0x400
+       IFF_ALLMULTI                      = 0x200
+       IFF_ALTPHYS                       = 0x4000
+       IFF_BROADCAST                     = 0x2
+       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_AAL5                          = 0x31
+       IFT_ARCNET                        = 0x23
+       IFT_ARCNETPLUS                    = 0x24
+       IFT_ATM                           = 0x25
+       IFT_BRIDGE                        = 0xd1
+       IFT_CARP                          = 0xf8
+       IFT_CELLULAR                      = 0xff
+       IFT_CEPT                          = 0x13
+       IFT_DS3                           = 0x1e
+       IFT_ENC                           = 0xf4
+       IFT_EON                           = 0x19
+       IFT_ETHER                         = 0x6
+       IFT_FAITH                         = 0x38
+       IFT_FDDI                          = 0xf
+       IFT_FRELAY                        = 0x20
+       IFT_FRELAYDCE                     = 0x2c
+       IFT_GIF                           = 0x37
+       IFT_HDH1822                       = 0x3
+       IFT_HIPPI                         = 0x2f
+       IFT_HSSI                          = 0x2e
+       IFT_HY                            = 0xe
+       IFT_IEEE1394                      = 0x90
+       IFT_IEEE8023ADLAG                 = 0x88
+       IFT_ISDNBASIC                     = 0x14
+       IFT_ISDNPRIMARY                   = 0x15
+       IFT_ISO88022LLC                   = 0x29
+       IFT_ISO88023                      = 0x7
+       IFT_ISO88024                      = 0x8
+       IFT_ISO88025                      = 0x9
+       IFT_ISO88026                      = 0xa
+       IFT_L2VLAN                        = 0x87
+       IFT_LAPB                          = 0x10
+       IFT_LOCALTALK                     = 0x2a
+       IFT_LOOP                          = 0x18
+       IFT_MIOX25                        = 0x26
+       IFT_MODEM                         = 0x30
+       IFT_NSIP                          = 0x1b
+       IFT_OTHER                         = 0x1
+       IFT_P10                           = 0xc
+       IFT_P80                           = 0xd
+       IFT_PARA                          = 0x22
+       IFT_PDP                           = 0xff
+       IFT_PFLOG                         = 0xf5
+       IFT_PFSYNC                        = 0xf6
+       IFT_PKTAP                         = 0xfe
+       IFT_PPP                           = 0x17
+       IFT_PROPMUX                       = 0x36
+       IFT_PROPVIRTUAL                   = 0x35
+       IFT_PTPSERIAL                     = 0x16
+       IFT_RS232                         = 0x21
+       IFT_SDLC                          = 0x11
+       IFT_SIP                           = 0x1f
+       IFT_SLIP                          = 0x1c
+       IFT_SMDSDXI                       = 0x2b
+       IFT_SMDSICIP                      = 0x34
+       IFT_SONET                         = 0x27
+       IFT_SONETPATH                     = 0x32
+       IFT_SONETVT                       = 0x33
+       IFT_STARLAN                       = 0xb
+       IFT_STF                           = 0x39
+       IFT_T1                            = 0x12
+       IFT_ULTRA                         = 0x1d
+       IFT_V35                           = 0x2d
+       IFT_X25                           = 0x5
+       IFT_X25DDN                        = 0x4
+       IFT_X25PLE                        = 0x28
+       IFT_XETHER                        = 0x1a
+       IGNBRK                            = 0x1
+       IGNCR                             = 0x80
+       IGNPAR                            = 0x4
+       IMAXBEL                           = 0x2000
+       INLCR                             = 0x40
+       INPCK                             = 0x10
+       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_LINKLOCALNETNUM                = 0xa9fe0000
+       IN_LOOPBACKNET                    = 0x7f
+       IPPROTO_3PC                       = 0x22
+       IPPROTO_ADFS                      = 0x44
+       IPPROTO_AH                        = 0x33
+       IPPROTO_AHIP                      = 0x3d
+       IPPROTO_APES                      = 0x63
+       IPPROTO_ARGUS                     = 0xd
+       IPPROTO_AX25                      = 0x5d
+       IPPROTO_BHA                       = 0x31
+       IPPROTO_BLT                       = 0x1e
+       IPPROTO_BRSATMON                  = 0x4c
+       IPPROTO_CFTP                      = 0x3e
+       IPPROTO_CHAOS                     = 0x10
+       IPPROTO_CMTP                      = 0x26
+       IPPROTO_CPHB                      = 0x49
+       IPPROTO_CPNX                      = 0x48
+       IPPROTO_DDP                       = 0x25
+       IPPROTO_DGP                       = 0x56
+       IPPROTO_DIVERT                    = 0xfe
+       IPPROTO_DONE                      = 0x101
+       IPPROTO_DSTOPTS                   = 0x3c
+       IPPROTO_EGP                       = 0x8
+       IPPROTO_EMCON                     = 0xe
+       IPPROTO_ENCAP                     = 0x62
+       IPPROTO_EON                       = 0x50
+       IPPROTO_ESP                       = 0x32
+       IPPROTO_ETHERIP                   = 0x61
+       IPPROTO_FRAGMENT                  = 0x2c
+       IPPROTO_GGP                       = 0x3
+       IPPROTO_GMTP                      = 0x64
+       IPPROTO_GRE                       = 0x2f
+       IPPROTO_HELLO                     = 0x3f
+       IPPROTO_HMP                       = 0x14
+       IPPROTO_HOPOPTS                   = 0x0
+       IPPROTO_ICMP                      = 0x1
+       IPPROTO_ICMPV6                    = 0x3a
+       IPPROTO_IDP                       = 0x16
+       IPPROTO_IDPR                      = 0x23
+       IPPROTO_IDRP                      = 0x2d
+       IPPROTO_IGMP                      = 0x2
+       IPPROTO_IGP                       = 0x55
+       IPPROTO_IGRP                      = 0x58
+       IPPROTO_IL                        = 0x28
+       IPPROTO_INLSP                     = 0x34
+       IPPROTO_INP                       = 0x20
+       IPPROTO_IP                        = 0x0
+       IPPROTO_IPCOMP                    = 0x6c
+       IPPROTO_IPCV                      = 0x47
+       IPPROTO_IPEIP                     = 0x5e
+       IPPROTO_IPIP                      = 0x4
+       IPPROTO_IPPC                      = 0x43
+       IPPROTO_IPV4                      = 0x4
+       IPPROTO_IPV6                      = 0x29
+       IPPROTO_IRTP                      = 0x1c
+       IPPROTO_KRYPTOLAN                 = 0x41
+       IPPROTO_LARP                      = 0x5b
+       IPPROTO_LEAF1                     = 0x19
+       IPPROTO_LEAF2                     = 0x1a
+       IPPROTO_MAX                       = 0x100
+       IPPROTO_MAXID                     = 0x34
+       IPPROTO_MEAS                      = 0x13
+       IPPROTO_MHRP                      = 0x30
+       IPPROTO_MICP                      = 0x5f
+       IPPROTO_MTP                       = 0x5c
+       IPPROTO_MUX                       = 0x12
+       IPPROTO_ND                        = 0x4d
+       IPPROTO_NHRP                      = 0x36
+       IPPROTO_NONE                      = 0x3b
+       IPPROTO_NSP                       = 0x1f
+       IPPROTO_NVPII                     = 0xb
+       IPPROTO_OSPFIGP                   = 0x59
+       IPPROTO_PGM                       = 0x71
+       IPPROTO_PIGP                      = 0x9
+       IPPROTO_PIM                       = 0x67
+       IPPROTO_PRM                       = 0x15
+       IPPROTO_PUP                       = 0xc
+       IPPROTO_PVP                       = 0x4b
+       IPPROTO_RAW                       = 0xff
+       IPPROTO_RCCMON                    = 0xa
+       IPPROTO_RDP                       = 0x1b
+       IPPROTO_ROUTING                   = 0x2b
+       IPPROTO_RSVP                      = 0x2e
+       IPPROTO_RVD                       = 0x42
+       IPPROTO_SATEXPAK                  = 0x40
+       IPPROTO_SATMON                    = 0x45
+       IPPROTO_SCCSP                     = 0x60
+       IPPROTO_SCTP                      = 0x84
+       IPPROTO_SDRP                      = 0x2a
+       IPPROTO_SEP                       = 0x21
+       IPPROTO_SRPC                      = 0x5a
+       IPPROTO_ST                        = 0x7
+       IPPROTO_SVMTP                     = 0x52
+       IPPROTO_SWIPE                     = 0x35
+       IPPROTO_TCF                       = 0x57
+       IPPROTO_TCP                       = 0x6
+       IPPROTO_TP                        = 0x1d
+       IPPROTO_TPXX                      = 0x27
+       IPPROTO_TRUNK1                    = 0x17
+       IPPROTO_TRUNK2                    = 0x18
+       IPPROTO_TTP                       = 0x54
+       IPPROTO_UDP                       = 0x11
+       IPPROTO_VINES                     = 0x53
+       IPPROTO_VISA                      = 0x46
+       IPPROTO_VMTP                      = 0x51
+       IPPROTO_WBEXPAK                   = 0x4f
+       IPPROTO_WBMON                     = 0x4e
+       IPPROTO_WSN                       = 0x4a
+       IPPROTO_XNET                      = 0xf
+       IPPROTO_XTP                       = 0x24
+       IPV6_2292DSTOPTS                  = 0x17
+       IPV6_2292HOPLIMIT                 = 0x14
+       IPV6_2292HOPOPTS                  = 0x16
+       IPV6_2292NEXTHOP                  = 0x15
+       IPV6_2292PKTINFO                  = 0x13
+       IPV6_2292PKTOPTIONS               = 0x19
+       IPV6_2292RTHDR                    = 0x18
+       IPV6_BINDV6ONLY                   = 0x1b
+       IPV6_BOUND_IF                     = 0x7d
+       IPV6_CHECKSUM                     = 0x1a
+       IPV6_DEFAULT_MULTICAST_HOPS       = 0x1
+       IPV6_DEFAULT_MULTICAST_LOOP       = 0x1
+       IPV6_DEFHLIM                      = 0x40
+       IPV6_FAITH                        = 0x1d
+       IPV6_FLOWINFO_MASK                = 0xffffff0f
+       IPV6_FLOWLABEL_MASK               = 0xffff0f00
+       IPV6_FRAGTTL                      = 0x3c
+       IPV6_FW_ADD                       = 0x1e
+       IPV6_FW_DEL                       = 0x1f
+       IPV6_FW_FLUSH                     = 0x20
+       IPV6_FW_GET                       = 0x22
+       IPV6_FW_ZERO                      = 0x21
+       IPV6_HLIMDEC                      = 0x1
+       IPV6_IPSEC_POLICY                 = 0x1c
+       IPV6_JOIN_GROUP                   = 0xc
+       IPV6_LEAVE_GROUP                  = 0xd
+       IPV6_MAXHLIM                      = 0xff
+       IPV6_MAXOPTHDR                    = 0x800
+       IPV6_MAXPACKET                    = 0xffff
+       IPV6_MAX_GROUP_SRC_FILTER         = 0x200
+       IPV6_MAX_MEMBERSHIPS              = 0xfff
+       IPV6_MAX_SOCK_SRC_FILTER          = 0x80
+       IPV6_MIN_MEMBERSHIPS              = 0x1f
+       IPV6_MMTU                         = 0x500
+       IPV6_MULTICAST_HOPS               = 0xa
+       IPV6_MULTICAST_IF                 = 0x9
+       IPV6_MULTICAST_LOOP               = 0xb
+       IPV6_PORTRANGE                    = 0xe
+       IPV6_PORTRANGE_DEFAULT            = 0x0
+       IPV6_PORTRANGE_HIGH               = 0x1
+       IPV6_PORTRANGE_LOW                = 0x2
+       IPV6_RECVTCLASS                   = 0x23
+       IPV6_RTHDR_LOOSE                  = 0x0
+       IPV6_RTHDR_STRICT                 = 0x1
+       IPV6_RTHDR_TYPE_0                 = 0x0
+       IPV6_SOCKOPT_RESERVED1            = 0x3
+       IPV6_TCLASS                       = 0x24
+       IPV6_UNICAST_HOPS                 = 0x4
+       IPV6_V6ONLY                       = 0x1b
+       IPV6_VERSION                      = 0x60
+       IPV6_VERSION_MASK                 = 0xf0
+       IP_ADD_MEMBERSHIP                 = 0xc
+       IP_ADD_SOURCE_MEMBERSHIP          = 0x46
+       IP_BLOCK_SOURCE                   = 0x48
+       IP_BOUND_IF                       = 0x19
+       IP_DEFAULT_MULTICAST_LOOP         = 0x1
+       IP_DEFAULT_MULTICAST_TTL          = 0x1
+       IP_DF                             = 0x4000
+       IP_DROP_MEMBERSHIP                = 0xd
+       IP_DROP_SOURCE_MEMBERSHIP         = 0x47
+       IP_DUMMYNET_CONFIGURE             = 0x3c
+       IP_DUMMYNET_DEL                   = 0x3d
+       IP_DUMMYNET_FLUSH                 = 0x3e
+       IP_DUMMYNET_GET                   = 0x40
+       IP_FAITH                          = 0x16
+       IP_FW_ADD                         = 0x28
+       IP_FW_DEL                         = 0x29
+       IP_FW_FLUSH                       = 0x2a
+       IP_FW_GET                         = 0x2c
+       IP_FW_RESETLOG                    = 0x2d
+       IP_FW_ZERO                        = 0x2b
+       IP_HDRINCL                        = 0x2
+       IP_IPSEC_POLICY                   = 0x15
+       IP_MAXPACKET                      = 0xffff
+       IP_MAX_GROUP_SRC_FILTER           = 0x200
+       IP_MAX_MEMBERSHIPS                = 0xfff
+       IP_MAX_SOCK_MUTE_FILTER           = 0x80
+       IP_MAX_SOCK_SRC_FILTER            = 0x80
+       IP_MF                             = 0x2000
+       IP_MIN_MEMBERSHIPS                = 0x1f
+       IP_MSFILTER                       = 0x4a
+       IP_MSS                            = 0x240
+       IP_MULTICAST_IF                   = 0x9
+       IP_MULTICAST_IFINDEX              = 0x42
+       IP_MULTICAST_LOOP                 = 0xb
+       IP_MULTICAST_TTL                  = 0xa
+       IP_MULTICAST_VIF                  = 0xe
+       IP_NAT__XXX                       = 0x37
+       IP_OFFMASK                        = 0x1fff
+       IP_OLD_FW_ADD                     = 0x32
+       IP_OLD_FW_DEL                     = 0x33
+       IP_OLD_FW_FLUSH                   = 0x34
+       IP_OLD_FW_GET                     = 0x36
+       IP_OLD_FW_RESETLOG                = 0x38
+       IP_OLD_FW_ZERO                    = 0x35
+       IP_OPTIONS                        = 0x1
+       IP_PKTINFO                        = 0x1a
+       IP_PORTRANGE                      = 0x13
+       IP_PORTRANGE_DEFAULT              = 0x0
+       IP_PORTRANGE_HIGH                 = 0x1
+       IP_PORTRANGE_LOW                  = 0x2
+       IP_RECVDSTADDR                    = 0x7
+       IP_RECVIF                         = 0x14
+       IP_RECVOPTS                       = 0x5
+       IP_RECVPKTINFO                    = 0x1a
+       IP_RECVRETOPTS                    = 0x6
+       IP_RECVTTL                        = 0x18
+       IP_RETOPTS                        = 0x8
+       IP_RF                             = 0x8000
+       IP_RSVP_OFF                       = 0x10
+       IP_RSVP_ON                        = 0xf
+       IP_RSVP_VIF_OFF                   = 0x12
+       IP_RSVP_VIF_ON                    = 0x11
+       IP_STRIPHDR                       = 0x17
+       IP_TOS                            = 0x3
+       IP_TRAFFIC_MGT_BACKGROUND         = 0x41
+       IP_TTL                            = 0x4
+       IP_UNBLOCK_SOURCE                 = 0x49
+       ISIG                              = 0x80
+       ISTRIP                            = 0x20
+       IUTF8                             = 0x4000
+       IXANY                             = 0x800
+       IXOFF                             = 0x400
+       IXON                              = 0x200
+       LOCK_EX                           = 0x2
+       LOCK_NB                           = 0x4
+       LOCK_SH                           = 0x1
+       LOCK_UN                           = 0x8
+       MADV_CAN_REUSE                    = 0x9
+       MADV_DONTNEED                     = 0x4
+       MADV_FREE                         = 0x5
+       MADV_FREE_REUSABLE                = 0x7
+       MADV_FREE_REUSE                   = 0x8
+       MADV_NORMAL                       = 0x0
+       MADV_RANDOM                       = 0x1
+       MADV_SEQUENTIAL                   = 0x2
+       MADV_WILLNEED                     = 0x3
+       MADV_ZERO_WIRED_PAGES             = 0x6
+       MAP_ANON                          = 0x1000
+       MAP_COPY                          = 0x2
+       MAP_FILE                          = 0x0
+       MAP_FIXED                         = 0x10
+       MAP_HASSEMAPHORE                  = 0x200
+       MAP_JIT                           = 0x800
+       MAP_NOCACHE                       = 0x400
+       MAP_NOEXTEND                      = 0x100
+       MAP_NORESERVE                     = 0x40
+       MAP_PRIVATE                       = 0x2
+       MAP_RENAME                        = 0x20
+       MAP_RESERVED0080                  = 0x80
+       MAP_SHARED                        = 0x1
+       MCL_CURRENT                       = 0x1
+       MCL_FUTURE                        = 0x2
+       MSG_CTRUNC                        = 0x20
+       MSG_DONTROUTE                     = 0x4
+       MSG_DONTWAIT                      = 0x80
+       MSG_EOF                           = 0x100
+       MSG_EOR                           = 0x8
+       MSG_FLUSH                         = 0x400
+       MSG_HAVEMORE                      = 0x2000
+       MSG_HOLD                          = 0x800
+       MSG_NEEDSA                        = 0x10000
+       MSG_OOB                           = 0x1
+       MSG_PEEK                          = 0x2
+       MSG_RCVMORE                       = 0x4000
+       MSG_SEND                          = 0x1000
+       MSG_TRUNC                         = 0x10
+       MSG_WAITALL                       = 0x40
+       MSG_WAITSTREAM                    = 0x200
+       MS_ASYNC                          = 0x1
+       MS_DEACTIVATE                     = 0x8
+       MS_INVALIDATE                     = 0x2
+       MS_KILLPAGES                      = 0x4
+       MS_SYNC                           = 0x10
+       NAME_MAX                          = 0xff
+       NET_RT_DUMP                       = 0x1
+       NET_RT_DUMP2                      = 0x7
+       NET_RT_FLAGS                      = 0x2
+       NET_RT_IFLIST                     = 0x3
+       NET_RT_IFLIST2                    = 0x6
+       NET_RT_MAXID                      = 0xa
+       NET_RT_STAT                       = 0x4
+       NET_RT_TRASH                      = 0x5
+       NOFLSH                            = 0x80000000
+       NOTE_ABSOLUTE                     = 0x8
+       NOTE_ATTRIB                       = 0x8
+       NOTE_BACKGROUND                   = 0x40
+       NOTE_CHILD                        = 0x4
+       NOTE_CRITICAL                     = 0x20
+       NOTE_DELETE                       = 0x1
+       NOTE_EXEC                         = 0x20000000
+       NOTE_EXIT                         = 0x80000000
+       NOTE_EXITSTATUS                   = 0x4000000
+       NOTE_EXIT_CSERROR                 = 0x40000
+       NOTE_EXIT_DECRYPTFAIL             = 0x10000
+       NOTE_EXIT_DETAIL                  = 0x2000000
+       NOTE_EXIT_DETAIL_MASK             = 0x70000
+       NOTE_EXIT_MEMORY                  = 0x20000
+       NOTE_EXIT_REPARENTED              = 0x80000
+       NOTE_EXTEND                       = 0x4
+       NOTE_FFAND                        = 0x40000000
+       NOTE_FFCOPY                       = 0xc0000000
+       NOTE_FFCTRLMASK                   = 0xc0000000
+       NOTE_FFLAGSMASK                   = 0xffffff
+       NOTE_FFNOP                        = 0x0
+       NOTE_FFOR                         = 0x80000000
+       NOTE_FORK                         = 0x40000000
+       NOTE_LEEWAY                       = 0x10
+       NOTE_LINK                         = 0x10
+       NOTE_LOWAT                        = 0x1
+       NOTE_NONE                         = 0x80
+       NOTE_NSECONDS                     = 0x4
+       NOTE_PCTRLMASK                    = -0x100000
+       NOTE_PDATAMASK                    = 0xfffff
+       NOTE_REAP                         = 0x10000000
+       NOTE_RENAME                       = 0x20
+       NOTE_REVOKE                       = 0x40
+       NOTE_SECONDS                      = 0x1
+       NOTE_SIGNAL                       = 0x8000000
+       NOTE_TRACK                        = 0x1
+       NOTE_TRACKERR                     = 0x2
+       NOTE_TRIGGER                      = 0x1000000
+       NOTE_USECONDS                     = 0x2
+       NOTE_VM_ERROR                     = 0x10000000
+       NOTE_VM_PRESSURE                  = 0x80000000
+       NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000
+       NOTE_VM_PRESSURE_TERMINATE        = 0x40000000
+       NOTE_WRITE                        = 0x2
+       OCRNL                             = 0x10
+       OFDEL                             = 0x20000
+       OFILL                             = 0x80
+       ONLCR                             = 0x2
+       ONLRET                            = 0x40
+       ONOCR                             = 0x20
+       ONOEOT                            = 0x8
+       OPOST                             = 0x1
+       O_ACCMODE                         = 0x3
+       O_ALERT                           = 0x20000000
+       O_APPEND                          = 0x8
+       O_ASYNC                           = 0x40
+       O_CLOEXEC                         = 0x1000000
+       O_CREAT                           = 0x200
+       O_DIRECTORY                       = 0x100000
+       O_DP_GETRAWENCRYPTED              = 0x1
+       O_DSYNC                           = 0x400000
+       O_EVTONLY                         = 0x8000
+       O_EXCL                            = 0x800
+       O_EXLOCK                          = 0x20
+       O_FSYNC                           = 0x80
+       O_NDELAY                          = 0x4
+       O_NOCTTY                          = 0x20000
+       O_NOFOLLOW                        = 0x100
+       O_NONBLOCK                        = 0x4
+       O_POPUP                           = 0x80000000
+       O_RDONLY                          = 0x0
+       O_RDWR                            = 0x2
+       O_SHLOCK                          = 0x10
+       O_SYMLINK                         = 0x200000
+       O_SYNC                            = 0x80
+       O_TRUNC                           = 0x400
+       O_WRONLY                          = 0x1
+       PARENB                            = 0x1000
+       PARMRK                            = 0x8
+       PARODD                            = 0x2000
+       PENDIN                            = 0x20000000
+       PRIO_PGRP                         = 0x1
+       PRIO_PROCESS                      = 0x0
+       PRIO_USER                         = 0x2
+       PROT_EXEC                         = 0x4
+       PROT_NONE                         = 0x0
+       PROT_READ                         = 0x1
+       PROT_WRITE                        = 0x2
+       PT_ATTACH                         = 0xa
+       PT_ATTACHEXC                      = 0xe
+       PT_CONTINUE                       = 0x7
+       PT_DENY_ATTACH                    = 0x1f
+       PT_DETACH                         = 0xb
+       PT_FIRSTMACH                      = 0x20
+       PT_FORCEQUOTA                     = 0x1e
+       PT_KILL                           = 0x8
+       PT_READ_D                         = 0x2
+       PT_READ_I                         = 0x1
+       PT_READ_U                         = 0x3
+       PT_SIGEXC                         = 0xc
+       PT_STEP                           = 0x9
+       PT_THUPDATE                       = 0xd
+       PT_TRACE_ME                       = 0x0
+       PT_WRITE_D                        = 0x5
+       PT_WRITE_I                        = 0x4
+       PT_WRITE_U                        = 0x6
+       RLIMIT_AS                         = 0x5
+       RLIMIT_CORE                       = 0x4
+       RLIMIT_CPU                        = 0x0
+       RLIMIT_CPU_USAGE_MONITOR          = 0x2
+       RLIMIT_DATA                       = 0x2
+       RLIMIT_FSIZE                      = 0x1
+       RLIMIT_NOFILE                     = 0x8
+       RLIMIT_STACK                      = 0x3
+       RLIM_INFINITY                     = 0x7fffffffffffffff
+       RTAX_AUTHOR                       = 0x6
+       RTAX_BRD                          = 0x7
+       RTAX_DST                          = 0x0
+       RTAX_GATEWAY                      = 0x1
+       RTAX_GENMASK                      = 0x3
+       RTAX_IFA                          = 0x5
+       RTAX_IFP                          = 0x4
+       RTAX_MAX                          = 0x8
+       RTAX_NETMASK                      = 0x2
+       RTA_AUTHOR                        = 0x40
+       RTA_BRD                           = 0x80
+       RTA_DST                           = 0x1
+       RTA_GATEWAY                       = 0x2
+       RTA_GENMASK                       = 0x8
+       RTA_IFA                           = 0x20
+       RTA_IFP                           = 0x10
+       RTA_NETMASK                       = 0x4
+       RTF_BLACKHOLE                     = 0x1000
+       RTF_BROADCAST                     = 0x400000
+       RTF_CLONING                       = 0x100
+       RTF_CONDEMNED                     = 0x2000000
+       RTF_DELCLONE                      = 0x80
+       RTF_DONE                          = 0x40
+       RTF_DYNAMIC                       = 0x10
+       RTF_GATEWAY                       = 0x2
+       RTF_HOST                          = 0x4
+       RTF_IFREF                         = 0x4000000
+       RTF_IFSCOPE                       = 0x1000000
+       RTF_LLINFO                        = 0x400
+       RTF_LOCAL                         = 0x200000
+       RTF_MODIFIED                      = 0x20
+       RTF_MULTICAST                     = 0x800000
+       RTF_NOIFREF                       = 0x2000
+       RTF_PINNED                        = 0x100000
+       RTF_PRCLONING                     = 0x10000
+       RTF_PROTO1                        = 0x8000
+       RTF_PROTO2                        = 0x4000
+       RTF_PROTO3                        = 0x40000
+       RTF_PROXY                         = 0x8000000
+       RTF_REJECT                        = 0x8
+       RTF_ROUTER                        = 0x10000000
+       RTF_STATIC                        = 0x800
+       RTF_UP                            = 0x1
+       RTF_WASCLONED                     = 0x20000
+       RTF_XRESOLVE                      = 0x200
+       RTM_ADD                           = 0x1
+       RTM_CHANGE                        = 0x3
+       RTM_DELADDR                       = 0xd
+       RTM_DELETE                        = 0x2
+       RTM_DELMADDR                      = 0x10
+       RTM_GET                           = 0x4
+       RTM_GET2                          = 0x14
+       RTM_IFINFO                        = 0xe
+       RTM_IFINFO2                       = 0x12
+       RTM_LOCK                          = 0x8
+       RTM_LOSING                        = 0x5
+       RTM_MISS                          = 0x7
+       RTM_NEWADDR                       = 0xc
+       RTM_NEWMADDR                      = 0xf
+       RTM_NEWMADDR2                     = 0x13
+       RTM_OLDADD                        = 0x9
+       RTM_OLDDEL                        = 0xa
+       RTM_REDIRECT                      = 0x6
+       RTM_RESOLVE                       = 0xb
+       RTM_RTTUNIT                       = 0xf4240
+       RTM_VERSION                       = 0x5
+       RTV_EXPIRE                        = 0x4
+       RTV_HOPCOUNT                      = 0x2
+       RTV_MTU                           = 0x1
+       RTV_RPIPE                         = 0x8
+       RTV_RTT                           = 0x40
+       RTV_RTTVAR                        = 0x80
+       RTV_SPIPE                         = 0x10
+       RTV_SSTHRESH                      = 0x20
+       RUSAGE_CHILDREN                   = -0x1
+       RUSAGE_SELF                       = 0x0
+       SCM_CREDS                         = 0x3
+       SCM_RIGHTS                        = 0x1
+       SCM_TIMESTAMP                     = 0x2
+       SCM_TIMESTAMP_MONOTONIC           = 0x4
+       SHUT_RD                           = 0x0
+       SHUT_RDWR                         = 0x2
+       SHUT_WR                           = 0x1
+       SIOCADDMULTI                      = 0x80206931
+       SIOCAIFADDR                       = 0x8040691a
+       SIOCARPIPLL                       = 0xc0206928
+       SIOCATMARK                        = 0x40047307
+       SIOCAUTOADDR                      = 0xc0206926
+       SIOCAUTONETMASK                   = 0x80206927
+       SIOCDELMULTI                      = 0x80206932
+       SIOCDIFADDR                       = 0x80206919
+       SIOCDIFPHYADDR                    = 0x80206941
+       SIOCGDRVSPEC                      = 0xc01c697b
+       SIOCGETVLAN                       = 0xc020697f
+       SIOCGHIWAT                        = 0x40047301
+       SIOCGIFADDR                       = 0xc0206921
+       SIOCGIFALTMTU                     = 0xc0206948
+       SIOCGIFASYNCMAP                   = 0xc020697c
+       SIOCGIFBOND                       = 0xc0206947
+       SIOCGIFBRDADDR                    = 0xc0206923
+       SIOCGIFCAP                        = 0xc020695b
+       SIOCGIFCONF                       = 0xc0086924
+       SIOCGIFDEVMTU                     = 0xc0206944
+       SIOCGIFDSTADDR                    = 0xc0206922
+       SIOCGIFFLAGS                      = 0xc0206911
+       SIOCGIFGENERIC                    = 0xc020693a
+       SIOCGIFKPI                        = 0xc0206987
+       SIOCGIFMAC                        = 0xc0206982
+       SIOCGIFMEDIA                      = 0xc0286938
+       SIOCGIFMETRIC                     = 0xc0206917
+       SIOCGIFMTU                        = 0xc0206933
+       SIOCGIFNETMASK                    = 0xc0206925
+       SIOCGIFPDSTADDR                   = 0xc0206940
+       SIOCGIFPHYS                       = 0xc0206935
+       SIOCGIFPSRCADDR                   = 0xc020693f
+       SIOCGIFSTATUS                     = 0xc331693d
+       SIOCGIFVLAN                       = 0xc020697f
+       SIOCGIFWAKEFLAGS                  = 0xc0206988
+       SIOCGLOWAT                        = 0x40047303
+       SIOCGPGRP                         = 0x40047309
+       SIOCIFCREATE                      = 0xc0206978
+       SIOCIFCREATE2                     = 0xc020697a
+       SIOCIFDESTROY                     = 0x80206979
+       SIOCIFGCLONERS                    = 0xc00c6981
+       SIOCRSLVMULTI                     = 0xc008693b
+       SIOCSDRVSPEC                      = 0x801c697b
+       SIOCSETVLAN                       = 0x8020697e
+       SIOCSHIWAT                        = 0x80047300
+       SIOCSIFADDR                       = 0x8020690c
+       SIOCSIFALTMTU                     = 0x80206945
+       SIOCSIFASYNCMAP                   = 0x8020697d
+       SIOCSIFBOND                       = 0x80206946
+       SIOCSIFBRDADDR                    = 0x80206913
+       SIOCSIFCAP                        = 0x8020695a
+       SIOCSIFDSTADDR                    = 0x8020690e
+       SIOCSIFFLAGS                      = 0x80206910
+       SIOCSIFGENERIC                    = 0x80206939
+       SIOCSIFKPI                        = 0x80206986
+       SIOCSIFLLADDR                     = 0x8020693c
+       SIOCSIFMAC                        = 0x80206983
+       SIOCSIFMEDIA                      = 0xc0206937
+       SIOCSIFMETRIC                     = 0x80206918
+       SIOCSIFMTU                        = 0x80206934
+       SIOCSIFNETMASK                    = 0x80206916
+       SIOCSIFPHYADDR                    = 0x8040693e
+       SIOCSIFPHYS                       = 0x80206936
+       SIOCSIFVLAN                       = 0x8020697e
+       SIOCSLOWAT                        = 0x80047302
+       SIOCSPGRP                         = 0x80047308
+       SOCK_DGRAM                        = 0x2
+       SOCK_MAXADDRLEN                   = 0xff
+       SOCK_RAW                          = 0x3
+       SOCK_RDM                          = 0x4
+       SOCK_SEQPACKET                    = 0x5
+       SOCK_STREAM                       = 0x1
+       SOL_SOCKET                        = 0xffff
+       SOMAXCONN                         = 0x80
+       SO_ACCEPTCONN                     = 0x2
+       SO_BROADCAST                      = 0x20
+       SO_DEBUG                          = 0x1
+       SO_DONTROUTE                      = 0x10
+       SO_DONTTRUNC                      = 0x2000
+       SO_ERROR                          = 0x1007
+       SO_KEEPALIVE                      = 0x8
+       SO_LABEL                          = 0x1010
+       SO_LINGER                         = 0x80
+       SO_LINGER_SEC                     = 0x1080
+       SO_NKE                            = 0x1021
+       SO_NOADDRERR                      = 0x1023
+       SO_NOSIGPIPE                      = 0x1022
+       SO_NOTIFYCONFLICT                 = 0x1026
+       SO_NP_EXTENSIONS                  = 0x1083
+       SO_NREAD                          = 0x1020
+       SO_NUMRCVPKT                      = 0x1112
+       SO_NWRITE                         = 0x1024
+       SO_OOBINLINE                      = 0x100
+       SO_PEERLABEL                      = 0x1011
+       SO_RANDOMPORT                     = 0x1082
+       SO_RCVBUF                         = 0x1002
+       SO_RCVLOWAT                       = 0x1004
+       SO_RCVTIMEO                       = 0x1006
+       SO_REUSEADDR                      = 0x4
+       SO_REUSEPORT                      = 0x200
+       SO_REUSESHAREUID                  = 0x1025
+       SO_SNDBUF                         = 0x1001
+       SO_SNDLOWAT                       = 0x1003
+       SO_SNDTIMEO                       = 0x1005
+       SO_TIMESTAMP                      = 0x400
+       SO_TIMESTAMP_MONOTONIC            = 0x800
+       SO_TYPE                           = 0x1008
+       SO_UPCALLCLOSEWAIT                = 0x1027
+       SO_USELOOPBACK                    = 0x40
+       SO_WANTMORE                       = 0x4000
+       SO_WANTOOBFLAG                    = 0x8000
+       S_IEXEC                           = 0x40
+       S_IFBLK                           = 0x6000
+       S_IFCHR                           = 0x2000
+       S_IFDIR                           = 0x4000
+       S_IFIFO                           = 0x1000
+       S_IFLNK                           = 0xa000
+       S_IFMT                            = 0xf000
+       S_IFREG                           = 0x8000
+       S_IFSOCK                          = 0xc000
+       S_IFWHT                           = 0xe000
+       S_IREAD                           = 0x100
+       S_IRGRP                           = 0x20
+       S_IROTH                           = 0x4
+       S_IRUSR                           = 0x100
+       S_IRWXG                           = 0x38
+       S_IRWXO                           = 0x7
+       S_IRWXU                           = 0x1c0
+       S_ISGID                           = 0x400
+       S_ISTXT                           = 0x200
+       S_ISUID                           = 0x800
+       S_ISVTX                           = 0x200
+       S_IWGRP                           = 0x10
+       S_IWOTH                           = 0x2
+       S_IWRITE                          = 0x80
+       S_IWUSR                           = 0x80
+       S_IXGRP                           = 0x8
+       S_IXOTH                           = 0x1
+       S_IXUSR                           = 0x40
+       TCIFLUSH                          = 0x1
+       TCIOFLUSH                         = 0x3
+       TCOFLUSH                          = 0x2
+       TCP_CONNECTIONTIMEOUT             = 0x20
+       TCP_ENABLE_ECN                    = 0x104
+       TCP_KEEPALIVE                     = 0x10
+       TCP_KEEPCNT                       = 0x102
+       TCP_KEEPINTVL                     = 0x101
+       TCP_MAXHLEN                       = 0x3c
+       TCP_MAXOLEN                       = 0x28
+       TCP_MAXSEG                        = 0x2
+       TCP_MAXWIN                        = 0xffff
+       TCP_MAX_SACK                      = 0x4
+       TCP_MAX_WINSHIFT                  = 0xe
+       TCP_MINMSS                        = 0xd8
+       TCP_MSS                           = 0x200
+       TCP_NODELAY                       = 0x1
+       TCP_NOOPT                         = 0x8
+       TCP_NOPUSH                        = 0x4
+       TCP_NOTSENT_LOWAT                 = 0x201
+       TCP_RXT_CONNDROPTIME              = 0x80
+       TCP_RXT_FINDROP                   = 0x100
+       TCP_SENDMOREACKS                  = 0x103
+       TCSAFLUSH                         = 0x2
+       TIOCCBRK                          = 0x2000747a
+       TIOCCDTR                          = 0x20007478
+       TIOCCONS                          = 0x80047462
+       TIOCDCDTIMESTAMP                  = 0x40087458
+       TIOCDRAIN                         = 0x2000745e
+       TIOCDSIMICROCODE                  = 0x20007455
+       TIOCEXCL                          = 0x2000740d
+       TIOCEXT                           = 0x80047460
+       TIOCFLUSH                         = 0x80047410
+       TIOCGDRAINWAIT                    = 0x40047456
+       TIOCGETA                          = 0x402c7413
+       TIOCGETD                          = 0x4004741a
+       TIOCGPGRP                         = 0x40047477
+       TIOCGWINSZ                        = 0x40087468
+       TIOCIXOFF                         = 0x20007480
+       TIOCIXON                          = 0x20007481
+       TIOCMBIC                          = 0x8004746b
+       TIOCMBIS                          = 0x8004746c
+       TIOCMGDTRWAIT                     = 0x4004745a
+       TIOCMGET                          = 0x4004746a
+       TIOCMODG                          = 0x40047403
+       TIOCMODS                          = 0x80047404
+       TIOCMSDTRWAIT                     = 0x8004745b
+       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                      = 0x0
+       TIOCPKT_DOSTOP                    = 0x20
+       TIOCPKT_FLUSHREAD                 = 0x1
+       TIOCPKT_FLUSHWRITE                = 0x2
+       TIOCPKT_IOCTL                     = 0x40
+       TIOCPKT_NOSTOP                    = 0x10
+       TIOCPKT_START                     = 0x8
+       TIOCPKT_STOP                      = 0x4
+       TIOCPTYGNAME                      = 0x40807453
+       TIOCPTYGRANT                      = 0x20007454
+       TIOCPTYUNLK                       = 0x20007452
+       TIOCREMOTE                        = 0x80047469
+       TIOCSBRK                          = 0x2000747b
+       TIOCSCONS                         = 0x20007463
+       TIOCSCTTY                         = 0x20007461
+       TIOCSDRAINWAIT                    = 0x80047457
+       TIOCSDTR                          = 0x20007479
+       TIOCSETA                          = 0x802c7414
+       TIOCSETAF                         = 0x802c7416
+       TIOCSETAW                         = 0x802c7415
+       TIOCSETD                          = 0x8004741b
+       TIOCSIG                           = 0x2000745f
+       TIOCSPGRP                         = 0x80047476
+       TIOCSTART                         = 0x2000746e
+       TIOCSTAT                          = 0x20007465
+       TIOCSTI                           = 0x80017472
+       TIOCSTOP                          = 0x2000746f
+       TIOCSWINSZ                        = 0x80087467
+       TIOCTIMESTAMP                     = 0x40087459
+       TIOCUCNTL                         = 0x80047466
+       TOSTOP                            = 0x400000
+       VDISCARD                          = 0xf
+       VDSUSP                            = 0xb
+       VEOF                              = 0x0
+       VEOL                              = 0x1
+       VEOL2                             = 0x2
+       VERASE                            = 0x3
+       VINTR                             = 0x8
+       VKILL                             = 0x5
+       VLNEXT                            = 0xe
+       VMIN                              = 0x10
+       VQUIT                             = 0x9
+       VREPRINT                          = 0x6
+       VSTART                            = 0xc
+       VSTATUS                           = 0x12
+       VSTOP                             = 0xd
+       VSUSP                             = 0xa
+       VT0                               = 0x0
+       VT1                               = 0x10000
+       VTDLY                             = 0x10000
+       VTIME                             = 0x11
+       VWERASE                           = 0x4
+       WCONTINUED                        = 0x10
+       WCOREFLAG                         = 0x80
+       WEXITED                           = 0x4
+       WNOHANG                           = 0x1
+       WNOWAIT                           = 0x20
+       WORDSIZE                          = 0x20
+       WSTOPPED                          = 0x8
+       WUNTRACED                         = 0x2
+)
+
+// Errors
+const (
+       E2BIG           = syscall.Errno(0x7)
+       EACCES          = syscall.Errno(0xd)
+       EADDRINUSE      = syscall.Errno(0x30)
+       EADDRNOTAVAIL   = syscall.Errno(0x31)
+       EAFNOSUPPORT    = syscall.Errno(0x2f)
+       EAGAIN          = syscall.Errno(0x23)
+       EALREADY        = syscall.Errno(0x25)
+       EAUTH           = syscall.Errno(0x50)
+       EBADARCH        = syscall.Errno(0x56)
+       EBADEXEC        = syscall.Errno(0x55)
+       EBADF           = syscall.Errno(0x9)
+       EBADMACHO       = syscall.Errno(0x58)
+       EBADMSG         = syscall.Errno(0x5e)
+       EBADRPC         = syscall.Errno(0x48)
+       EBUSY           = syscall.Errno(0x10)
+       ECANCELED       = syscall.Errno(0x59)
+       ECHILD          = syscall.Errno(0xa)
+       ECONNABORTED    = syscall.Errno(0x35)
+       ECONNREFUSED    = syscall.Errno(0x3d)
+       ECONNRESET      = syscall.Errno(0x36)
+       EDEADLK         = syscall.Errno(0xb)
+       EDESTADDRREQ    = syscall.Errno(0x27)
+       EDEVERR         = syscall.Errno(0x53)
+       EDOM            = syscall.Errno(0x21)
+       EDQUOT          = syscall.Errno(0x45)
+       EEXIST          = syscall.Errno(0x11)
+       EFAULT          = syscall.Errno(0xe)
+       EFBIG           = syscall.Errno(0x1b)
+       EFTYPE          = syscall.Errno(0x4f)
+       EHOSTDOWN       = syscall.Errno(0x40)
+       EHOSTUNREACH    = syscall.Errno(0x41)
+       EIDRM           = syscall.Errno(0x5a)
+       EILSEQ          = syscall.Errno(0x5c)
+       EINPROGRESS     = syscall.Errno(0x24)
+       EINTR           = syscall.Errno(0x4)
+       EINVAL          = syscall.Errno(0x16)
+       EIO             = syscall.Errno(0x5)
+       EISCONN         = syscall.Errno(0x38)
+       EISDIR          = syscall.Errno(0x15)
+       ELAST           = syscall.Errno(0x6a)
+       ELOOP           = syscall.Errno(0x3e)
+       EMFILE          = syscall.Errno(0x18)
+       EMLINK          = syscall.Errno(0x1f)
+       EMSGSIZE        = syscall.Errno(0x28)
+       EMULTIHOP       = syscall.Errno(0x5f)
+       ENAMETOOLONG    = syscall.Errno(0x3f)
+       ENEEDAUTH       = syscall.Errno(0x51)
+       ENETDOWN        = syscall.Errno(0x32)
+       ENETRESET       = syscall.Errno(0x34)
+       ENETUNREACH     = syscall.Errno(0x33)
+       ENFILE          = syscall.Errno(0x17)
+       ENOATTR         = syscall.Errno(0x5d)
+       ENOBUFS         = syscall.Errno(0x37)
+       ENODATA         = syscall.Errno(0x60)
+       ENODEV          = syscall.Errno(0x13)
+       ENOENT          = syscall.Errno(0x2)
+       ENOEXEC         = syscall.Errno(0x8)
+       ENOLCK          = syscall.Errno(0x4d)
+       ENOLINK         = syscall.Errno(0x61)
+       ENOMEM          = syscall.Errno(0xc)
+       ENOMSG          = syscall.Errno(0x5b)
+       ENOPOLICY       = syscall.Errno(0x67)
+       ENOPROTOOPT     = syscall.Errno(0x2a)
+       ENOSPC          = syscall.Errno(0x1c)
+       ENOSR           = syscall.Errno(0x62)
+       ENOSTR          = syscall.Errno(0x63)
+       ENOSYS          = syscall.Errno(0x4e)
+       ENOTBLK         = syscall.Errno(0xf)
+       ENOTCONN        = syscall.Errno(0x39)
+       ENOTDIR         = syscall.Errno(0x14)
+       ENOTEMPTY       = syscall.Errno(0x42)
+       ENOTRECOVERABLE = syscall.Errno(0x68)
+       ENOTSOCK        = syscall.Errno(0x26)
+       ENOTSUP         = syscall.Errno(0x2d)
+       ENOTTY          = syscall.Errno(0x19)
+       ENXIO           = syscall.Errno(0x6)
+       EOPNOTSUPP      = syscall.Errno(0x66)
+       EOVERFLOW       = syscall.Errno(0x54)
+       EOWNERDEAD      = syscall.Errno(0x69)
+       EPERM           = syscall.Errno(0x1)
+       EPFNOSUPPORT    = syscall.Errno(0x2e)
+       EPIPE           = syscall.Errno(0x20)
+       EPROCLIM        = syscall.Errno(0x43)
+       EPROCUNAVAIL    = syscall.Errno(0x4c)
+       EPROGMISMATCH   = syscall.Errno(0x4b)
+       EPROGUNAVAIL    = syscall.Errno(0x4a)
+       EPROTO          = syscall.Errno(0x64)
+       EPROTONOSUPPORT = syscall.Errno(0x2b)
+       EPROTOTYPE      = syscall.Errno(0x29)
+       EPWROFF         = syscall.Errno(0x52)
+       EQFULL          = syscall.Errno(0x6a)
+       ERANGE          = syscall.Errno(0x22)
+       EREMOTE         = syscall.Errno(0x47)
+       EROFS           = syscall.Errno(0x1e)
+       ERPCMISMATCH    = syscall.Errno(0x49)
+       ESHLIBVERS      = syscall.Errno(0x57)
+       ESHUTDOWN       = syscall.Errno(0x3a)
+       ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+       ESPIPE          = syscall.Errno(0x1d)
+       ESRCH           = syscall.Errno(0x3)
+       ESTALE          = syscall.Errno(0x46)
+       ETIME           = syscall.Errno(0x65)
+       ETIMEDOUT       = syscall.Errno(0x3c)
+       ETOOMANYREFS    = syscall.Errno(0x3b)
+       ETXTBSY         = syscall.Errno(0x1a)
+       EUSERS          = syscall.Errno(0x44)
+       EWOULDBLOCK     = syscall.Errno(0x23)
+       EXDEV           = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+       SIGABRT   = syscall.Signal(0x6)
+       SIGALRM   = syscall.Signal(0xe)
+       SIGBUS    = syscall.Signal(0xa)
+       SIGCHLD   = syscall.Signal(0x14)
+       SIGCONT   = syscall.Signal(0x13)
+       SIGEMT    = syscall.Signal(0x7)
+       SIGFPE    = syscall.Signal(0x8)
+       SIGHUP    = syscall.Signal(0x1)
+       SIGILL    = syscall.Signal(0x4)
+       SIGINFO   = syscall.Signal(0x1d)
+       SIGINT    = syscall.Signal(0x2)
+       SIGIO     = syscall.Signal(0x17)
+       SIGIOT    = syscall.Signal(0x6)
+       SIGKILL   = syscall.Signal(0x9)
+       SIGPIPE   = syscall.Signal(0xd)
+       SIGPROF   = syscall.Signal(0x1b)
+       SIGQUIT   = syscall.Signal(0x3)
+       SIGSEGV   = syscall.Signal(0xb)
+       SIGSTOP   = syscall.Signal(0x11)
+       SIGSYS    = syscall.Signal(0xc)
+       SIGTERM   = syscall.Signal(0xf)
+       SIGTRAP   = syscall.Signal(0x5)
+       SIGTSTP   = syscall.Signal(0x12)
+       SIGTTIN   = syscall.Signal(0x15)
+       SIGTTOU   = syscall.Signal(0x16)
+       SIGURG    = syscall.Signal(0x10)
+       SIGUSR1   = syscall.Signal(0x1e)
+       SIGUSR2   = syscall.Signal(0x1f)
+       SIGVTALRM = syscall.Signal(0x1a)
+       SIGWINCH  = syscall.Signal(0x1c)
+       SIGXCPU   = syscall.Signal(0x18)
+       SIGXFSZ   = syscall.Signal(0x19)
+)
+
+// 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:  "resource 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:  "operation 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:  "device power is off",
+       83:  "device error",
+       84:  "value too large to be stored in data type",
+       85:  "bad executable (or shared library)",
+       86:  "bad CPU type in executable",
+       87:  "shared library version mismatch",
+       88:  "malformed Mach-o file",
+       89:  "operation canceled",
+       90:  "identifier removed",
+       91:  "no message of desired type",
+       92:  "illegal byte sequence",
+       93:  "attribute not found",
+       94:  "bad message",
+       95:  "EMULTIHOP (Reserved)",
+       96:  "no message available on STREAM",
+       97:  "ENOLINK (Reserved)",
+       98:  "no STREAM resources",
+       99:  "not a STREAM",
+       100: "protocol error",
+       101: "STREAM ioctl timeout",
+       102: "operation not supported on socket",
+       103: "policy not found",
+       104: "state not recoverable",
+       105: "previous owner died",
+       106: "interface output queue is full",
+}
+
+// Signal table
+var signals = [...]string{
+       1:  "hangup",
+       2:  "interrupt",
+       3:  "quit",
+       4:  "illegal instruction",
+       5:  "trace/BPT trap",
+       6:  "abort trap",
+       7:  "EMT trap",
+       8:  "floating point exception",
+       9:  "killed",
+       10: "bus error",
+       11: "segmentation fault",
+       12: "bad system call",
+       13: "broken pipe",
+       14: "alarm clock",
+       15: "terminated",
+       16: "urgent I/O condition",
+       17: "suspended (signal)",
+       18: "suspended",
+       19: "continued",
+       20: "child exited",
+       21: "stopped (tty input)",
+       22: "stopped (tty output)",
+       23: "I/O possible",
+       24: "cputime limit exceeded",
+       25: "filesize limit exceeded",
+       26: "virtual timer expired",
+       27: "profiling timer expired",
+       28: "window size changes",
+       29: "information request",
+       30: "user defined signal 1",
+       31: "user defined signal 2",
+}
diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go
new file mode 100644 (file)
index 0000000..9594f93
--- /dev/null
@@ -0,0 +1,1576 @@
+// mkerrors.sh -m64
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,darwin
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m64 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+       AF_APPLETALK                      = 0x10
+       AF_CCITT                          = 0xa
+       AF_CHAOS                          = 0x5
+       AF_CNT                            = 0x15
+       AF_COIP                           = 0x14
+       AF_DATAKIT                        = 0x9
+       AF_DECnet                         = 0xc
+       AF_DLI                            = 0xd
+       AF_E164                           = 0x1c
+       AF_ECMA                           = 0x8
+       AF_HYLINK                         = 0xf
+       AF_IEEE80211                      = 0x25
+       AF_IMPLINK                        = 0x3
+       AF_INET                           = 0x2
+       AF_INET6                          = 0x1e
+       AF_IPX                            = 0x17
+       AF_ISDN                           = 0x1c
+       AF_ISO                            = 0x7
+       AF_LAT                            = 0xe
+       AF_LINK                           = 0x12
+       AF_LOCAL                          = 0x1
+       AF_MAX                            = 0x28
+       AF_NATM                           = 0x1f
+       AF_NDRV                           = 0x1b
+       AF_NETBIOS                        = 0x21
+       AF_NS                             = 0x6
+       AF_OSI                            = 0x7
+       AF_PPP                            = 0x22
+       AF_PUP                            = 0x4
+       AF_RESERVED_36                    = 0x24
+       AF_ROUTE                          = 0x11
+       AF_SIP                            = 0x18
+       AF_SNA                            = 0xb
+       AF_SYSTEM                         = 0x20
+       AF_UNIX                           = 0x1
+       AF_UNSPEC                         = 0x0
+       AF_UTUN                           = 0x26
+       B0                                = 0x0
+       B110                              = 0x6e
+       B115200                           = 0x1c200
+       B1200                             = 0x4b0
+       B134                              = 0x86
+       B14400                            = 0x3840
+       B150                              = 0x96
+       B1800                             = 0x708
+       B19200                            = 0x4b00
+       B200                              = 0xc8
+       B230400                           = 0x38400
+       B2400                             = 0x960
+       B28800                            = 0x7080
+       B300                              = 0x12c
+       B38400                            = 0x9600
+       B4800                             = 0x12c0
+       B50                               = 0x32
+       B57600                            = 0xe100
+       B600                              = 0x258
+       B7200                             = 0x1c20
+       B75                               = 0x4b
+       B76800                            = 0x12c00
+       B9600                             = 0x2580
+       BIOCFLUSH                         = 0x20004268
+       BIOCGBLEN                         = 0x40044266
+       BIOCGDLT                          = 0x4004426a
+       BIOCGDLTLIST                      = 0xc00c4279
+       BIOCGETIF                         = 0x4020426b
+       BIOCGHDRCMPLT                     = 0x40044274
+       BIOCGRSIG                         = 0x40044272
+       BIOCGRTIMEOUT                     = 0x4010426e
+       BIOCGSEESENT                      = 0x40044276
+       BIOCGSTATS                        = 0x4008426f
+       BIOCIMMEDIATE                     = 0x80044270
+       BIOCPROMISC                       = 0x20004269
+       BIOCSBLEN                         = 0xc0044266
+       BIOCSDLT                          = 0x80044278
+       BIOCSETF                          = 0x80104267
+       BIOCSETFNR                        = 0x8010427e
+       BIOCSETIF                         = 0x8020426c
+       BIOCSHDRCMPLT                     = 0x80044275
+       BIOCSRSIG                         = 0x80044273
+       BIOCSRTIMEOUT                     = 0x8010426d
+       BIOCSSEESENT                      = 0x80044277
+       BIOCVERSION                       = 0x40044271
+       BPF_A                             = 0x10
+       BPF_ABS                           = 0x20
+       BPF_ADD                           = 0x0
+       BPF_ALIGNMENT                     = 0x4
+       BPF_ALU                           = 0x4
+       BPF_AND                           = 0x50
+       BPF_B                             = 0x10
+       BPF_DIV                           = 0x30
+       BPF_H                             = 0x8
+       BPF_IMM                           = 0x0
+       BPF_IND                           = 0x40
+       BPF_JA                            = 0x0
+       BPF_JEQ                           = 0x10
+       BPF_JGE                           = 0x30
+       BPF_JGT                           = 0x20
+       BPF_JMP                           = 0x5
+       BPF_JSET                          = 0x40
+       BPF_K                             = 0x0
+       BPF_LD                            = 0x0
+       BPF_LDX                           = 0x1
+       BPF_LEN                           = 0x80
+       BPF_LSH                           = 0x60
+       BPF_MAJOR_VERSION                 = 0x1
+       BPF_MAXBUFSIZE                    = 0x80000
+       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                           = 0x0
+       BPF_TXA                           = 0x80
+       BPF_W                             = 0x0
+       BPF_X                             = 0x8
+       BRKINT                            = 0x2
+       CFLUSH                            = 0xf
+       CLOCAL                            = 0x8000
+       CREAD                             = 0x800
+       CS5                               = 0x0
+       CS6                               = 0x100
+       CS7                               = 0x200
+       CS8                               = 0x300
+       CSIZE                             = 0x300
+       CSTART                            = 0x11
+       CSTATUS                           = 0x14
+       CSTOP                             = 0x13
+       CSTOPB                            = 0x400
+       CSUSP                             = 0x1a
+       CTL_MAXNAME                       = 0xc
+       CTL_NET                           = 0x4
+       DLT_A429                          = 0xb8
+       DLT_A653_ICM                      = 0xb9
+       DLT_AIRONET_HEADER                = 0x78
+       DLT_AOS                           = 0xde
+       DLT_APPLE_IP_OVER_IEEE1394        = 0x8a
+       DLT_ARCNET                        = 0x7
+       DLT_ARCNET_LINUX                  = 0x81
+       DLT_ATM_CLIP                      = 0x13
+       DLT_ATM_RFC1483                   = 0xb
+       DLT_AURORA                        = 0x7e
+       DLT_AX25                          = 0x3
+       DLT_AX25_KISS                     = 0xca
+       DLT_BACNET_MS_TP                  = 0xa5
+       DLT_BLUETOOTH_HCI_H4              = 0xbb
+       DLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9
+       DLT_CAN20B                        = 0xbe
+       DLT_CAN_SOCKETCAN                 = 0xe3
+       DLT_CHAOS                         = 0x5
+       DLT_CHDLC                         = 0x68
+       DLT_CISCO_IOS                     = 0x76
+       DLT_C_HDLC                        = 0x68
+       DLT_C_HDLC_WITH_DIR               = 0xcd
+       DLT_DBUS                          = 0xe7
+       DLT_DECT                          = 0xdd
+       DLT_DOCSIS                        = 0x8f
+       DLT_DVB_CI                        = 0xeb
+       DLT_ECONET                        = 0x73
+       DLT_EN10MB                        = 0x1
+       DLT_EN3MB                         = 0x2
+       DLT_ENC                           = 0x6d
+       DLT_ERF                           = 0xc5
+       DLT_ERF_ETH                       = 0xaf
+       DLT_ERF_POS                       = 0xb0
+       DLT_FC_2                          = 0xe0
+       DLT_FC_2_WITH_FRAME_DELIMS        = 0xe1
+       DLT_FDDI                          = 0xa
+       DLT_FLEXRAY                       = 0xd2
+       DLT_FRELAY                        = 0x6b
+       DLT_FRELAY_WITH_DIR               = 0xce
+       DLT_GCOM_SERIAL                   = 0xad
+       DLT_GCOM_T1E1                     = 0xac
+       DLT_GPF_F                         = 0xab
+       DLT_GPF_T                         = 0xaa
+       DLT_GPRS_LLC                      = 0xa9
+       DLT_GSMTAP_ABIS                   = 0xda
+       DLT_GSMTAP_UM                     = 0xd9
+       DLT_HHDLC                         = 0x79
+       DLT_IBM_SN                        = 0x92
+       DLT_IBM_SP                        = 0x91
+       DLT_IEEE802                       = 0x6
+       DLT_IEEE802_11                    = 0x69
+       DLT_IEEE802_11_RADIO              = 0x7f
+       DLT_IEEE802_11_RADIO_AVS          = 0xa3
+       DLT_IEEE802_15_4                  = 0xc3
+       DLT_IEEE802_15_4_LINUX            = 0xbf
+       DLT_IEEE802_15_4_NOFCS            = 0xe6
+       DLT_IEEE802_15_4_NONASK_PHY       = 0xd7
+       DLT_IEEE802_16_MAC_CPS            = 0xbc
+       DLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1
+       DLT_IPFILTER                      = 0x74
+       DLT_IPMB                          = 0xc7
+       DLT_IPMB_LINUX                    = 0xd1
+       DLT_IPNET                         = 0xe2
+       DLT_IPOIB                         = 0xf2
+       DLT_IPV4                          = 0xe4
+       DLT_IPV6                          = 0xe5
+       DLT_IP_OVER_FC                    = 0x7a
+       DLT_JUNIPER_ATM1                  = 0x89
+       DLT_JUNIPER_ATM2                  = 0x87
+       DLT_JUNIPER_ATM_CEMIC             = 0xee
+       DLT_JUNIPER_CHDLC                 = 0xb5
+       DLT_JUNIPER_ES                    = 0x84
+       DLT_JUNIPER_ETHER                 = 0xb2
+       DLT_JUNIPER_FIBRECHANNEL          = 0xea
+       DLT_JUNIPER_FRELAY                = 0xb4
+       DLT_JUNIPER_GGSN                  = 0x85
+       DLT_JUNIPER_ISM                   = 0xc2
+       DLT_JUNIPER_MFR                   = 0x86
+       DLT_JUNIPER_MLFR                  = 0x83
+       DLT_JUNIPER_MLPPP                 = 0x82
+       DLT_JUNIPER_MONITOR               = 0xa4
+       DLT_JUNIPER_PIC_PEER              = 0xae
+       DLT_JUNIPER_PPP                   = 0xb3
+       DLT_JUNIPER_PPPOE                 = 0xa7
+       DLT_JUNIPER_PPPOE_ATM             = 0xa8
+       DLT_JUNIPER_SERVICES              = 0x88
+       DLT_JUNIPER_SRX_E2E               = 0xe9
+       DLT_JUNIPER_ST                    = 0xc8
+       DLT_JUNIPER_VP                    = 0xb7
+       DLT_JUNIPER_VS                    = 0xe8
+       DLT_LAPB_WITH_DIR                 = 0xcf
+       DLT_LAPD                          = 0xcb
+       DLT_LIN                           = 0xd4
+       DLT_LINUX_EVDEV                   = 0xd8
+       DLT_LINUX_IRDA                    = 0x90
+       DLT_LINUX_LAPD                    = 0xb1
+       DLT_LINUX_PPP_WITHDIRECTION       = 0xa6
+       DLT_LINUX_SLL                     = 0x71
+       DLT_LOOP                          = 0x6c
+       DLT_LTALK                         = 0x72
+       DLT_MATCHING_MAX                  = 0xf5
+       DLT_MATCHING_MIN                  = 0x68
+       DLT_MFR                           = 0xb6
+       DLT_MOST                          = 0xd3
+       DLT_MPEG_2_TS                     = 0xf3
+       DLT_MPLS                          = 0xdb
+       DLT_MTP2                          = 0x8c
+       DLT_MTP2_WITH_PHDR                = 0x8b
+       DLT_MTP3                          = 0x8d
+       DLT_MUX27010                      = 0xec
+       DLT_NETANALYZER                   = 0xf0
+       DLT_NETANALYZER_TRANSPARENT       = 0xf1
+       DLT_NFC_LLCP                      = 0xf5
+       DLT_NFLOG                         = 0xef
+       DLT_NG40                          = 0xf4
+       DLT_NULL                          = 0x0
+       DLT_PCI_EXP                       = 0x7d
+       DLT_PFLOG                         = 0x75
+       DLT_PFSYNC                        = 0x12
+       DLT_PPI                           = 0xc0
+       DLT_PPP                           = 0x9
+       DLT_PPP_BSDOS                     = 0x10
+       DLT_PPP_ETHER                     = 0x33
+       DLT_PPP_PPPD                      = 0xa6
+       DLT_PPP_SERIAL                    = 0x32
+       DLT_PPP_WITH_DIR                  = 0xcc
+       DLT_PPP_WITH_DIRECTION            = 0xa6
+       DLT_PRISM_HEADER                  = 0x77
+       DLT_PRONET                        = 0x4
+       DLT_RAIF1                         = 0xc6
+       DLT_RAW                           = 0xc
+       DLT_RIO                           = 0x7c
+       DLT_SCCP                          = 0x8e
+       DLT_SITA                          = 0xc4
+       DLT_SLIP                          = 0x8
+       DLT_SLIP_BSDOS                    = 0xf
+       DLT_STANAG_5066_D_PDU             = 0xed
+       DLT_SUNATM                        = 0x7b
+       DLT_SYMANTEC_FIREWALL             = 0x63
+       DLT_TZSP                          = 0x80
+       DLT_USB                           = 0xba
+       DLT_USB_LINUX                     = 0xbd
+       DLT_USB_LINUX_MMAPPED             = 0xdc
+       DLT_USER0                         = 0x93
+       DLT_USER1                         = 0x94
+       DLT_USER10                        = 0x9d
+       DLT_USER11                        = 0x9e
+       DLT_USER12                        = 0x9f
+       DLT_USER13                        = 0xa0
+       DLT_USER14                        = 0xa1
+       DLT_USER15                        = 0xa2
+       DLT_USER2                         = 0x95
+       DLT_USER3                         = 0x96
+       DLT_USER4                         = 0x97
+       DLT_USER5                         = 0x98
+       DLT_USER6                         = 0x99
+       DLT_USER7                         = 0x9a
+       DLT_USER8                         = 0x9b
+       DLT_USER9                         = 0x9c
+       DLT_WIHART                        = 0xdf
+       DLT_X2E_SERIAL                    = 0xd5
+       DLT_X2E_XORAYA                    = 0xd6
+       DT_BLK                            = 0x6
+       DT_CHR                            = 0x2
+       DT_DIR                            = 0x4
+       DT_FIFO                           = 0x1
+       DT_LNK                            = 0xa
+       DT_REG                            = 0x8
+       DT_SOCK                           = 0xc
+       DT_UNKNOWN                        = 0x0
+       DT_WHT                            = 0xe
+       ECHO                              = 0x8
+       ECHOCTL                           = 0x40
+       ECHOE                             = 0x2
+       ECHOK                             = 0x4
+       ECHOKE                            = 0x1
+       ECHONL                            = 0x10
+       ECHOPRT                           = 0x20
+       EVFILT_AIO                        = -0x3
+       EVFILT_FS                         = -0x9
+       EVFILT_MACHPORT                   = -0x8
+       EVFILT_PROC                       = -0x5
+       EVFILT_READ                       = -0x1
+       EVFILT_SIGNAL                     = -0x6
+       EVFILT_SYSCOUNT                   = 0xe
+       EVFILT_THREADMARKER               = 0xe
+       EVFILT_TIMER                      = -0x7
+       EVFILT_USER                       = -0xa
+       EVFILT_VM                         = -0xc
+       EVFILT_VNODE                      = -0x4
+       EVFILT_WRITE                      = -0x2
+       EV_ADD                            = 0x1
+       EV_CLEAR                          = 0x20
+       EV_DELETE                         = 0x2
+       EV_DISABLE                        = 0x8
+       EV_DISPATCH                       = 0x80
+       EV_ENABLE                         = 0x4
+       EV_EOF                            = 0x8000
+       EV_ERROR                          = 0x4000
+       EV_FLAG0                          = 0x1000
+       EV_FLAG1                          = 0x2000
+       EV_ONESHOT                        = 0x10
+       EV_OOBAND                         = 0x2000
+       EV_POLL                           = 0x1000
+       EV_RECEIPT                        = 0x40
+       EV_SYSFLAGS                       = 0xf000
+       EXTA                              = 0x4b00
+       EXTB                              = 0x9600
+       EXTPROC                           = 0x800
+       FD_CLOEXEC                        = 0x1
+       FD_SETSIZE                        = 0x400
+       FLUSHO                            = 0x800000
+       F_ADDFILESIGS                     = 0x3d
+       F_ADDSIGS                         = 0x3b
+       F_ALLOCATEALL                     = 0x4
+       F_ALLOCATECONTIG                  = 0x2
+       F_CHKCLEAN                        = 0x29
+       F_DUPFD                           = 0x0
+       F_DUPFD_CLOEXEC                   = 0x43
+       F_FINDSIGS                        = 0x4e
+       F_FLUSH_DATA                      = 0x28
+       F_FREEZE_FS                       = 0x35
+       F_FULLFSYNC                       = 0x33
+       F_GETCODEDIR                      = 0x48
+       F_GETFD                           = 0x1
+       F_GETFL                           = 0x3
+       F_GETLK                           = 0x7
+       F_GETLKPID                        = 0x42
+       F_GETNOSIGPIPE                    = 0x4a
+       F_GETOWN                          = 0x5
+       F_GETPATH                         = 0x32
+       F_GETPATH_MTMINFO                 = 0x47
+       F_GETPROTECTIONCLASS              = 0x3f
+       F_GETPROTECTIONLEVEL              = 0x4d
+       F_GLOBAL_NOCACHE                  = 0x37
+       F_LOG2PHYS                        = 0x31
+       F_LOG2PHYS_EXT                    = 0x41
+       F_NOCACHE                         = 0x30
+       F_NODIRECT                        = 0x3e
+       F_OK                              = 0x0
+       F_PATHPKG_CHECK                   = 0x34
+       F_PEOFPOSMODE                     = 0x3
+       F_PREALLOCATE                     = 0x2a
+       F_RDADVISE                        = 0x2c
+       F_RDAHEAD                         = 0x2d
+       F_RDLCK                           = 0x1
+       F_SETBACKINGSTORE                 = 0x46
+       F_SETFD                           = 0x2
+       F_SETFL                           = 0x4
+       F_SETLK                           = 0x8
+       F_SETLKW                          = 0x9
+       F_SETLKWTIMEOUT                   = 0xa
+       F_SETNOSIGPIPE                    = 0x49
+       F_SETOWN                          = 0x6
+       F_SETPROTECTIONCLASS              = 0x40
+       F_SETSIZE                         = 0x2b
+       F_SINGLE_WRITER                   = 0x4c
+       F_THAW_FS                         = 0x36
+       F_TRANSCODEKEY                    = 0x4b
+       F_UNLCK                           = 0x2
+       F_VOLPOSMODE                      = 0x4
+       F_WRLCK                           = 0x3
+       HUPCL                             = 0x4000
+       ICANON                            = 0x100
+       ICMP6_FILTER                      = 0x12
+       ICRNL                             = 0x100
+       IEXTEN                            = 0x400
+       IFF_ALLMULTI                      = 0x200
+       IFF_ALTPHYS                       = 0x4000
+       IFF_BROADCAST                     = 0x2
+       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_AAL5                          = 0x31
+       IFT_ARCNET                        = 0x23
+       IFT_ARCNETPLUS                    = 0x24
+       IFT_ATM                           = 0x25
+       IFT_BRIDGE                        = 0xd1
+       IFT_CARP                          = 0xf8
+       IFT_CELLULAR                      = 0xff
+       IFT_CEPT                          = 0x13
+       IFT_DS3                           = 0x1e
+       IFT_ENC                           = 0xf4
+       IFT_EON                           = 0x19
+       IFT_ETHER                         = 0x6
+       IFT_FAITH                         = 0x38
+       IFT_FDDI                          = 0xf
+       IFT_FRELAY                        = 0x20
+       IFT_FRELAYDCE                     = 0x2c
+       IFT_GIF                           = 0x37
+       IFT_HDH1822                       = 0x3
+       IFT_HIPPI                         = 0x2f
+       IFT_HSSI                          = 0x2e
+       IFT_HY                            = 0xe
+       IFT_IEEE1394                      = 0x90
+       IFT_IEEE8023ADLAG                 = 0x88
+       IFT_ISDNBASIC                     = 0x14
+       IFT_ISDNPRIMARY                   = 0x15
+       IFT_ISO88022LLC                   = 0x29
+       IFT_ISO88023                      = 0x7
+       IFT_ISO88024                      = 0x8
+       IFT_ISO88025                      = 0x9
+       IFT_ISO88026                      = 0xa
+       IFT_L2VLAN                        = 0x87
+       IFT_LAPB                          = 0x10
+       IFT_LOCALTALK                     = 0x2a
+       IFT_LOOP                          = 0x18
+       IFT_MIOX25                        = 0x26
+       IFT_MODEM                         = 0x30
+       IFT_NSIP                          = 0x1b
+       IFT_OTHER                         = 0x1
+       IFT_P10                           = 0xc
+       IFT_P80                           = 0xd
+       IFT_PARA                          = 0x22
+       IFT_PDP                           = 0xff
+       IFT_PFLOG                         = 0xf5
+       IFT_PFSYNC                        = 0xf6
+       IFT_PKTAP                         = 0xfe
+       IFT_PPP                           = 0x17
+       IFT_PROPMUX                       = 0x36
+       IFT_PROPVIRTUAL                   = 0x35
+       IFT_PTPSERIAL                     = 0x16
+       IFT_RS232                         = 0x21
+       IFT_SDLC                          = 0x11
+       IFT_SIP                           = 0x1f
+       IFT_SLIP                          = 0x1c
+       IFT_SMDSDXI                       = 0x2b
+       IFT_SMDSICIP                      = 0x34
+       IFT_SONET                         = 0x27
+       IFT_SONETPATH                     = 0x32
+       IFT_SONETVT                       = 0x33
+       IFT_STARLAN                       = 0xb
+       IFT_STF                           = 0x39
+       IFT_T1                            = 0x12
+       IFT_ULTRA                         = 0x1d
+       IFT_V35                           = 0x2d
+       IFT_X25                           = 0x5
+       IFT_X25DDN                        = 0x4
+       IFT_X25PLE                        = 0x28
+       IFT_XETHER                        = 0x1a
+       IGNBRK                            = 0x1
+       IGNCR                             = 0x80
+       IGNPAR                            = 0x4
+       IMAXBEL                           = 0x2000
+       INLCR                             = 0x40
+       INPCK                             = 0x10
+       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_LINKLOCALNETNUM                = 0xa9fe0000
+       IN_LOOPBACKNET                    = 0x7f
+       IPPROTO_3PC                       = 0x22
+       IPPROTO_ADFS                      = 0x44
+       IPPROTO_AH                        = 0x33
+       IPPROTO_AHIP                      = 0x3d
+       IPPROTO_APES                      = 0x63
+       IPPROTO_ARGUS                     = 0xd
+       IPPROTO_AX25                      = 0x5d
+       IPPROTO_BHA                       = 0x31
+       IPPROTO_BLT                       = 0x1e
+       IPPROTO_BRSATMON                  = 0x4c
+       IPPROTO_CFTP                      = 0x3e
+       IPPROTO_CHAOS                     = 0x10
+       IPPROTO_CMTP                      = 0x26
+       IPPROTO_CPHB                      = 0x49
+       IPPROTO_CPNX                      = 0x48
+       IPPROTO_DDP                       = 0x25
+       IPPROTO_DGP                       = 0x56
+       IPPROTO_DIVERT                    = 0xfe
+       IPPROTO_DONE                      = 0x101
+       IPPROTO_DSTOPTS                   = 0x3c
+       IPPROTO_EGP                       = 0x8
+       IPPROTO_EMCON                     = 0xe
+       IPPROTO_ENCAP                     = 0x62
+       IPPROTO_EON                       = 0x50
+       IPPROTO_ESP                       = 0x32
+       IPPROTO_ETHERIP                   = 0x61
+       IPPROTO_FRAGMENT                  = 0x2c
+       IPPROTO_GGP                       = 0x3
+       IPPROTO_GMTP                      = 0x64
+       IPPROTO_GRE                       = 0x2f
+       IPPROTO_HELLO                     = 0x3f
+       IPPROTO_HMP                       = 0x14
+       IPPROTO_HOPOPTS                   = 0x0
+       IPPROTO_ICMP                      = 0x1
+       IPPROTO_ICMPV6                    = 0x3a
+       IPPROTO_IDP                       = 0x16
+       IPPROTO_IDPR                      = 0x23
+       IPPROTO_IDRP                      = 0x2d
+       IPPROTO_IGMP                      = 0x2
+       IPPROTO_IGP                       = 0x55
+       IPPROTO_IGRP                      = 0x58
+       IPPROTO_IL                        = 0x28
+       IPPROTO_INLSP                     = 0x34
+       IPPROTO_INP                       = 0x20
+       IPPROTO_IP                        = 0x0
+       IPPROTO_IPCOMP                    = 0x6c
+       IPPROTO_IPCV                      = 0x47
+       IPPROTO_IPEIP                     = 0x5e
+       IPPROTO_IPIP                      = 0x4
+       IPPROTO_IPPC                      = 0x43
+       IPPROTO_IPV4                      = 0x4
+       IPPROTO_IPV6                      = 0x29
+       IPPROTO_IRTP                      = 0x1c
+       IPPROTO_KRYPTOLAN                 = 0x41
+       IPPROTO_LARP                      = 0x5b
+       IPPROTO_LEAF1                     = 0x19
+       IPPROTO_LEAF2                     = 0x1a
+       IPPROTO_MAX                       = 0x100
+       IPPROTO_MAXID                     = 0x34
+       IPPROTO_MEAS                      = 0x13
+       IPPROTO_MHRP                      = 0x30
+       IPPROTO_MICP                      = 0x5f
+       IPPROTO_MTP                       = 0x5c
+       IPPROTO_MUX                       = 0x12
+       IPPROTO_ND                        = 0x4d
+       IPPROTO_NHRP                      = 0x36
+       IPPROTO_NONE                      = 0x3b
+       IPPROTO_NSP                       = 0x1f
+       IPPROTO_NVPII                     = 0xb
+       IPPROTO_OSPFIGP                   = 0x59
+       IPPROTO_PGM                       = 0x71
+       IPPROTO_PIGP                      = 0x9
+       IPPROTO_PIM                       = 0x67
+       IPPROTO_PRM                       = 0x15
+       IPPROTO_PUP                       = 0xc
+       IPPROTO_PVP                       = 0x4b
+       IPPROTO_RAW                       = 0xff
+       IPPROTO_RCCMON                    = 0xa
+       IPPROTO_RDP                       = 0x1b
+       IPPROTO_ROUTING                   = 0x2b
+       IPPROTO_RSVP                      = 0x2e
+       IPPROTO_RVD                       = 0x42
+       IPPROTO_SATEXPAK                  = 0x40
+       IPPROTO_SATMON                    = 0x45
+       IPPROTO_SCCSP                     = 0x60
+       IPPROTO_SCTP                      = 0x84
+       IPPROTO_SDRP                      = 0x2a
+       IPPROTO_SEP                       = 0x21
+       IPPROTO_SRPC                      = 0x5a
+       IPPROTO_ST                        = 0x7
+       IPPROTO_SVMTP                     = 0x52
+       IPPROTO_SWIPE                     = 0x35
+       IPPROTO_TCF                       = 0x57
+       IPPROTO_TCP                       = 0x6
+       IPPROTO_TP                        = 0x1d
+       IPPROTO_TPXX                      = 0x27
+       IPPROTO_TRUNK1                    = 0x17
+       IPPROTO_TRUNK2                    = 0x18
+       IPPROTO_TTP                       = 0x54
+       IPPROTO_UDP                       = 0x11
+       IPPROTO_VINES                     = 0x53
+       IPPROTO_VISA                      = 0x46
+       IPPROTO_VMTP                      = 0x51
+       IPPROTO_WBEXPAK                   = 0x4f
+       IPPROTO_WBMON                     = 0x4e
+       IPPROTO_WSN                       = 0x4a
+       IPPROTO_XNET                      = 0xf
+       IPPROTO_XTP                       = 0x24
+       IPV6_2292DSTOPTS                  = 0x17
+       IPV6_2292HOPLIMIT                 = 0x14
+       IPV6_2292HOPOPTS                  = 0x16
+       IPV6_2292NEXTHOP                  = 0x15
+       IPV6_2292PKTINFO                  = 0x13
+       IPV6_2292PKTOPTIONS               = 0x19
+       IPV6_2292RTHDR                    = 0x18
+       IPV6_BINDV6ONLY                   = 0x1b
+       IPV6_BOUND_IF                     = 0x7d
+       IPV6_CHECKSUM                     = 0x1a
+       IPV6_DEFAULT_MULTICAST_HOPS       = 0x1
+       IPV6_DEFAULT_MULTICAST_LOOP       = 0x1
+       IPV6_DEFHLIM                      = 0x40
+       IPV6_FAITH                        = 0x1d
+       IPV6_FLOWINFO_MASK                = 0xffffff0f
+       IPV6_FLOWLABEL_MASK               = 0xffff0f00
+       IPV6_FRAGTTL                      = 0x3c
+       IPV6_FW_ADD                       = 0x1e
+       IPV6_FW_DEL                       = 0x1f
+       IPV6_FW_FLUSH                     = 0x20
+       IPV6_FW_GET                       = 0x22
+       IPV6_FW_ZERO                      = 0x21
+       IPV6_HLIMDEC                      = 0x1
+       IPV6_IPSEC_POLICY                 = 0x1c
+       IPV6_JOIN_GROUP                   = 0xc
+       IPV6_LEAVE_GROUP                  = 0xd
+       IPV6_MAXHLIM                      = 0xff
+       IPV6_MAXOPTHDR                    = 0x800
+       IPV6_MAXPACKET                    = 0xffff
+       IPV6_MAX_GROUP_SRC_FILTER         = 0x200
+       IPV6_MAX_MEMBERSHIPS              = 0xfff
+       IPV6_MAX_SOCK_SRC_FILTER          = 0x80
+       IPV6_MIN_MEMBERSHIPS              = 0x1f
+       IPV6_MMTU                         = 0x500
+       IPV6_MULTICAST_HOPS               = 0xa
+       IPV6_MULTICAST_IF                 = 0x9
+       IPV6_MULTICAST_LOOP               = 0xb
+       IPV6_PORTRANGE                    = 0xe
+       IPV6_PORTRANGE_DEFAULT            = 0x0
+       IPV6_PORTRANGE_HIGH               = 0x1
+       IPV6_PORTRANGE_LOW                = 0x2
+       IPV6_RECVTCLASS                   = 0x23
+       IPV6_RTHDR_LOOSE                  = 0x0
+       IPV6_RTHDR_STRICT                 = 0x1
+       IPV6_RTHDR_TYPE_0                 = 0x0
+       IPV6_SOCKOPT_RESERVED1            = 0x3
+       IPV6_TCLASS                       = 0x24
+       IPV6_UNICAST_HOPS                 = 0x4
+       IPV6_V6ONLY                       = 0x1b
+       IPV6_VERSION                      = 0x60
+       IPV6_VERSION_MASK                 = 0xf0
+       IP_ADD_MEMBERSHIP                 = 0xc
+       IP_ADD_SOURCE_MEMBERSHIP          = 0x46
+       IP_BLOCK_SOURCE                   = 0x48
+       IP_BOUND_IF                       = 0x19
+       IP_DEFAULT_MULTICAST_LOOP         = 0x1
+       IP_DEFAULT_MULTICAST_TTL          = 0x1
+       IP_DF                             = 0x4000
+       IP_DROP_MEMBERSHIP                = 0xd
+       IP_DROP_SOURCE_MEMBERSHIP         = 0x47
+       IP_DUMMYNET_CONFIGURE             = 0x3c
+       IP_DUMMYNET_DEL                   = 0x3d
+       IP_DUMMYNET_FLUSH                 = 0x3e
+       IP_DUMMYNET_GET                   = 0x40
+       IP_FAITH                          = 0x16
+       IP_FW_ADD                         = 0x28
+       IP_FW_DEL                         = 0x29
+       IP_FW_FLUSH                       = 0x2a
+       IP_FW_GET                         = 0x2c
+       IP_FW_RESETLOG                    = 0x2d
+       IP_FW_ZERO                        = 0x2b
+       IP_HDRINCL                        = 0x2
+       IP_IPSEC_POLICY                   = 0x15
+       IP_MAXPACKET                      = 0xffff
+       IP_MAX_GROUP_SRC_FILTER           = 0x200
+       IP_MAX_MEMBERSHIPS                = 0xfff
+       IP_MAX_SOCK_MUTE_FILTER           = 0x80
+       IP_MAX_SOCK_SRC_FILTER            = 0x80
+       IP_MF                             = 0x2000
+       IP_MIN_MEMBERSHIPS                = 0x1f
+       IP_MSFILTER                       = 0x4a
+       IP_MSS                            = 0x240
+       IP_MULTICAST_IF                   = 0x9
+       IP_MULTICAST_IFINDEX              = 0x42
+       IP_MULTICAST_LOOP                 = 0xb
+       IP_MULTICAST_TTL                  = 0xa
+       IP_MULTICAST_VIF                  = 0xe
+       IP_NAT__XXX                       = 0x37
+       IP_OFFMASK                        = 0x1fff
+       IP_OLD_FW_ADD                     = 0x32
+       IP_OLD_FW_DEL                     = 0x33
+       IP_OLD_FW_FLUSH                   = 0x34
+       IP_OLD_FW_GET                     = 0x36
+       IP_OLD_FW_RESETLOG                = 0x38
+       IP_OLD_FW_ZERO                    = 0x35
+       IP_OPTIONS                        = 0x1
+       IP_PKTINFO                        = 0x1a
+       IP_PORTRANGE                      = 0x13
+       IP_PORTRANGE_DEFAULT              = 0x0
+       IP_PORTRANGE_HIGH                 = 0x1
+       IP_PORTRANGE_LOW                  = 0x2
+       IP_RECVDSTADDR                    = 0x7
+       IP_RECVIF                         = 0x14
+       IP_RECVOPTS                       = 0x5
+       IP_RECVPKTINFO                    = 0x1a
+       IP_RECVRETOPTS                    = 0x6
+       IP_RECVTTL                        = 0x18
+       IP_RETOPTS                        = 0x8
+       IP_RF                             = 0x8000
+       IP_RSVP_OFF                       = 0x10
+       IP_RSVP_ON                        = 0xf
+       IP_RSVP_VIF_OFF                   = 0x12
+       IP_RSVP_VIF_ON                    = 0x11
+       IP_STRIPHDR                       = 0x17
+       IP_TOS                            = 0x3
+       IP_TRAFFIC_MGT_BACKGROUND         = 0x41
+       IP_TTL                            = 0x4
+       IP_UNBLOCK_SOURCE                 = 0x49
+       ISIG                              = 0x80
+       ISTRIP                            = 0x20
+       IUTF8                             = 0x4000
+       IXANY                             = 0x800
+       IXOFF                             = 0x400
+       IXON                              = 0x200
+       LOCK_EX                           = 0x2
+       LOCK_NB                           = 0x4
+       LOCK_SH                           = 0x1
+       LOCK_UN                           = 0x8
+       MADV_CAN_REUSE                    = 0x9
+       MADV_DONTNEED                     = 0x4
+       MADV_FREE                         = 0x5
+       MADV_FREE_REUSABLE                = 0x7
+       MADV_FREE_REUSE                   = 0x8
+       MADV_NORMAL                       = 0x0
+       MADV_RANDOM                       = 0x1
+       MADV_SEQUENTIAL                   = 0x2
+       MADV_WILLNEED                     = 0x3
+       MADV_ZERO_WIRED_PAGES             = 0x6
+       MAP_ANON                          = 0x1000
+       MAP_COPY                          = 0x2
+       MAP_FILE                          = 0x0
+       MAP_FIXED                         = 0x10
+       MAP_HASSEMAPHORE                  = 0x200
+       MAP_JIT                           = 0x800
+       MAP_NOCACHE                       = 0x400
+       MAP_NOEXTEND                      = 0x100
+       MAP_NORESERVE                     = 0x40
+       MAP_PRIVATE                       = 0x2
+       MAP_RENAME                        = 0x20
+       MAP_RESERVED0080                  = 0x80
+       MAP_SHARED                        = 0x1
+       MCL_CURRENT                       = 0x1
+       MCL_FUTURE                        = 0x2
+       MSG_CTRUNC                        = 0x20
+       MSG_DONTROUTE                     = 0x4
+       MSG_DONTWAIT                      = 0x80
+       MSG_EOF                           = 0x100
+       MSG_EOR                           = 0x8
+       MSG_FLUSH                         = 0x400
+       MSG_HAVEMORE                      = 0x2000
+       MSG_HOLD                          = 0x800
+       MSG_NEEDSA                        = 0x10000
+       MSG_OOB                           = 0x1
+       MSG_PEEK                          = 0x2
+       MSG_RCVMORE                       = 0x4000
+       MSG_SEND                          = 0x1000
+       MSG_TRUNC                         = 0x10
+       MSG_WAITALL                       = 0x40
+       MSG_WAITSTREAM                    = 0x200
+       MS_ASYNC                          = 0x1
+       MS_DEACTIVATE                     = 0x8
+       MS_INVALIDATE                     = 0x2
+       MS_KILLPAGES                      = 0x4
+       MS_SYNC                           = 0x10
+       NAME_MAX                          = 0xff
+       NET_RT_DUMP                       = 0x1
+       NET_RT_DUMP2                      = 0x7
+       NET_RT_FLAGS                      = 0x2
+       NET_RT_IFLIST                     = 0x3
+       NET_RT_IFLIST2                    = 0x6
+       NET_RT_MAXID                      = 0xa
+       NET_RT_STAT                       = 0x4
+       NET_RT_TRASH                      = 0x5
+       NOFLSH                            = 0x80000000
+       NOTE_ABSOLUTE                     = 0x8
+       NOTE_ATTRIB                       = 0x8
+       NOTE_BACKGROUND                   = 0x40
+       NOTE_CHILD                        = 0x4
+       NOTE_CRITICAL                     = 0x20
+       NOTE_DELETE                       = 0x1
+       NOTE_EXEC                         = 0x20000000
+       NOTE_EXIT                         = 0x80000000
+       NOTE_EXITSTATUS                   = 0x4000000
+       NOTE_EXIT_CSERROR                 = 0x40000
+       NOTE_EXIT_DECRYPTFAIL             = 0x10000
+       NOTE_EXIT_DETAIL                  = 0x2000000
+       NOTE_EXIT_DETAIL_MASK             = 0x70000
+       NOTE_EXIT_MEMORY                  = 0x20000
+       NOTE_EXIT_REPARENTED              = 0x80000
+       NOTE_EXTEND                       = 0x4
+       NOTE_FFAND                        = 0x40000000
+       NOTE_FFCOPY                       = 0xc0000000
+       NOTE_FFCTRLMASK                   = 0xc0000000
+       NOTE_FFLAGSMASK                   = 0xffffff
+       NOTE_FFNOP                        = 0x0
+       NOTE_FFOR                         = 0x80000000
+       NOTE_FORK                         = 0x40000000
+       NOTE_LEEWAY                       = 0x10
+       NOTE_LINK                         = 0x10
+       NOTE_LOWAT                        = 0x1
+       NOTE_NONE                         = 0x80
+       NOTE_NSECONDS                     = 0x4
+       NOTE_PCTRLMASK                    = -0x100000
+       NOTE_PDATAMASK                    = 0xfffff
+       NOTE_REAP                         = 0x10000000
+       NOTE_RENAME                       = 0x20
+       NOTE_REVOKE                       = 0x40
+       NOTE_SECONDS                      = 0x1
+       NOTE_SIGNAL                       = 0x8000000
+       NOTE_TRACK                        = 0x1
+       NOTE_TRACKERR                     = 0x2
+       NOTE_TRIGGER                      = 0x1000000
+       NOTE_USECONDS                     = 0x2
+       NOTE_VM_ERROR                     = 0x10000000
+       NOTE_VM_PRESSURE                  = 0x80000000
+       NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000
+       NOTE_VM_PRESSURE_TERMINATE        = 0x40000000
+       NOTE_WRITE                        = 0x2
+       OCRNL                             = 0x10
+       OFDEL                             = 0x20000
+       OFILL                             = 0x80
+       ONLCR                             = 0x2
+       ONLRET                            = 0x40
+       ONOCR                             = 0x20
+       ONOEOT                            = 0x8
+       OPOST                             = 0x1
+       O_ACCMODE                         = 0x3
+       O_ALERT                           = 0x20000000
+       O_APPEND                          = 0x8
+       O_ASYNC                           = 0x40
+       O_CLOEXEC                         = 0x1000000
+       O_CREAT                           = 0x200
+       O_DIRECTORY                       = 0x100000
+       O_DP_GETRAWENCRYPTED              = 0x1
+       O_DSYNC                           = 0x400000
+       O_EVTONLY                         = 0x8000
+       O_EXCL                            = 0x800
+       O_EXLOCK                          = 0x20
+       O_FSYNC                           = 0x80
+       O_NDELAY                          = 0x4
+       O_NOCTTY                          = 0x20000
+       O_NOFOLLOW                        = 0x100
+       O_NONBLOCK                        = 0x4
+       O_POPUP                           = 0x80000000
+       O_RDONLY                          = 0x0
+       O_RDWR                            = 0x2
+       O_SHLOCK                          = 0x10
+       O_SYMLINK                         = 0x200000
+       O_SYNC                            = 0x80
+       O_TRUNC                           = 0x400
+       O_WRONLY                          = 0x1
+       PARENB                            = 0x1000
+       PARMRK                            = 0x8
+       PARODD                            = 0x2000
+       PENDIN                            = 0x20000000
+       PRIO_PGRP                         = 0x1
+       PRIO_PROCESS                      = 0x0
+       PRIO_USER                         = 0x2
+       PROT_EXEC                         = 0x4
+       PROT_NONE                         = 0x0
+       PROT_READ                         = 0x1
+       PROT_WRITE                        = 0x2
+       PT_ATTACH                         = 0xa
+       PT_ATTACHEXC                      = 0xe
+       PT_CONTINUE                       = 0x7
+       PT_DENY_ATTACH                    = 0x1f
+       PT_DETACH                         = 0xb
+       PT_FIRSTMACH                      = 0x20
+       PT_FORCEQUOTA                     = 0x1e
+       PT_KILL                           = 0x8
+       PT_READ_D                         = 0x2
+       PT_READ_I                         = 0x1
+       PT_READ_U                         = 0x3
+       PT_SIGEXC                         = 0xc
+       PT_STEP                           = 0x9
+       PT_THUPDATE                       = 0xd
+       PT_TRACE_ME                       = 0x0
+       PT_WRITE_D                        = 0x5
+       PT_WRITE_I                        = 0x4
+       PT_WRITE_U                        = 0x6
+       RLIMIT_AS                         = 0x5
+       RLIMIT_CORE                       = 0x4
+       RLIMIT_CPU                        = 0x0
+       RLIMIT_CPU_USAGE_MONITOR          = 0x2
+       RLIMIT_DATA                       = 0x2
+       RLIMIT_FSIZE                      = 0x1
+       RLIMIT_NOFILE                     = 0x8
+       RLIMIT_STACK                      = 0x3
+       RLIM_INFINITY                     = 0x7fffffffffffffff
+       RTAX_AUTHOR                       = 0x6
+       RTAX_BRD                          = 0x7
+       RTAX_DST                          = 0x0
+       RTAX_GATEWAY                      = 0x1
+       RTAX_GENMASK                      = 0x3
+       RTAX_IFA                          = 0x5
+       RTAX_IFP                          = 0x4
+       RTAX_MAX                          = 0x8
+       RTAX_NETMASK                      = 0x2
+       RTA_AUTHOR                        = 0x40
+       RTA_BRD                           = 0x80
+       RTA_DST                           = 0x1
+       RTA_GATEWAY                       = 0x2
+       RTA_GENMASK                       = 0x8
+       RTA_IFA                           = 0x20
+       RTA_IFP                           = 0x10
+       RTA_NETMASK                       = 0x4
+       RTF_BLACKHOLE                     = 0x1000
+       RTF_BROADCAST                     = 0x400000
+       RTF_CLONING                       = 0x100
+       RTF_CONDEMNED                     = 0x2000000
+       RTF_DELCLONE                      = 0x80
+       RTF_DONE                          = 0x40
+       RTF_DYNAMIC                       = 0x10
+       RTF_GATEWAY                       = 0x2
+       RTF_HOST                          = 0x4
+       RTF_IFREF                         = 0x4000000
+       RTF_IFSCOPE                       = 0x1000000
+       RTF_LLINFO                        = 0x400
+       RTF_LOCAL                         = 0x200000
+       RTF_MODIFIED                      = 0x20
+       RTF_MULTICAST                     = 0x800000
+       RTF_NOIFREF                       = 0x2000
+       RTF_PINNED                        = 0x100000
+       RTF_PRCLONING                     = 0x10000
+       RTF_PROTO1                        = 0x8000
+       RTF_PROTO2                        = 0x4000
+       RTF_PROTO3                        = 0x40000
+       RTF_PROXY                         = 0x8000000
+       RTF_REJECT                        = 0x8
+       RTF_ROUTER                        = 0x10000000
+       RTF_STATIC                        = 0x800
+       RTF_UP                            = 0x1
+       RTF_WASCLONED                     = 0x20000
+       RTF_XRESOLVE                      = 0x200
+       RTM_ADD                           = 0x1
+       RTM_CHANGE                        = 0x3
+       RTM_DELADDR                       = 0xd
+       RTM_DELETE                        = 0x2
+       RTM_DELMADDR                      = 0x10
+       RTM_GET                           = 0x4
+       RTM_GET2                          = 0x14
+       RTM_IFINFO                        = 0xe
+       RTM_IFINFO2                       = 0x12
+       RTM_LOCK                          = 0x8
+       RTM_LOSING                        = 0x5
+       RTM_MISS                          = 0x7
+       RTM_NEWADDR                       = 0xc
+       RTM_NEWMADDR                      = 0xf
+       RTM_NEWMADDR2                     = 0x13
+       RTM_OLDADD                        = 0x9
+       RTM_OLDDEL                        = 0xa
+       RTM_REDIRECT                      = 0x6
+       RTM_RESOLVE                       = 0xb
+       RTM_RTTUNIT                       = 0xf4240
+       RTM_VERSION                       = 0x5
+       RTV_EXPIRE                        = 0x4
+       RTV_HOPCOUNT                      = 0x2
+       RTV_MTU                           = 0x1
+       RTV_RPIPE                         = 0x8
+       RTV_RTT                           = 0x40
+       RTV_RTTVAR                        = 0x80
+       RTV_SPIPE                         = 0x10
+       RTV_SSTHRESH                      = 0x20
+       RUSAGE_CHILDREN                   = -0x1
+       RUSAGE_SELF                       = 0x0
+       SCM_CREDS                         = 0x3
+       SCM_RIGHTS                        = 0x1
+       SCM_TIMESTAMP                     = 0x2
+       SCM_TIMESTAMP_MONOTONIC           = 0x4
+       SHUT_RD                           = 0x0
+       SHUT_RDWR                         = 0x2
+       SHUT_WR                           = 0x1
+       SIOCADDMULTI                      = 0x80206931
+       SIOCAIFADDR                       = 0x8040691a
+       SIOCARPIPLL                       = 0xc0206928
+       SIOCATMARK                        = 0x40047307
+       SIOCAUTOADDR                      = 0xc0206926
+       SIOCAUTONETMASK                   = 0x80206927
+       SIOCDELMULTI                      = 0x80206932
+       SIOCDIFADDR                       = 0x80206919
+       SIOCDIFPHYADDR                    = 0x80206941
+       SIOCGDRVSPEC                      = 0xc028697b
+       SIOCGETVLAN                       = 0xc020697f
+       SIOCGHIWAT                        = 0x40047301
+       SIOCGIFADDR                       = 0xc0206921
+       SIOCGIFALTMTU                     = 0xc0206948
+       SIOCGIFASYNCMAP                   = 0xc020697c
+       SIOCGIFBOND                       = 0xc0206947
+       SIOCGIFBRDADDR                    = 0xc0206923
+       SIOCGIFCAP                        = 0xc020695b
+       SIOCGIFCONF                       = 0xc00c6924
+       SIOCGIFDEVMTU                     = 0xc0206944
+       SIOCGIFDSTADDR                    = 0xc0206922
+       SIOCGIFFLAGS                      = 0xc0206911
+       SIOCGIFGENERIC                    = 0xc020693a
+       SIOCGIFKPI                        = 0xc0206987
+       SIOCGIFMAC                        = 0xc0206982
+       SIOCGIFMEDIA                      = 0xc02c6938
+       SIOCGIFMETRIC                     = 0xc0206917
+       SIOCGIFMTU                        = 0xc0206933
+       SIOCGIFNETMASK                    = 0xc0206925
+       SIOCGIFPDSTADDR                   = 0xc0206940
+       SIOCGIFPHYS                       = 0xc0206935
+       SIOCGIFPSRCADDR                   = 0xc020693f
+       SIOCGIFSTATUS                     = 0xc331693d
+       SIOCGIFVLAN                       = 0xc020697f
+       SIOCGIFWAKEFLAGS                  = 0xc0206988
+       SIOCGLOWAT                        = 0x40047303
+       SIOCGPGRP                         = 0x40047309
+       SIOCIFCREATE                      = 0xc0206978
+       SIOCIFCREATE2                     = 0xc020697a
+       SIOCIFDESTROY                     = 0x80206979
+       SIOCIFGCLONERS                    = 0xc0106981
+       SIOCRSLVMULTI                     = 0xc010693b
+       SIOCSDRVSPEC                      = 0x8028697b
+       SIOCSETVLAN                       = 0x8020697e
+       SIOCSHIWAT                        = 0x80047300
+       SIOCSIFADDR                       = 0x8020690c
+       SIOCSIFALTMTU                     = 0x80206945
+       SIOCSIFASYNCMAP                   = 0x8020697d
+       SIOCSIFBOND                       = 0x80206946
+       SIOCSIFBRDADDR                    = 0x80206913
+       SIOCSIFCAP                        = 0x8020695a
+       SIOCSIFDSTADDR                    = 0x8020690e
+       SIOCSIFFLAGS                      = 0x80206910
+       SIOCSIFGENERIC                    = 0x80206939
+       SIOCSIFKPI                        = 0x80206986
+       SIOCSIFLLADDR                     = 0x8020693c
+       SIOCSIFMAC                        = 0x80206983
+       SIOCSIFMEDIA                      = 0xc0206937
+       SIOCSIFMETRIC                     = 0x80206918
+       SIOCSIFMTU                        = 0x80206934
+       SIOCSIFNETMASK                    = 0x80206916
+       SIOCSIFPHYADDR                    = 0x8040693e
+       SIOCSIFPHYS                       = 0x80206936
+       SIOCSIFVLAN                       = 0x8020697e
+       SIOCSLOWAT                        = 0x80047302
+       SIOCSPGRP                         = 0x80047308
+       SOCK_DGRAM                        = 0x2
+       SOCK_MAXADDRLEN                   = 0xff
+       SOCK_RAW                          = 0x3
+       SOCK_RDM                          = 0x4
+       SOCK_SEQPACKET                    = 0x5
+       SOCK_STREAM                       = 0x1
+       SOL_SOCKET                        = 0xffff
+       SOMAXCONN                         = 0x80
+       SO_ACCEPTCONN                     = 0x2
+       SO_BROADCAST                      = 0x20
+       SO_DEBUG                          = 0x1
+       SO_DONTROUTE                      = 0x10
+       SO_DONTTRUNC                      = 0x2000
+       SO_ERROR                          = 0x1007
+       SO_KEEPALIVE                      = 0x8
+       SO_LABEL                          = 0x1010
+       SO_LINGER                         = 0x80
+       SO_LINGER_SEC                     = 0x1080
+       SO_NKE                            = 0x1021
+       SO_NOADDRERR                      = 0x1023
+       SO_NOSIGPIPE                      = 0x1022
+       SO_NOTIFYCONFLICT                 = 0x1026
+       SO_NP_EXTENSIONS                  = 0x1083
+       SO_NREAD                          = 0x1020
+       SO_NUMRCVPKT                      = 0x1112
+       SO_NWRITE                         = 0x1024
+       SO_OOBINLINE                      = 0x100
+       SO_PEERLABEL                      = 0x1011
+       SO_RANDOMPORT                     = 0x1082
+       SO_RCVBUF                         = 0x1002
+       SO_RCVLOWAT                       = 0x1004
+       SO_RCVTIMEO                       = 0x1006
+       SO_REUSEADDR                      = 0x4
+       SO_REUSEPORT                      = 0x200
+       SO_REUSESHAREUID                  = 0x1025
+       SO_SNDBUF                         = 0x1001
+       SO_SNDLOWAT                       = 0x1003
+       SO_SNDTIMEO                       = 0x1005
+       SO_TIMESTAMP                      = 0x400
+       SO_TIMESTAMP_MONOTONIC            = 0x800
+       SO_TYPE                           = 0x1008
+       SO_UPCALLCLOSEWAIT                = 0x1027
+       SO_USELOOPBACK                    = 0x40
+       SO_WANTMORE                       = 0x4000
+       SO_WANTOOBFLAG                    = 0x8000
+       S_IEXEC                           = 0x40
+       S_IFBLK                           = 0x6000
+       S_IFCHR                           = 0x2000
+       S_IFDIR                           = 0x4000
+       S_IFIFO                           = 0x1000
+       S_IFLNK                           = 0xa000
+       S_IFMT                            = 0xf000
+       S_IFREG                           = 0x8000
+       S_IFSOCK                          = 0xc000
+       S_IFWHT                           = 0xe000
+       S_IREAD                           = 0x100
+       S_IRGRP                           = 0x20
+       S_IROTH                           = 0x4
+       S_IRUSR                           = 0x100
+       S_IRWXG                           = 0x38
+       S_IRWXO                           = 0x7
+       S_IRWXU                           = 0x1c0
+       S_ISGID                           = 0x400
+       S_ISTXT                           = 0x200
+       S_ISUID                           = 0x800
+       S_ISVTX                           = 0x200
+       S_IWGRP                           = 0x10
+       S_IWOTH                           = 0x2
+       S_IWRITE                          = 0x80
+       S_IWUSR                           = 0x80
+       S_IXGRP                           = 0x8
+       S_IXOTH                           = 0x1
+       S_IXUSR                           = 0x40
+       TCIFLUSH                          = 0x1
+       TCIOFLUSH                         = 0x3
+       TCOFLUSH                          = 0x2
+       TCP_CONNECTIONTIMEOUT             = 0x20
+       TCP_ENABLE_ECN                    = 0x104
+       TCP_KEEPALIVE                     = 0x10
+       TCP_KEEPCNT                       = 0x102
+       TCP_KEEPINTVL                     = 0x101
+       TCP_MAXHLEN                       = 0x3c
+       TCP_MAXOLEN                       = 0x28
+       TCP_MAXSEG                        = 0x2
+       TCP_MAXWIN                        = 0xffff
+       TCP_MAX_SACK                      = 0x4
+       TCP_MAX_WINSHIFT                  = 0xe
+       TCP_MINMSS                        = 0xd8
+       TCP_MSS                           = 0x200
+       TCP_NODELAY                       = 0x1
+       TCP_NOOPT                         = 0x8
+       TCP_NOPUSH                        = 0x4
+       TCP_NOTSENT_LOWAT                 = 0x201
+       TCP_RXT_CONNDROPTIME              = 0x80
+       TCP_RXT_FINDROP                   = 0x100
+       TCP_SENDMOREACKS                  = 0x103
+       TCSAFLUSH                         = 0x2
+       TIOCCBRK                          = 0x2000747a
+       TIOCCDTR                          = 0x20007478
+       TIOCCONS                          = 0x80047462
+       TIOCDCDTIMESTAMP                  = 0x40107458
+       TIOCDRAIN                         = 0x2000745e
+       TIOCDSIMICROCODE                  = 0x20007455
+       TIOCEXCL                          = 0x2000740d
+       TIOCEXT                           = 0x80047460
+       TIOCFLUSH                         = 0x80047410
+       TIOCGDRAINWAIT                    = 0x40047456
+       TIOCGETA                          = 0x40487413
+       TIOCGETD                          = 0x4004741a
+       TIOCGPGRP                         = 0x40047477
+       TIOCGWINSZ                        = 0x40087468
+       TIOCIXOFF                         = 0x20007480
+       TIOCIXON                          = 0x20007481
+       TIOCMBIC                          = 0x8004746b
+       TIOCMBIS                          = 0x8004746c
+       TIOCMGDTRWAIT                     = 0x4004745a
+       TIOCMGET                          = 0x4004746a
+       TIOCMODG                          = 0x40047403
+       TIOCMODS                          = 0x80047404
+       TIOCMSDTRWAIT                     = 0x8004745b
+       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                      = 0x0
+       TIOCPKT_DOSTOP                    = 0x20
+       TIOCPKT_FLUSHREAD                 = 0x1
+       TIOCPKT_FLUSHWRITE                = 0x2
+       TIOCPKT_IOCTL                     = 0x40
+       TIOCPKT_NOSTOP                    = 0x10
+       TIOCPKT_START                     = 0x8
+       TIOCPKT_STOP                      = 0x4
+       TIOCPTYGNAME                      = 0x40807453
+       TIOCPTYGRANT                      = 0x20007454
+       TIOCPTYUNLK                       = 0x20007452
+       TIOCREMOTE                        = 0x80047469
+       TIOCSBRK                          = 0x2000747b
+       TIOCSCONS                         = 0x20007463
+       TIOCSCTTY                         = 0x20007461
+       TIOCSDRAINWAIT                    = 0x80047457
+       TIOCSDTR                          = 0x20007479
+       TIOCSETA                          = 0x80487414
+       TIOCSETAF                         = 0x80487416
+       TIOCSETAW                         = 0x80487415
+       TIOCSETD                          = 0x8004741b
+       TIOCSIG                           = 0x2000745f
+       TIOCSPGRP                         = 0x80047476
+       TIOCSTART                         = 0x2000746e
+       TIOCSTAT                          = 0x20007465
+       TIOCSTI                           = 0x80017472
+       TIOCSTOP                          = 0x2000746f
+       TIOCSWINSZ                        = 0x80087467
+       TIOCTIMESTAMP                     = 0x40107459
+       TIOCUCNTL                         = 0x80047466
+       TOSTOP                            = 0x400000
+       VDISCARD                          = 0xf
+       VDSUSP                            = 0xb
+       VEOF                              = 0x0
+       VEOL                              = 0x1
+       VEOL2                             = 0x2
+       VERASE                            = 0x3
+       VINTR                             = 0x8
+       VKILL                             = 0x5
+       VLNEXT                            = 0xe
+       VMIN                              = 0x10
+       VQUIT                             = 0x9
+       VREPRINT                          = 0x6
+       VSTART                            = 0xc
+       VSTATUS                           = 0x12
+       VSTOP                             = 0xd
+       VSUSP                             = 0xa
+       VT0                               = 0x0
+       VT1                               = 0x10000
+       VTDLY                             = 0x10000
+       VTIME                             = 0x11
+       VWERASE                           = 0x4
+       WCONTINUED                        = 0x10
+       WCOREFLAG                         = 0x80
+       WEXITED                           = 0x4
+       WNOHANG                           = 0x1
+       WNOWAIT                           = 0x20
+       WORDSIZE                          = 0x40
+       WSTOPPED                          = 0x8
+       WUNTRACED                         = 0x2
+)
+
+// Errors
+const (
+       E2BIG           = syscall.Errno(0x7)
+       EACCES          = syscall.Errno(0xd)
+       EADDRINUSE      = syscall.Errno(0x30)
+       EADDRNOTAVAIL   = syscall.Errno(0x31)
+       EAFNOSUPPORT    = syscall.Errno(0x2f)
+       EAGAIN          = syscall.Errno(0x23)
+       EALREADY        = syscall.Errno(0x25)
+       EAUTH           = syscall.Errno(0x50)
+       EBADARCH        = syscall.Errno(0x56)
+       EBADEXEC        = syscall.Errno(0x55)
+       EBADF           = syscall.Errno(0x9)
+       EBADMACHO       = syscall.Errno(0x58)
+       EBADMSG         = syscall.Errno(0x5e)
+       EBADRPC         = syscall.Errno(0x48)
+       EBUSY           = syscall.Errno(0x10)
+       ECANCELED       = syscall.Errno(0x59)
+       ECHILD          = syscall.Errno(0xa)
+       ECONNABORTED    = syscall.Errno(0x35)
+       ECONNREFUSED    = syscall.Errno(0x3d)
+       ECONNRESET      = syscall.Errno(0x36)
+       EDEADLK         = syscall.Errno(0xb)
+       EDESTADDRREQ    = syscall.Errno(0x27)
+       EDEVERR         = syscall.Errno(0x53)
+       EDOM            = syscall.Errno(0x21)
+       EDQUOT          = syscall.Errno(0x45)
+       EEXIST          = syscall.Errno(0x11)
+       EFAULT          = syscall.Errno(0xe)
+       EFBIG           = syscall.Errno(0x1b)
+       EFTYPE          = syscall.Errno(0x4f)
+       EHOSTDOWN       = syscall.Errno(0x40)
+       EHOSTUNREACH    = syscall.Errno(0x41)
+       EIDRM           = syscall.Errno(0x5a)
+       EILSEQ          = syscall.Errno(0x5c)
+       EINPROGRESS     = syscall.Errno(0x24)
+       EINTR           = syscall.Errno(0x4)
+       EINVAL          = syscall.Errno(0x16)
+       EIO             = syscall.Errno(0x5)
+       EISCONN         = syscall.Errno(0x38)
+       EISDIR          = syscall.Errno(0x15)
+       ELAST           = syscall.Errno(0x6a)
+       ELOOP           = syscall.Errno(0x3e)
+       EMFILE          = syscall.Errno(0x18)
+       EMLINK          = syscall.Errno(0x1f)
+       EMSGSIZE        = syscall.Errno(0x28)
+       EMULTIHOP       = syscall.Errno(0x5f)
+       ENAMETOOLONG    = syscall.Errno(0x3f)
+       ENEEDAUTH       = syscall.Errno(0x51)
+       ENETDOWN        = syscall.Errno(0x32)
+       ENETRESET       = syscall.Errno(0x34)
+       ENETUNREACH     = syscall.Errno(0x33)
+       ENFILE          = syscall.Errno(0x17)
+       ENOATTR         = syscall.Errno(0x5d)
+       ENOBUFS         = syscall.Errno(0x37)
+       ENODATA         = syscall.Errno(0x60)
+       ENODEV          = syscall.Errno(0x13)
+       ENOENT          = syscall.Errno(0x2)
+       ENOEXEC         = syscall.Errno(0x8)
+       ENOLCK          = syscall.Errno(0x4d)
+       ENOLINK         = syscall.Errno(0x61)
+       ENOMEM          = syscall.Errno(0xc)
+       ENOMSG          = syscall.Errno(0x5b)
+       ENOPOLICY       = syscall.Errno(0x67)
+       ENOPROTOOPT     = syscall.Errno(0x2a)
+       ENOSPC          = syscall.Errno(0x1c)
+       ENOSR           = syscall.Errno(0x62)
+       ENOSTR          = syscall.Errno(0x63)
+       ENOSYS          = syscall.Errno(0x4e)
+       ENOTBLK         = syscall.Errno(0xf)
+       ENOTCONN        = syscall.Errno(0x39)
+       ENOTDIR         = syscall.Errno(0x14)
+       ENOTEMPTY       = syscall.Errno(0x42)
+       ENOTRECOVERABLE = syscall.Errno(0x68)
+       ENOTSOCK        = syscall.Errno(0x26)
+       ENOTSUP         = syscall.Errno(0x2d)
+       ENOTTY          = syscall.Errno(0x19)
+       ENXIO           = syscall.Errno(0x6)
+       EOPNOTSUPP      = syscall.Errno(0x66)
+       EOVERFLOW       = syscall.Errno(0x54)
+       EOWNERDEAD      = syscall.Errno(0x69)
+       EPERM           = syscall.Errno(0x1)
+       EPFNOSUPPORT    = syscall.Errno(0x2e)
+       EPIPE           = syscall.Errno(0x20)
+       EPROCLIM        = syscall.Errno(0x43)
+       EPROCUNAVAIL    = syscall.Errno(0x4c)
+       EPROGMISMATCH   = syscall.Errno(0x4b)
+       EPROGUNAVAIL    = syscall.Errno(0x4a)
+       EPROTO          = syscall.Errno(0x64)
+       EPROTONOSUPPORT = syscall.Errno(0x2b)
+       EPROTOTYPE      = syscall.Errno(0x29)
+       EPWROFF         = syscall.Errno(0x52)
+       EQFULL          = syscall.Errno(0x6a)
+       ERANGE          = syscall.Errno(0x22)
+       EREMOTE         = syscall.Errno(0x47)
+       EROFS           = syscall.Errno(0x1e)
+       ERPCMISMATCH    = syscall.Errno(0x49)
+       ESHLIBVERS      = syscall.Errno(0x57)
+       ESHUTDOWN       = syscall.Errno(0x3a)
+       ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+       ESPIPE          = syscall.Errno(0x1d)
+       ESRCH           = syscall.Errno(0x3)
+       ESTALE          = syscall.Errno(0x46)
+       ETIME           = syscall.Errno(0x65)
+       ETIMEDOUT       = syscall.Errno(0x3c)
+       ETOOMANYREFS    = syscall.Errno(0x3b)
+       ETXTBSY         = syscall.Errno(0x1a)
+       EUSERS          = syscall.Errno(0x44)
+       EWOULDBLOCK     = syscall.Errno(0x23)
+       EXDEV           = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+       SIGABRT   = syscall.Signal(0x6)
+       SIGALRM   = syscall.Signal(0xe)
+       SIGBUS    = syscall.Signal(0xa)
+       SIGCHLD   = syscall.Signal(0x14)
+       SIGCONT   = syscall.Signal(0x13)
+       SIGEMT    = syscall.Signal(0x7)
+       SIGFPE    = syscall.Signal(0x8)
+       SIGHUP    = syscall.Signal(0x1)
+       SIGILL    = syscall.Signal(0x4)
+       SIGINFO   = syscall.Signal(0x1d)
+       SIGINT    = syscall.Signal(0x2)
+       SIGIO     = syscall.Signal(0x17)
+       SIGIOT    = syscall.Signal(0x6)
+       SIGKILL   = syscall.Signal(0x9)
+       SIGPIPE   = syscall.Signal(0xd)
+       SIGPROF   = syscall.Signal(0x1b)
+       SIGQUIT   = syscall.Signal(0x3)
+       SIGSEGV   = syscall.Signal(0xb)
+       SIGSTOP   = syscall.Signal(0x11)
+       SIGSYS    = syscall.Signal(0xc)
+       SIGTERM   = syscall.Signal(0xf)
+       SIGTRAP   = syscall.Signal(0x5)
+       SIGTSTP   = syscall.Signal(0x12)
+       SIGTTIN   = syscall.Signal(0x15)
+       SIGTTOU   = syscall.Signal(0x16)
+       SIGURG    = syscall.Signal(0x10)
+       SIGUSR1   = syscall.Signal(0x1e)
+       SIGUSR2   = syscall.Signal(0x1f)
+       SIGVTALRM = syscall.Signal(0x1a)
+       SIGWINCH  = syscall.Signal(0x1c)
+       SIGXCPU   = syscall.Signal(0x18)
+       SIGXFSZ   = syscall.Signal(0x19)
+)
+
+// 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:  "resource 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:  "operation 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:  "device power is off",
+       83:  "device error",
+       84:  "value too large to be stored in data type",
+       85:  "bad executable (or shared library)",
+       86:  "bad CPU type in executable",
+       87:  "shared library version mismatch",
+       88:  "malformed Mach-o file",
+       89:  "operation canceled",
+       90:  "identifier removed",
+       91:  "no message of desired type",
+       92:  "illegal byte sequence",
+       93:  "attribute not found",
+       94:  "bad message",
+       95:  "EMULTIHOP (Reserved)",
+       96:  "no message available on STREAM",
+       97:  "ENOLINK (Reserved)",
+       98:  "no STREAM resources",
+       99:  "not a STREAM",
+       100: "protocol error",
+       101: "STREAM ioctl timeout",
+       102: "operation not supported on socket",
+       103: "policy not found",
+       104: "state not recoverable",
+       105: "previous owner died",
+       106: "interface output queue is full",
+}
+
+// Signal table
+var signals = [...]string{
+       1:  "hangup",
+       2:  "interrupt",
+       3:  "quit",
+       4:  "illegal instruction",
+       5:  "trace/BPT trap",
+       6:  "abort trap",
+       7:  "EMT trap",
+       8:  "floating point exception",
+       9:  "killed",
+       10: "bus error",
+       11: "segmentation fault",
+       12: "bad system call",
+       13: "broken pipe",
+       14: "alarm clock",
+       15: "terminated",
+       16: "urgent I/O condition",
+       17: "suspended (signal)",
+       18: "suspended",
+       19: "continued",
+       20: "child exited",
+       21: "stopped (tty input)",
+       22: "stopped (tty output)",
+       23: "I/O possible",
+       24: "cputime limit exceeded",
+       25: "filesize limit exceeded",
+       26: "virtual timer expired",
+       27: "profiling timer expired",
+       28: "window size changes",
+       29: "information request",
+       30: "user defined signal 1",
+       31: "user defined signal 2",
+}
diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go
new file mode 100644 (file)
index 0000000..a410e88
--- /dev/null
@@ -0,0 +1,1293 @@
+// mkerrors.sh
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- _const.go
+
+// +build arm,darwin
+
+package unix
+
+import "syscall"
+
+const (
+       AF_APPLETALK                      = 0x10
+       AF_CCITT                          = 0xa
+       AF_CHAOS                          = 0x5
+       AF_CNT                            = 0x15
+       AF_COIP                           = 0x14
+       AF_DATAKIT                        = 0x9
+       AF_DECnet                         = 0xc
+       AF_DLI                            = 0xd
+       AF_E164                           = 0x1c
+       AF_ECMA                           = 0x8
+       AF_HYLINK                         = 0xf
+       AF_IEEE80211                      = 0x25
+       AF_IMPLINK                        = 0x3
+       AF_INET                           = 0x2
+       AF_INET6                          = 0x1e
+       AF_IPX                            = 0x17
+       AF_ISDN                           = 0x1c
+       AF_ISO                            = 0x7
+       AF_LAT                            = 0xe
+       AF_LINK                           = 0x12
+       AF_LOCAL                          = 0x1
+       AF_MAX                            = 0x28
+       AF_NATM                           = 0x1f
+       AF_NDRV                           = 0x1b
+       AF_NETBIOS                        = 0x21
+       AF_NS                             = 0x6
+       AF_OSI                            = 0x7
+       AF_PPP                            = 0x22
+       AF_PUP                            = 0x4
+       AF_RESERVED_36                    = 0x24
+       AF_ROUTE                          = 0x11
+       AF_SIP                            = 0x18
+       AF_SNA                            = 0xb
+       AF_SYSTEM                         = 0x20
+       AF_UNIX                           = 0x1
+       AF_UNSPEC                         = 0x0
+       AF_UTUN                           = 0x26
+       B0                                = 0x0
+       B110                              = 0x6e
+       B115200                           = 0x1c200
+       B1200                             = 0x4b0
+       B134                              = 0x86
+       B14400                            = 0x3840
+       B150                              = 0x96
+       B1800                             = 0x708
+       B19200                            = 0x4b00
+       B200                              = 0xc8
+       B230400                           = 0x38400
+       B2400                             = 0x960
+       B28800                            = 0x7080
+       B300                              = 0x12c
+       B38400                            = 0x9600
+       B4800                             = 0x12c0
+       B50                               = 0x32
+       B57600                            = 0xe100
+       B600                              = 0x258
+       B7200                             = 0x1c20
+       B75                               = 0x4b
+       B76800                            = 0x12c00
+       B9600                             = 0x2580
+       BIOCFLUSH                         = 0x20004268
+       BIOCGBLEN                         = 0x40044266
+       BIOCGDLT                          = 0x4004426a
+       BIOCGDLTLIST                      = 0xc00c4279
+       BIOCGETIF                         = 0x4020426b
+       BIOCGHDRCMPLT                     = 0x40044274
+       BIOCGRSIG                         = 0x40044272
+       BIOCGRTIMEOUT                     = 0x4010426e
+       BIOCGSEESENT                      = 0x40044276
+       BIOCGSTATS                        = 0x4008426f
+       BIOCIMMEDIATE                     = 0x80044270
+       BIOCPROMISC                       = 0x20004269
+       BIOCSBLEN                         = 0xc0044266
+       BIOCSDLT                          = 0x80044278
+       BIOCSETF                          = 0x80104267
+       BIOCSETIF                         = 0x8020426c
+       BIOCSHDRCMPLT                     = 0x80044275
+       BIOCSRSIG                         = 0x80044273
+       BIOCSRTIMEOUT                     = 0x8010426d
+       BIOCSSEESENT                      = 0x80044277
+       BIOCVERSION                       = 0x40044271
+       BPF_A                             = 0x10
+       BPF_ABS                           = 0x20
+       BPF_ADD                           = 0x0
+       BPF_ALIGNMENT                     = 0x4
+       BPF_ALU                           = 0x4
+       BPF_AND                           = 0x50
+       BPF_B                             = 0x10
+       BPF_DIV                           = 0x30
+       BPF_H                             = 0x8
+       BPF_IMM                           = 0x0
+       BPF_IND                           = 0x40
+       BPF_JA                            = 0x0
+       BPF_JEQ                           = 0x10
+       BPF_JGE                           = 0x30
+       BPF_JGT                           = 0x20
+       BPF_JMP                           = 0x5
+       BPF_JSET                          = 0x40
+       BPF_K                             = 0x0
+       BPF_LD                            = 0x0
+       BPF_LDX                           = 0x1
+       BPF_LEN                           = 0x80
+       BPF_LSH                           = 0x60
+       BPF_MAJOR_VERSION                 = 0x1
+       BPF_MAXBUFSIZE                    = 0x80000
+       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                           = 0x0
+       BPF_TXA                           = 0x80
+       BPF_W                             = 0x0
+       BPF_X                             = 0x8
+       BRKINT                            = 0x2
+       CFLUSH                            = 0xf
+       CLOCAL                            = 0x8000
+       CREAD                             = 0x800
+       CS5                               = 0x0
+       CS6                               = 0x100
+       CS7                               = 0x200
+       CS8                               = 0x300
+       CSIZE                             = 0x300
+       CSTART                            = 0x11
+       CSTATUS                           = 0x14
+       CSTOP                             = 0x13
+       CSTOPB                            = 0x400
+       CSUSP                             = 0x1a
+       CTL_MAXNAME                       = 0xc
+       CTL_NET                           = 0x4
+       DLT_APPLE_IP_OVER_IEEE1394        = 0x8a
+       DLT_ARCNET                        = 0x7
+       DLT_ATM_CLIP                      = 0x13
+       DLT_ATM_RFC1483                   = 0xb
+       DLT_AX25                          = 0x3
+       DLT_CHAOS                         = 0x5
+       DLT_CHDLC                         = 0x68
+       DLT_C_HDLC                        = 0x68
+       DLT_EN10MB                        = 0x1
+       DLT_EN3MB                         = 0x2
+       DLT_FDDI                          = 0xa
+       DLT_IEEE802                       = 0x6
+       DLT_IEEE802_11                    = 0x69
+       DLT_IEEE802_11_RADIO              = 0x7f
+       DLT_IEEE802_11_RADIO_AVS          = 0xa3
+       DLT_LINUX_SLL                     = 0x71
+       DLT_LOOP                          = 0x6c
+       DLT_NULL                          = 0x0
+       DLT_PFLOG                         = 0x75
+       DLT_PFSYNC                        = 0x12
+       DLT_PPP                           = 0x9
+       DLT_PPP_BSDOS                     = 0x10
+       DLT_PPP_SERIAL                    = 0x32
+       DLT_PRONET                        = 0x4
+       DLT_RAW                           = 0xc
+       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                        = 0x0
+       DT_WHT                            = 0xe
+       ECHO                              = 0x8
+       ECHOCTL                           = 0x40
+       ECHOE                             = 0x2
+       ECHOK                             = 0x4
+       ECHOKE                            = 0x1
+       ECHONL                            = 0x10
+       ECHOPRT                           = 0x20
+       EVFILT_AIO                        = -0x3
+       EVFILT_FS                         = -0x9
+       EVFILT_MACHPORT                   = -0x8
+       EVFILT_PROC                       = -0x5
+       EVFILT_READ                       = -0x1
+       EVFILT_SIGNAL                     = -0x6
+       EVFILT_SYSCOUNT                   = 0xe
+       EVFILT_THREADMARKER               = 0xe
+       EVFILT_TIMER                      = -0x7
+       EVFILT_USER                       = -0xa
+       EVFILT_VM                         = -0xc
+       EVFILT_VNODE                      = -0x4
+       EVFILT_WRITE                      = -0x2
+       EV_ADD                            = 0x1
+       EV_CLEAR                          = 0x20
+       EV_DELETE                         = 0x2
+       EV_DISABLE                        = 0x8
+       EV_DISPATCH                       = 0x80
+       EV_ENABLE                         = 0x4
+       EV_EOF                            = 0x8000
+       EV_ERROR                          = 0x4000
+       EV_FLAG0                          = 0x1000
+       EV_FLAG1                          = 0x2000
+       EV_ONESHOT                        = 0x10
+       EV_OOBAND                         = 0x2000
+       EV_POLL                           = 0x1000
+       EV_RECEIPT                        = 0x40
+       EV_SYSFLAGS                       = 0xf000
+       EXTA                              = 0x4b00
+       EXTB                              = 0x9600
+       EXTPROC                           = 0x800
+       FD_CLOEXEC                        = 0x1
+       FD_SETSIZE                        = 0x400
+       FLUSHO                            = 0x800000
+       F_ADDFILESIGS                     = 0x3d
+       F_ADDSIGS                         = 0x3b
+       F_ALLOCATEALL                     = 0x4
+       F_ALLOCATECONTIG                  = 0x2
+       F_CHKCLEAN                        = 0x29
+       F_DUPFD                           = 0x0
+       F_DUPFD_CLOEXEC                   = 0x43
+       F_FINDSIGS                        = 0x4e
+       F_FLUSH_DATA                      = 0x28
+       F_FREEZE_FS                       = 0x35
+       F_FULLFSYNC                       = 0x33
+       F_GETCODEDIR                      = 0x48
+       F_GETFD                           = 0x1
+       F_GETFL                           = 0x3
+       F_GETLK                           = 0x7
+       F_GETLKPID                        = 0x42
+       F_GETNOSIGPIPE                    = 0x4a
+       F_GETOWN                          = 0x5
+       F_GETPATH                         = 0x32
+       F_GETPATH_MTMINFO                 = 0x47
+       F_GETPROTECTIONCLASS              = 0x3f
+       F_GETPROTECTIONLEVEL              = 0x4d
+       F_GLOBAL_NOCACHE                  = 0x37
+       F_LOG2PHYS                        = 0x31
+       F_LOG2PHYS_EXT                    = 0x41
+       F_NOCACHE                         = 0x30
+       F_NODIRECT                        = 0x3e
+       F_OK                              = 0x0
+       F_PATHPKG_CHECK                   = 0x34
+       F_PEOFPOSMODE                     = 0x3
+       F_PREALLOCATE                     = 0x2a
+       F_RDADVISE                        = 0x2c
+       F_RDAHEAD                         = 0x2d
+       F_RDLCK                           = 0x1
+       F_SETBACKINGSTORE                 = 0x46
+       F_SETFD                           = 0x2
+       F_SETFL                           = 0x4
+       F_SETLK                           = 0x8
+       F_SETLKW                          = 0x9
+       F_SETLKWTIMEOUT                   = 0xa
+       F_SETNOSIGPIPE                    = 0x49
+       F_SETOWN                          = 0x6
+       F_SETPROTECTIONCLASS              = 0x40
+       F_SETSIZE                         = 0x2b
+       F_SINGLE_WRITER                   = 0x4c
+       F_THAW_FS                         = 0x36
+       F_TRANSCODEKEY                    = 0x4b
+       F_UNLCK                           = 0x2
+       F_VOLPOSMODE                      = 0x4
+       F_WRLCK                           = 0x3
+       HUPCL                             = 0x4000
+       ICANON                            = 0x100
+       ICMP6_FILTER                      = 0x12
+       ICRNL                             = 0x100
+       IEXTEN                            = 0x400
+       IFF_ALLMULTI                      = 0x200
+       IFF_ALTPHYS                       = 0x4000
+       IFF_BROADCAST                     = 0x2
+       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_AAL5                          = 0x31
+       IFT_ARCNET                        = 0x23
+       IFT_ARCNETPLUS                    = 0x24
+       IFT_ATM                           = 0x25
+       IFT_BRIDGE                        = 0xd1
+       IFT_CARP                          = 0xf8
+       IFT_CELLULAR                      = 0xff
+       IFT_CEPT                          = 0x13
+       IFT_DS3                           = 0x1e
+       IFT_ENC                           = 0xf4
+       IFT_EON                           = 0x19
+       IFT_ETHER                         = 0x6
+       IFT_FAITH                         = 0x38
+       IFT_FDDI                          = 0xf
+       IFT_FRELAY                        = 0x20
+       IFT_FRELAYDCE                     = 0x2c
+       IFT_GIF                           = 0x37
+       IFT_HDH1822                       = 0x3
+       IFT_HIPPI                         = 0x2f
+       IFT_HSSI                          = 0x2e
+       IFT_HY                            = 0xe
+       IFT_IEEE1394                      = 0x90
+       IFT_IEEE8023ADLAG                 = 0x88
+       IFT_ISDNBASIC                     = 0x14
+       IFT_ISDNPRIMARY                   = 0x15
+       IFT_ISO88022LLC                   = 0x29
+       IFT_ISO88023                      = 0x7
+       IFT_ISO88024                      = 0x8
+       IFT_ISO88025                      = 0x9
+       IFT_ISO88026                      = 0xa
+       IFT_L2VLAN                        = 0x87
+       IFT_LAPB                          = 0x10
+       IFT_LOCALTALK                     = 0x2a
+       IFT_LOOP                          = 0x18
+       IFT_MIOX25                        = 0x26
+       IFT_MODEM                         = 0x30
+       IFT_NSIP                          = 0x1b
+       IFT_OTHER                         = 0x1
+       IFT_P10                           = 0xc
+       IFT_P80                           = 0xd
+       IFT_PARA                          = 0x22
+       IFT_PDP                           = 0xff
+       IFT_PFLOG                         = 0xf5
+       IFT_PFSYNC                        = 0xf6
+       IFT_PPP                           = 0x17
+       IFT_PROPMUX                       = 0x36
+       IFT_PROPVIRTUAL                   = 0x35
+       IFT_PTPSERIAL                     = 0x16
+       IFT_RS232                         = 0x21
+       IFT_SDLC                          = 0x11
+       IFT_SIP                           = 0x1f
+       IFT_SLIP                          = 0x1c
+       IFT_SMDSDXI                       = 0x2b
+       IFT_SMDSICIP                      = 0x34
+       IFT_SONET                         = 0x27
+       IFT_SONETPATH                     = 0x32
+       IFT_SONETVT                       = 0x33
+       IFT_STARLAN                       = 0xb
+       IFT_STF                           = 0x39
+       IFT_T1                            = 0x12
+       IFT_ULTRA                         = 0x1d
+       IFT_V35                           = 0x2d
+       IFT_X25                           = 0x5
+       IFT_X25DDN                        = 0x4
+       IFT_X25PLE                        = 0x28
+       IFT_XETHER                        = 0x1a
+       IGNBRK                            = 0x1
+       IGNCR                             = 0x80
+       IGNPAR                            = 0x4
+       IMAXBEL                           = 0x2000
+       INLCR                             = 0x40
+       INPCK                             = 0x10
+       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_LINKLOCALNETNUM                = 0xa9fe0000
+       IN_LOOPBACKNET                    = 0x7f
+       IPPROTO_3PC                       = 0x22
+       IPPROTO_ADFS                      = 0x44
+       IPPROTO_AH                        = 0x33
+       IPPROTO_AHIP                      = 0x3d
+       IPPROTO_APES                      = 0x63
+       IPPROTO_ARGUS                     = 0xd
+       IPPROTO_AX25                      = 0x5d
+       IPPROTO_BHA                       = 0x31
+       IPPROTO_BLT                       = 0x1e
+       IPPROTO_BRSATMON                  = 0x4c
+       IPPROTO_CFTP                      = 0x3e
+       IPPROTO_CHAOS                     = 0x10
+       IPPROTO_CMTP                      = 0x26
+       IPPROTO_CPHB                      = 0x49
+       IPPROTO_CPNX                      = 0x48
+       IPPROTO_DDP                       = 0x25
+       IPPROTO_DGP                       = 0x56
+       IPPROTO_DIVERT                    = 0xfe
+       IPPROTO_DONE                      = 0x101
+       IPPROTO_DSTOPTS                   = 0x3c
+       IPPROTO_EGP                       = 0x8
+       IPPROTO_EMCON                     = 0xe
+       IPPROTO_ENCAP                     = 0x62
+       IPPROTO_EON                       = 0x50
+       IPPROTO_ESP                       = 0x32
+       IPPROTO_ETHERIP                   = 0x61
+       IPPROTO_FRAGMENT                  = 0x2c
+       IPPROTO_GGP                       = 0x3
+       IPPROTO_GMTP                      = 0x64
+       IPPROTO_GRE                       = 0x2f
+       IPPROTO_HELLO                     = 0x3f
+       IPPROTO_HMP                       = 0x14
+       IPPROTO_HOPOPTS                   = 0x0
+       IPPROTO_ICMP                      = 0x1
+       IPPROTO_ICMPV6                    = 0x3a
+       IPPROTO_IDP                       = 0x16
+       IPPROTO_IDPR                      = 0x23
+       IPPROTO_IDRP                      = 0x2d
+       IPPROTO_IGMP                      = 0x2
+       IPPROTO_IGP                       = 0x55
+       IPPROTO_IGRP                      = 0x58
+       IPPROTO_IL                        = 0x28
+       IPPROTO_INLSP                     = 0x34
+       IPPROTO_INP                       = 0x20
+       IPPROTO_IP                        = 0x0
+       IPPROTO_IPCOMP                    = 0x6c
+       IPPROTO_IPCV                      = 0x47
+       IPPROTO_IPEIP                     = 0x5e
+       IPPROTO_IPIP                      = 0x4
+       IPPROTO_IPPC                      = 0x43
+       IPPROTO_IPV4                      = 0x4
+       IPPROTO_IPV6                      = 0x29
+       IPPROTO_IRTP                      = 0x1c
+       IPPROTO_KRYPTOLAN                 = 0x41
+       IPPROTO_LARP                      = 0x5b
+       IPPROTO_LEAF1                     = 0x19
+       IPPROTO_LEAF2                     = 0x1a
+       IPPROTO_MAX                       = 0x100
+       IPPROTO_MAXID                     = 0x34
+       IPPROTO_MEAS                      = 0x13
+       IPPROTO_MHRP                      = 0x30
+       IPPROTO_MICP                      = 0x5f
+       IPPROTO_MTP                       = 0x5c
+       IPPROTO_MUX                       = 0x12
+       IPPROTO_ND                        = 0x4d
+       IPPROTO_NHRP                      = 0x36
+       IPPROTO_NONE                      = 0x3b
+       IPPROTO_NSP                       = 0x1f
+       IPPROTO_NVPII                     = 0xb
+       IPPROTO_OSPFIGP                   = 0x59
+       IPPROTO_PGM                       = 0x71
+       IPPROTO_PIGP                      = 0x9
+       IPPROTO_PIM                       = 0x67
+       IPPROTO_PRM                       = 0x15
+       IPPROTO_PUP                       = 0xc
+       IPPROTO_PVP                       = 0x4b
+       IPPROTO_RAW                       = 0xff
+       IPPROTO_RCCMON                    = 0xa
+       IPPROTO_RDP                       = 0x1b
+       IPPROTO_ROUTING                   = 0x2b
+       IPPROTO_RSVP                      = 0x2e
+       IPPROTO_RVD                       = 0x42
+       IPPROTO_SATEXPAK                  = 0x40
+       IPPROTO_SATMON                    = 0x45
+       IPPROTO_SCCSP                     = 0x60
+       IPPROTO_SCTP                      = 0x84
+       IPPROTO_SDRP                      = 0x2a
+       IPPROTO_SEP                       = 0x21
+       IPPROTO_SRPC                      = 0x5a
+       IPPROTO_ST                        = 0x7
+       IPPROTO_SVMTP                     = 0x52
+       IPPROTO_SWIPE                     = 0x35
+       IPPROTO_TCF                       = 0x57
+       IPPROTO_TCP                       = 0x6
+       IPPROTO_TP                        = 0x1d
+       IPPROTO_TPXX                      = 0x27
+       IPPROTO_TRUNK1                    = 0x17
+       IPPROTO_TRUNK2                    = 0x18
+       IPPROTO_TTP                       = 0x54
+       IPPROTO_UDP                       = 0x11
+       IPPROTO_VINES                     = 0x53
+       IPPROTO_VISA                      = 0x46
+       IPPROTO_VMTP                      = 0x51
+       IPPROTO_WBEXPAK                   = 0x4f
+       IPPROTO_WBMON                     = 0x4e
+       IPPROTO_WSN                       = 0x4a
+       IPPROTO_XNET                      = 0xf
+       IPPROTO_XTP                       = 0x24
+       IPV6_2292DSTOPTS                  = 0x17
+       IPV6_2292HOPLIMIT                 = 0x14
+       IPV6_2292HOPOPTS                  = 0x16
+       IPV6_2292NEXTHOP                  = 0x15
+       IPV6_2292PKTINFO                  = 0x13
+       IPV6_2292PKTOPTIONS               = 0x19
+       IPV6_2292RTHDR                    = 0x18
+       IPV6_BINDV6ONLY                   = 0x1b
+       IPV6_BOUND_IF                     = 0x7d
+       IPV6_CHECKSUM                     = 0x1a
+       IPV6_DEFAULT_MULTICAST_HOPS       = 0x1
+       IPV6_DEFAULT_MULTICAST_LOOP       = 0x1
+       IPV6_DEFHLIM                      = 0x40
+       IPV6_FAITH                        = 0x1d
+       IPV6_FLOWINFO_MASK                = 0xffffff0f
+       IPV6_FLOWLABEL_MASK               = 0xffff0f00
+       IPV6_FRAGTTL                      = 0x78
+       IPV6_FW_ADD                       = 0x1e
+       IPV6_FW_DEL                       = 0x1f
+       IPV6_FW_FLUSH                     = 0x20
+       IPV6_FW_GET                       = 0x22
+       IPV6_FW_ZERO                      = 0x21
+       IPV6_HLIMDEC                      = 0x1
+       IPV6_IPSEC_POLICY                 = 0x1c
+       IPV6_JOIN_GROUP                   = 0xc
+       IPV6_LEAVE_GROUP                  = 0xd
+       IPV6_MAXHLIM                      = 0xff
+       IPV6_MAXOPTHDR                    = 0x800
+       IPV6_MAXPACKET                    = 0xffff
+       IPV6_MAX_GROUP_SRC_FILTER         = 0x200
+       IPV6_MAX_MEMBERSHIPS              = 0xfff
+       IPV6_MAX_SOCK_SRC_FILTER          = 0x80
+       IPV6_MIN_MEMBERSHIPS              = 0x1f
+       IPV6_MMTU                         = 0x500
+       IPV6_MULTICAST_HOPS               = 0xa
+       IPV6_MULTICAST_IF                 = 0x9
+       IPV6_MULTICAST_LOOP               = 0xb
+       IPV6_PORTRANGE                    = 0xe
+       IPV6_PORTRANGE_DEFAULT            = 0x0
+       IPV6_PORTRANGE_HIGH               = 0x1
+       IPV6_PORTRANGE_LOW                = 0x2
+       IPV6_RECVTCLASS                   = 0x23
+       IPV6_RTHDR_LOOSE                  = 0x0
+       IPV6_RTHDR_STRICT                 = 0x1
+       IPV6_RTHDR_TYPE_0                 = 0x0
+       IPV6_SOCKOPT_RESERVED1            = 0x3
+       IPV6_TCLASS                       = 0x24
+       IPV6_UNICAST_HOPS                 = 0x4
+       IPV6_V6ONLY                       = 0x1b
+       IPV6_VERSION                      = 0x60
+       IPV6_VERSION_MASK                 = 0xf0
+       IP_ADD_MEMBERSHIP                 = 0xc
+       IP_ADD_SOURCE_MEMBERSHIP          = 0x46
+       IP_BLOCK_SOURCE                   = 0x48
+       IP_BOUND_IF                       = 0x19
+       IP_DEFAULT_MULTICAST_LOOP         = 0x1
+       IP_DEFAULT_MULTICAST_TTL          = 0x1
+       IP_DF                             = 0x4000
+       IP_DROP_MEMBERSHIP                = 0xd
+       IP_DROP_SOURCE_MEMBERSHIP         = 0x47
+       IP_DUMMYNET_CONFIGURE             = 0x3c
+       IP_DUMMYNET_DEL                   = 0x3d
+       IP_DUMMYNET_FLUSH                 = 0x3e
+       IP_DUMMYNET_GET                   = 0x40
+       IP_FAITH                          = 0x16
+       IP_FW_ADD                         = 0x28
+       IP_FW_DEL                         = 0x29
+       IP_FW_FLUSH                       = 0x2a
+       IP_FW_GET                         = 0x2c
+       IP_FW_RESETLOG                    = 0x2d
+       IP_FW_ZERO                        = 0x2b
+       IP_HDRINCL                        = 0x2
+       IP_IPSEC_POLICY                   = 0x15
+       IP_MAXPACKET                      = 0xffff
+       IP_MAX_GROUP_SRC_FILTER           = 0x200
+       IP_MAX_MEMBERSHIPS                = 0xfff
+       IP_MAX_SOCK_MUTE_FILTER           = 0x80
+       IP_MAX_SOCK_SRC_FILTER            = 0x80
+       IP_MF                             = 0x2000
+       IP_MIN_MEMBERSHIPS                = 0x1f
+       IP_MSFILTER                       = 0x4a
+       IP_MSS                            = 0x240
+       IP_MULTICAST_IF                   = 0x9
+       IP_MULTICAST_IFINDEX              = 0x42
+       IP_MULTICAST_LOOP                 = 0xb
+       IP_MULTICAST_TTL                  = 0xa
+       IP_MULTICAST_VIF                  = 0xe
+       IP_NAT__XXX                       = 0x37
+       IP_OFFMASK                        = 0x1fff
+       IP_OLD_FW_ADD                     = 0x32
+       IP_OLD_FW_DEL                     = 0x33
+       IP_OLD_FW_FLUSH                   = 0x34
+       IP_OLD_FW_GET                     = 0x36
+       IP_OLD_FW_RESETLOG                = 0x38
+       IP_OLD_FW_ZERO                    = 0x35
+       IP_OPTIONS                        = 0x1
+       IP_PKTINFO                        = 0x1a
+       IP_PORTRANGE                      = 0x13
+       IP_PORTRANGE_DEFAULT              = 0x0
+       IP_PORTRANGE_HIGH                 = 0x1
+       IP_PORTRANGE_LOW                  = 0x2
+       IP_RECVDSTADDR                    = 0x7
+       IP_RECVIF                         = 0x14
+       IP_RECVOPTS                       = 0x5
+       IP_RECVPKTINFO                    = 0x1a
+       IP_RECVRETOPTS                    = 0x6
+       IP_RECVTTL                        = 0x18
+       IP_RETOPTS                        = 0x8
+       IP_RF                             = 0x8000
+       IP_RSVP_OFF                       = 0x10
+       IP_RSVP_ON                        = 0xf
+       IP_RSVP_VIF_OFF                   = 0x12
+       IP_RSVP_VIF_ON                    = 0x11
+       IP_STRIPHDR                       = 0x17
+       IP_TOS                            = 0x3
+       IP_TRAFFIC_MGT_BACKGROUND         = 0x41
+       IP_TTL                            = 0x4
+       IP_UNBLOCK_SOURCE                 = 0x49
+       ISIG                              = 0x80
+       ISTRIP                            = 0x20
+       IUTF8                             = 0x4000
+       IXANY                             = 0x800
+       IXOFF                             = 0x400
+       IXON                              = 0x200
+       LOCK_EX                           = 0x2
+       LOCK_NB                           = 0x4
+       LOCK_SH                           = 0x1
+       LOCK_UN                           = 0x8
+       MADV_CAN_REUSE                    = 0x9
+       MADV_DONTNEED                     = 0x4
+       MADV_FREE                         = 0x5
+       MADV_FREE_REUSABLE                = 0x7
+       MADV_FREE_REUSE                   = 0x8
+       MADV_NORMAL                       = 0x0
+       MADV_RANDOM                       = 0x1
+       MADV_SEQUENTIAL                   = 0x2
+       MADV_WILLNEED                     = 0x3
+       MADV_ZERO_WIRED_PAGES             = 0x6
+       MAP_ANON                          = 0x1000
+       MAP_COPY                          = 0x2
+       MAP_FILE                          = 0x0
+       MAP_FIXED                         = 0x10
+       MAP_HASSEMAPHORE                  = 0x200
+       MAP_JIT                           = 0x800
+       MAP_NOCACHE                       = 0x400
+       MAP_NOEXTEND                      = 0x100
+       MAP_NORESERVE                     = 0x40
+       MAP_PRIVATE                       = 0x2
+       MAP_RENAME                        = 0x20
+       MAP_RESERVED0080                  = 0x80
+       MAP_SHARED                        = 0x1
+       MCL_CURRENT                       = 0x1
+       MCL_FUTURE                        = 0x2
+       MSG_CTRUNC                        = 0x20
+       MSG_DONTROUTE                     = 0x4
+       MSG_DONTWAIT                      = 0x80
+       MSG_EOF                           = 0x100
+       MSG_EOR                           = 0x8
+       MSG_FLUSH                         = 0x400
+       MSG_HAVEMORE                      = 0x2000
+       MSG_HOLD                          = 0x800
+       MSG_NEEDSA                        = 0x10000
+       MSG_OOB                           = 0x1
+       MSG_PEEK                          = 0x2
+       MSG_RCVMORE                       = 0x4000
+       MSG_SEND                          = 0x1000
+       MSG_TRUNC                         = 0x10
+       MSG_WAITALL                       = 0x40
+       MSG_WAITSTREAM                    = 0x200
+       MS_ASYNC                          = 0x1
+       MS_DEACTIVATE                     = 0x8
+       MS_INVALIDATE                     = 0x2
+       MS_KILLPAGES                      = 0x4
+       MS_SYNC                           = 0x10
+       NAME_MAX                          = 0xff
+       NET_RT_DUMP                       = 0x1
+       NET_RT_DUMP2                      = 0x7
+       NET_RT_FLAGS                      = 0x2
+       NET_RT_IFLIST                     = 0x3
+       NET_RT_IFLIST2                    = 0x6
+       NET_RT_MAXID                      = 0xa
+       NET_RT_STAT                       = 0x4
+       NET_RT_TRASH                      = 0x5
+       NOFLSH                            = 0x80000000
+       NOTE_ABSOLUTE                     = 0x8
+       NOTE_ATTRIB                       = 0x8
+       NOTE_BACKGROUND                   = 0x40
+       NOTE_CHILD                        = 0x4
+       NOTE_CRITICAL                     = 0x20
+       NOTE_DELETE                       = 0x1
+       NOTE_EXEC                         = 0x20000000
+       NOTE_EXIT                         = 0x80000000
+       NOTE_EXITSTATUS                   = 0x4000000
+       NOTE_EXIT_CSERROR                 = 0x40000
+       NOTE_EXIT_DECRYPTFAIL             = 0x10000
+       NOTE_EXIT_DETAIL                  = 0x2000000
+       NOTE_EXIT_DETAIL_MASK             = 0x70000
+       NOTE_EXIT_MEMORY                  = 0x20000
+       NOTE_EXIT_REPARENTED              = 0x80000
+       NOTE_EXTEND                       = 0x4
+       NOTE_FFAND                        = 0x40000000
+       NOTE_FFCOPY                       = 0xc0000000
+       NOTE_FFCTRLMASK                   = 0xc0000000
+       NOTE_FFLAGSMASK                   = 0xffffff
+       NOTE_FFNOP                        = 0x0
+       NOTE_FFOR                         = 0x80000000
+       NOTE_FORK                         = 0x40000000
+       NOTE_LEEWAY                       = 0x10
+       NOTE_LINK                         = 0x10
+       NOTE_LOWAT                        = 0x1
+       NOTE_NONE                         = 0x80
+       NOTE_NSECONDS                     = 0x4
+       NOTE_PCTRLMASK                    = -0x100000
+       NOTE_PDATAMASK                    = 0xfffff
+       NOTE_REAP                         = 0x10000000
+       NOTE_RENAME                       = 0x20
+       NOTE_REVOKE                       = 0x40
+       NOTE_SECONDS                      = 0x1
+       NOTE_SIGNAL                       = 0x8000000
+       NOTE_TRACK                        = 0x1
+       NOTE_TRACKERR                     = 0x2
+       NOTE_TRIGGER                      = 0x1000000
+       NOTE_USECONDS                     = 0x2
+       NOTE_VM_ERROR                     = 0x10000000
+       NOTE_VM_PRESSURE                  = 0x80000000
+       NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000
+       NOTE_VM_PRESSURE_TERMINATE        = 0x40000000
+       NOTE_WRITE                        = 0x2
+       OCRNL                             = 0x10
+       OFDEL                             = 0x20000
+       OFILL                             = 0x80
+       ONLCR                             = 0x2
+       ONLRET                            = 0x40
+       ONOCR                             = 0x20
+       ONOEOT                            = 0x8
+       OPOST                             = 0x1
+       O_ACCMODE                         = 0x3
+       O_ALERT                           = 0x20000000
+       O_APPEND                          = 0x8
+       O_ASYNC                           = 0x40
+       O_CLOEXEC                         = 0x1000000
+       O_CREAT                           = 0x200
+       O_DIRECTORY                       = 0x100000
+       O_DP_GETRAWENCRYPTED              = 0x1
+       O_DSYNC                           = 0x400000
+       O_EVTONLY                         = 0x8000
+       O_EXCL                            = 0x800
+       O_EXLOCK                          = 0x20
+       O_FSYNC                           = 0x80
+       O_NDELAY                          = 0x4
+       O_NOCTTY                          = 0x20000
+       O_NOFOLLOW                        = 0x100
+       O_NONBLOCK                        = 0x4
+       O_POPUP                           = 0x80000000
+       O_RDONLY                          = 0x0
+       O_RDWR                            = 0x2
+       O_SHLOCK                          = 0x10
+       O_SYMLINK                         = 0x200000
+       O_SYNC                            = 0x80
+       O_TRUNC                           = 0x400
+       O_WRONLY                          = 0x1
+       PARENB                            = 0x1000
+       PARMRK                            = 0x8
+       PARODD                            = 0x2000
+       PENDIN                            = 0x20000000
+       PRIO_PGRP                         = 0x1
+       PRIO_PROCESS                      = 0x0
+       PRIO_USER                         = 0x2
+       PROT_EXEC                         = 0x4
+       PROT_NONE                         = 0x0
+       PROT_READ                         = 0x1
+       PROT_WRITE                        = 0x2
+       PT_ATTACH                         = 0xa
+       PT_ATTACHEXC                      = 0xe
+       PT_CONTINUE                       = 0x7
+       PT_DENY_ATTACH                    = 0x1f
+       PT_DETACH                         = 0xb
+       PT_FIRSTMACH                      = 0x20
+       PT_FORCEQUOTA                     = 0x1e
+       PT_KILL                           = 0x8
+       PT_READ_D                         = 0x2
+       PT_READ_I                         = 0x1
+       PT_READ_U                         = 0x3
+       PT_SIGEXC                         = 0xc
+       PT_STEP                           = 0x9
+       PT_THUPDATE                       = 0xd
+       PT_TRACE_ME                       = 0x0
+       PT_WRITE_D                        = 0x5
+       PT_WRITE_I                        = 0x4
+       PT_WRITE_U                        = 0x6
+       RLIMIT_AS                         = 0x5
+       RLIMIT_CORE                       = 0x4
+       RLIMIT_CPU                        = 0x0
+       RLIMIT_CPU_USAGE_MONITOR          = 0x2
+       RLIMIT_DATA                       = 0x2
+       RLIMIT_FSIZE                      = 0x1
+       RLIMIT_NOFILE                     = 0x8
+       RLIMIT_STACK                      = 0x3
+       RLIM_INFINITY                     = 0x7fffffffffffffff
+       RTAX_AUTHOR                       = 0x6
+       RTAX_BRD                          = 0x7
+       RTAX_DST                          = 0x0
+       RTAX_GATEWAY                      = 0x1
+       RTAX_GENMASK                      = 0x3
+       RTAX_IFA                          = 0x5
+       RTAX_IFP                          = 0x4
+       RTAX_MAX                          = 0x8
+       RTAX_NETMASK                      = 0x2
+       RTA_AUTHOR                        = 0x40
+       RTA_BRD                           = 0x80
+       RTA_DST                           = 0x1
+       RTA_GATEWAY                       = 0x2
+       RTA_GENMASK                       = 0x8
+       RTA_IFA                           = 0x20
+       RTA_IFP                           = 0x10
+       RTA_NETMASK                       = 0x4
+       RTF_BLACKHOLE                     = 0x1000
+       RTF_BROADCAST                     = 0x400000
+       RTF_CLONING                       = 0x100
+       RTF_CONDEMNED                     = 0x2000000
+       RTF_DELCLONE                      = 0x80
+       RTF_DONE                          = 0x40
+       RTF_DYNAMIC                       = 0x10
+       RTF_GATEWAY                       = 0x2
+       RTF_HOST                          = 0x4
+       RTF_IFREF                         = 0x4000000
+       RTF_IFSCOPE                       = 0x1000000
+       RTF_LLINFO                        = 0x400
+       RTF_LOCAL                         = 0x200000
+       RTF_MODIFIED                      = 0x20
+       RTF_MULTICAST                     = 0x800000
+       RTF_PINNED                        = 0x100000
+       RTF_PRCLONING                     = 0x10000
+       RTF_PROTO1                        = 0x8000
+       RTF_PROTO2                        = 0x4000
+       RTF_PROTO3                        = 0x40000
+       RTF_PROXY                         = 0x8000000
+       RTF_REJECT                        = 0x8
+       RTF_ROUTER                        = 0x10000000
+       RTF_STATIC                        = 0x800
+       RTF_UP                            = 0x1
+       RTF_WASCLONED                     = 0x20000
+       RTF_XRESOLVE                      = 0x200
+       RTM_ADD                           = 0x1
+       RTM_CHANGE                        = 0x3
+       RTM_DELADDR                       = 0xd
+       RTM_DELETE                        = 0x2
+       RTM_DELMADDR                      = 0x10
+       RTM_GET                           = 0x4
+       RTM_GET2                          = 0x14
+       RTM_IFINFO                        = 0xe
+       RTM_IFINFO2                       = 0x12
+       RTM_LOCK                          = 0x8
+       RTM_LOSING                        = 0x5
+       RTM_MISS                          = 0x7
+       RTM_NEWADDR                       = 0xc
+       RTM_NEWMADDR                      = 0xf
+       RTM_NEWMADDR2                     = 0x13
+       RTM_OLDADD                        = 0x9
+       RTM_OLDDEL                        = 0xa
+       RTM_REDIRECT                      = 0x6
+       RTM_RESOLVE                       = 0xb
+       RTM_RTTUNIT                       = 0xf4240
+       RTM_VERSION                       = 0x5
+       RTV_EXPIRE                        = 0x4
+       RTV_HOPCOUNT                      = 0x2
+       RTV_MTU                           = 0x1
+       RTV_RPIPE                         = 0x8
+       RTV_RTT                           = 0x40
+       RTV_RTTVAR                        = 0x80
+       RTV_SPIPE                         = 0x10
+       RTV_SSTHRESH                      = 0x20
+       RUSAGE_CHILDREN                   = -0x1
+       RUSAGE_SELF                       = 0x0
+       SCM_CREDS                         = 0x3
+       SCM_RIGHTS                        = 0x1
+       SCM_TIMESTAMP                     = 0x2
+       SCM_TIMESTAMP_MONOTONIC           = 0x4
+       SHUT_RD                           = 0x0
+       SHUT_RDWR                         = 0x2
+       SHUT_WR                           = 0x1
+       SIOCADDMULTI                      = 0x80206931
+       SIOCAIFADDR                       = 0x8040691a
+       SIOCARPIPLL                       = 0xc0206928
+       SIOCATMARK                        = 0x40047307
+       SIOCAUTOADDR                      = 0xc0206926
+       SIOCAUTONETMASK                   = 0x80206927
+       SIOCDELMULTI                      = 0x80206932
+       SIOCDIFADDR                       = 0x80206919
+       SIOCDIFPHYADDR                    = 0x80206941
+       SIOCGDRVSPEC                      = 0xc028697b
+       SIOCGETVLAN                       = 0xc020697f
+       SIOCGHIWAT                        = 0x40047301
+       SIOCGIFADDR                       = 0xc0206921
+       SIOCGIFALTMTU                     = 0xc0206948
+       SIOCGIFASYNCMAP                   = 0xc020697c
+       SIOCGIFBOND                       = 0xc0206947
+       SIOCGIFBRDADDR                    = 0xc0206923
+       SIOCGIFCAP                        = 0xc020695b
+       SIOCGIFCONF                       = 0xc00c6924
+       SIOCGIFDEVMTU                     = 0xc0206944
+       SIOCGIFDSTADDR                    = 0xc0206922
+       SIOCGIFFLAGS                      = 0xc0206911
+       SIOCGIFGENERIC                    = 0xc020693a
+       SIOCGIFKPI                        = 0xc0206987
+       SIOCGIFMAC                        = 0xc0206982
+       SIOCGIFMEDIA                      = 0xc02c6938
+       SIOCGIFMETRIC                     = 0xc0206917
+       SIOCGIFMTU                        = 0xc0206933
+       SIOCGIFNETMASK                    = 0xc0206925
+       SIOCGIFPDSTADDR                   = 0xc0206940
+       SIOCGIFPHYS                       = 0xc0206935
+       SIOCGIFPSRCADDR                   = 0xc020693f
+       SIOCGIFSTATUS                     = 0xc331693d
+       SIOCGIFVLAN                       = 0xc020697f
+       SIOCGIFWAKEFLAGS                  = 0xc0206988
+       SIOCGLOWAT                        = 0x40047303
+       SIOCGPGRP                         = 0x40047309
+       SIOCIFCREATE                      = 0xc0206978
+       SIOCIFCREATE2                     = 0xc020697a
+       SIOCIFDESTROY                     = 0x80206979
+       SIOCIFGCLONERS                    = 0xc0106981
+       SIOCRSLVMULTI                     = 0xc010693b
+       SIOCSDRVSPEC                      = 0x8028697b
+       SIOCSETVLAN                       = 0x8020697e
+       SIOCSHIWAT                        = 0x80047300
+       SIOCSIFADDR                       = 0x8020690c
+       SIOCSIFALTMTU                     = 0x80206945
+       SIOCSIFASYNCMAP                   = 0x8020697d
+       SIOCSIFBOND                       = 0x80206946
+       SIOCSIFBRDADDR                    = 0x80206913
+       SIOCSIFCAP                        = 0x8020695a
+       SIOCSIFDSTADDR                    = 0x8020690e
+       SIOCSIFFLAGS                      = 0x80206910
+       SIOCSIFGENERIC                    = 0x80206939
+       SIOCSIFKPI                        = 0x80206986
+       SIOCSIFLLADDR                     = 0x8020693c
+       SIOCSIFMAC                        = 0x80206983
+       SIOCSIFMEDIA                      = 0xc0206937
+       SIOCSIFMETRIC                     = 0x80206918
+       SIOCSIFMTU                        = 0x80206934
+       SIOCSIFNETMASK                    = 0x80206916
+       SIOCSIFPHYADDR                    = 0x8040693e
+       SIOCSIFPHYS                       = 0x80206936
+       SIOCSIFVLAN                       = 0x8020697e
+       SIOCSLOWAT                        = 0x80047302
+       SIOCSPGRP                         = 0x80047308
+       SOCK_DGRAM                        = 0x2
+       SOCK_MAXADDRLEN                   = 0xff
+       SOCK_RAW                          = 0x3
+       SOCK_RDM                          = 0x4
+       SOCK_SEQPACKET                    = 0x5
+       SOCK_STREAM                       = 0x1
+       SOL_SOCKET                        = 0xffff
+       SOMAXCONN                         = 0x80
+       SO_ACCEPTCONN                     = 0x2
+       SO_BROADCAST                      = 0x20
+       SO_DEBUG                          = 0x1
+       SO_DONTROUTE                      = 0x10
+       SO_DONTTRUNC                      = 0x2000
+       SO_ERROR                          = 0x1007
+       SO_KEEPALIVE                      = 0x8
+       SO_LABEL                          = 0x1010
+       SO_LINGER                         = 0x80
+       SO_LINGER_SEC                     = 0x1080
+       SO_NKE                            = 0x1021
+       SO_NOADDRERR                      = 0x1023
+       SO_NOSIGPIPE                      = 0x1022
+       SO_NOTIFYCONFLICT                 = 0x1026
+       SO_NP_EXTENSIONS                  = 0x1083
+       SO_NREAD                          = 0x1020
+       SO_NUMRCVPKT                      = 0x1112
+       SO_NWRITE                         = 0x1024
+       SO_OOBINLINE                      = 0x100
+       SO_PEERLABEL                      = 0x1011
+       SO_RANDOMPORT                     = 0x1082
+       SO_RCVBUF                         = 0x1002
+       SO_RCVLOWAT                       = 0x1004
+       SO_RCVTIMEO                       = 0x1006
+       SO_REUSEADDR                      = 0x4
+       SO_REUSEPORT                      = 0x200
+       SO_REUSESHAREUID                  = 0x1025
+       SO_SNDBUF                         = 0x1001
+       SO_SNDLOWAT                       = 0x1003
+       SO_SNDTIMEO                       = 0x1005
+       SO_TIMESTAMP                      = 0x400
+       SO_TIMESTAMP_MONOTONIC            = 0x800
+       SO_TYPE                           = 0x1008
+       SO_UPCALLCLOSEWAIT                = 0x1027
+       SO_USELOOPBACK                    = 0x40
+       SO_WANTMORE                       = 0x4000
+       SO_WANTOOBFLAG                    = 0x8000
+       S_IEXEC                           = 0x40
+       S_IFBLK                           = 0x6000
+       S_IFCHR                           = 0x2000
+       S_IFDIR                           = 0x4000
+       S_IFIFO                           = 0x1000
+       S_IFLNK                           = 0xa000
+       S_IFMT                            = 0xf000
+       S_IFREG                           = 0x8000
+       S_IFSOCK                          = 0xc000
+       S_IFWHT                           = 0xe000
+       S_IREAD                           = 0x100
+       S_IRGRP                           = 0x20
+       S_IROTH                           = 0x4
+       S_IRUSR                           = 0x100
+       S_IRWXG                           = 0x38
+       S_IRWXO                           = 0x7
+       S_IRWXU                           = 0x1c0
+       S_ISGID                           = 0x400
+       S_ISTXT                           = 0x200
+       S_ISUID                           = 0x800
+       S_ISVTX                           = 0x200
+       S_IWGRP                           = 0x10
+       S_IWOTH                           = 0x2
+       S_IWRITE                          = 0x80
+       S_IWUSR                           = 0x80
+       S_IXGRP                           = 0x8
+       S_IXOTH                           = 0x1
+       S_IXUSR                           = 0x40
+       TCIFLUSH                          = 0x1
+       TCIOFLUSH                         = 0x3
+       TCOFLUSH                          = 0x2
+       TCP_CONNECTIONTIMEOUT             = 0x20
+       TCP_ENABLE_ECN                    = 0x104
+       TCP_KEEPALIVE                     = 0x10
+       TCP_KEEPCNT                       = 0x102
+       TCP_KEEPINTVL                     = 0x101
+       TCP_MAXHLEN                       = 0x3c
+       TCP_MAXOLEN                       = 0x28
+       TCP_MAXSEG                        = 0x2
+       TCP_MAXWIN                        = 0xffff
+       TCP_MAX_SACK                      = 0x4
+       TCP_MAX_WINSHIFT                  = 0xe
+       TCP_MINMSS                        = 0xd8
+       TCP_MSS                           = 0x200
+       TCP_NODELAY                       = 0x1
+       TCP_NOOPT                         = 0x8
+       TCP_NOPUSH                        = 0x4
+       TCP_NOTSENT_LOWAT                 = 0x201
+       TCP_RXT_CONNDROPTIME              = 0x80
+       TCP_RXT_FINDROP                   = 0x100
+       TCP_SENDMOREACKS                  = 0x103
+       TCSAFLUSH                         = 0x2
+       TIOCCBRK                          = 0x2000747a
+       TIOCCDTR                          = 0x20007478
+       TIOCCONS                          = 0x80047462
+       TIOCDCDTIMESTAMP                  = 0x40107458
+       TIOCDRAIN                         = 0x2000745e
+       TIOCDSIMICROCODE                  = 0x20007455
+       TIOCEXCL                          = 0x2000740d
+       TIOCEXT                           = 0x80047460
+       TIOCFLUSH                         = 0x80047410
+       TIOCGDRAINWAIT                    = 0x40047456
+       TIOCGETA                          = 0x40487413
+       TIOCGETD                          = 0x4004741a
+       TIOCGPGRP                         = 0x40047477
+       TIOCGWINSZ                        = 0x40087468
+       TIOCIXOFF                         = 0x20007480
+       TIOCIXON                          = 0x20007481
+       TIOCMBIC                          = 0x8004746b
+       TIOCMBIS                          = 0x8004746c
+       TIOCMGDTRWAIT                     = 0x4004745a
+       TIOCMGET                          = 0x4004746a
+       TIOCMODG                          = 0x40047403
+       TIOCMODS                          = 0x80047404
+       TIOCMSDTRWAIT                     = 0x8004745b
+       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                      = 0x0
+       TIOCPKT_DOSTOP                    = 0x20
+       TIOCPKT_FLUSHREAD                 = 0x1
+       TIOCPKT_FLUSHWRITE                = 0x2
+       TIOCPKT_IOCTL                     = 0x40
+       TIOCPKT_NOSTOP                    = 0x10
+       TIOCPKT_START                     = 0x8
+       TIOCPKT_STOP                      = 0x4
+       TIOCPTYGNAME                      = 0x40807453
+       TIOCPTYGRANT                      = 0x20007454
+       TIOCPTYUNLK                       = 0x20007452
+       TIOCREMOTE                        = 0x80047469
+       TIOCSBRK                          = 0x2000747b
+       TIOCSCONS                         = 0x20007463
+       TIOCSCTTY                         = 0x20007461
+       TIOCSDRAINWAIT                    = 0x80047457
+       TIOCSDTR                          = 0x20007479
+       TIOCSETA                          = 0x80487414
+       TIOCSETAF                         = 0x80487416
+       TIOCSETAW                         = 0x80487415
+       TIOCSETD                          = 0x8004741b
+       TIOCSIG                           = 0x2000745f
+       TIOCSPGRP                         = 0x80047476
+       TIOCSTART                         = 0x2000746e
+       TIOCSTAT                          = 0x20007465
+       TIOCSTI                           = 0x80017472
+       TIOCSTOP                          = 0x2000746f
+       TIOCSWINSZ                        = 0x80087467
+       TIOCTIMESTAMP                     = 0x40107459
+       TIOCUCNTL                         = 0x80047466
+       TOSTOP                            = 0x400000
+       VDISCARD                          = 0xf
+       VDSUSP                            = 0xb
+       VEOF                              = 0x0
+       VEOL                              = 0x1
+       VEOL2                             = 0x2
+       VERASE                            = 0x3
+       VINTR                             = 0x8
+       VKILL                             = 0x5
+       VLNEXT                            = 0xe
+       VMIN                              = 0x10
+       VQUIT                             = 0x9
+       VREPRINT                          = 0x6
+       VSTART                            = 0xc
+       VSTATUS                           = 0x12
+       VSTOP                             = 0xd
+       VSUSP                             = 0xa
+       VT0                               = 0x0
+       VT1                               = 0x10000
+       VTDLY                             = 0x10000
+       VTIME                             = 0x11
+       VWERASE                           = 0x4
+       WCONTINUED                        = 0x10
+       WCOREFLAG                         = 0x80
+       WEXITED                           = 0x4
+       WNOHANG                           = 0x1
+       WNOWAIT                           = 0x20
+       WORDSIZE                          = 0x40
+       WSTOPPED                          = 0x8
+       WUNTRACED                         = 0x2
+)
+
+// Errors
+const (
+       E2BIG           = syscall.Errno(0x7)
+       EACCES          = syscall.Errno(0xd)
+       EADDRINUSE      = syscall.Errno(0x30)
+       EADDRNOTAVAIL   = syscall.Errno(0x31)
+       EAFNOSUPPORT    = syscall.Errno(0x2f)
+       EAGAIN          = syscall.Errno(0x23)
+       EALREADY        = syscall.Errno(0x25)
+       EAUTH           = syscall.Errno(0x50)
+       EBADARCH        = syscall.Errno(0x56)
+       EBADEXEC        = syscall.Errno(0x55)
+       EBADF           = syscall.Errno(0x9)
+       EBADMACHO       = syscall.Errno(0x58)
+       EBADMSG         = syscall.Errno(0x5e)
+       EBADRPC         = syscall.Errno(0x48)
+       EBUSY           = syscall.Errno(0x10)
+       ECANCELED       = syscall.Errno(0x59)
+       ECHILD          = syscall.Errno(0xa)
+       ECONNABORTED    = syscall.Errno(0x35)
+       ECONNREFUSED    = syscall.Errno(0x3d)
+       ECONNRESET      = syscall.Errno(0x36)
+       EDEADLK         = syscall.Errno(0xb)
+       EDESTADDRREQ    = syscall.Errno(0x27)
+       EDEVERR         = syscall.Errno(0x53)
+       EDOM            = syscall.Errno(0x21)
+       EDQUOT          = syscall.Errno(0x45)
+       EEXIST          = syscall.Errno(0x11)
+       EFAULT          = syscall.Errno(0xe)
+       EFBIG           = syscall.Errno(0x1b)
+       EFTYPE          = syscall.Errno(0x4f)
+       EHOSTDOWN       = syscall.Errno(0x40)
+       EHOSTUNREACH    = syscall.Errno(0x41)
+       EIDRM           = syscall.Errno(0x5a)
+       EILSEQ          = syscall.Errno(0x5c)
+       EINPROGRESS     = syscall.Errno(0x24)
+       EINTR           = syscall.Errno(0x4)
+       EINVAL          = syscall.Errno(0x16)
+       EIO             = syscall.Errno(0x5)
+       EISCONN         = syscall.Errno(0x38)
+       EISDIR          = syscall.Errno(0x15)
+       ELAST           = syscall.Errno(0x6a)
+       ELOOP           = syscall.Errno(0x3e)
+       EMFILE          = syscall.Errno(0x18)
+       EMLINK          = syscall.Errno(0x1f)
+       EMSGSIZE        = syscall.Errno(0x28)
+       EMULTIHOP       = syscall.Errno(0x5f)
+       ENAMETOOLONG    = syscall.Errno(0x3f)
+       ENEEDAUTH       = syscall.Errno(0x51)
+       ENETDOWN        = syscall.Errno(0x32)
+       ENETRESET       = syscall.Errno(0x34)
+       ENETUNREACH     = syscall.Errno(0x33)
+       ENFILE          = syscall.Errno(0x17)
+       ENOATTR         = syscall.Errno(0x5d)
+       ENOBUFS         = syscall.Errno(0x37)
+       ENODATA         = syscall.Errno(0x60)
+       ENODEV          = syscall.Errno(0x13)
+       ENOENT          = syscall.Errno(0x2)
+       ENOEXEC         = syscall.Errno(0x8)
+       ENOLCK          = syscall.Errno(0x4d)
+       ENOLINK         = syscall.Errno(0x61)
+       ENOMEM          = syscall.Errno(0xc)
+       ENOMSG          = syscall.Errno(0x5b)
+       ENOPOLICY       = syscall.Errno(0x67)
+       ENOPROTOOPT     = syscall.Errno(0x2a)
+       ENOSPC          = syscall.Errno(0x1c)
+       ENOSR           = syscall.Errno(0x62)
+       ENOSTR          = syscall.Errno(0x63)
+       ENOSYS          = syscall.Errno(0x4e)
+       ENOTBLK         = syscall.Errno(0xf)
+       ENOTCONN        = syscall.Errno(0x39)
+       ENOTDIR         = syscall.Errno(0x14)
+       ENOTEMPTY       = syscall.Errno(0x42)
+       ENOTRECOVERABLE = syscall.Errno(0x68)
+       ENOTSOCK        = syscall.Errno(0x26)
+       ENOTSUP         = syscall.Errno(0x2d)
+       ENOTTY          = syscall.Errno(0x19)
+       ENXIO           = syscall.Errno(0x6)
+       EOPNOTSUPP      = syscall.Errno(0x66)
+       EOVERFLOW       = syscall.Errno(0x54)
+       EOWNERDEAD      = syscall.Errno(0x69)
+       EPERM           = syscall.Errno(0x1)
+       EPFNOSUPPORT    = syscall.Errno(0x2e)
+       EPIPE           = syscall.Errno(0x20)
+       EPROCLIM        = syscall.Errno(0x43)
+       EPROCUNAVAIL    = syscall.Errno(0x4c)
+       EPROGMISMATCH   = syscall.Errno(0x4b)
+       EPROGUNAVAIL    = syscall.Errno(0x4a)
+       EPROTO          = syscall.Errno(0x64)
+       EPROTONOSUPPORT = syscall.Errno(0x2b)
+       EPROTOTYPE      = syscall.Errno(0x29)
+       EPWROFF         = syscall.Errno(0x52)
+       EQFULL          = syscall.Errno(0x6a)
+       ERANGE          = syscall.Errno(0x22)
+       EREMOTE         = syscall.Errno(0x47)
+       EROFS           = syscall.Errno(0x1e)
+       ERPCMISMATCH    = syscall.Errno(0x49)
+       ESHLIBVERS      = syscall.Errno(0x57)
+       ESHUTDOWN       = syscall.Errno(0x3a)
+       ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+       ESPIPE          = syscall.Errno(0x1d)
+       ESRCH           = syscall.Errno(0x3)
+       ESTALE          = syscall.Errno(0x46)
+       ETIME           = syscall.Errno(0x65)
+       ETIMEDOUT       = syscall.Errno(0x3c)
+       ETOOMANYREFS    = syscall.Errno(0x3b)
+       ETXTBSY         = syscall.Errno(0x1a)
+       EUSERS          = syscall.Errno(0x44)
+       EWOULDBLOCK     = syscall.Errno(0x23)
+       EXDEV           = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+       SIGABRT   = syscall.Signal(0x6)
+       SIGALRM   = syscall.Signal(0xe)
+       SIGBUS    = syscall.Signal(0xa)
+       SIGCHLD   = syscall.Signal(0x14)
+       SIGCONT   = syscall.Signal(0x13)
+       SIGEMT    = syscall.Signal(0x7)
+       SIGFPE    = syscall.Signal(0x8)
+       SIGHUP    = syscall.Signal(0x1)
+       SIGILL    = syscall.Signal(0x4)
+       SIGINFO   = syscall.Signal(0x1d)
+       SIGINT    = syscall.Signal(0x2)
+       SIGIO     = syscall.Signal(0x17)
+       SIGIOT    = syscall.Signal(0x6)
+       SIGKILL   = syscall.Signal(0x9)
+       SIGPIPE   = syscall.Signal(0xd)
+       SIGPROF   = syscall.Signal(0x1b)
+       SIGQUIT   = syscall.Signal(0x3)
+       SIGSEGV   = syscall.Signal(0xb)
+       SIGSTOP   = syscall.Signal(0x11)
+       SIGSYS    = syscall.Signal(0xc)
+       SIGTERM   = syscall.Signal(0xf)
+       SIGTRAP   = syscall.Signal(0x5)
+       SIGTSTP   = syscall.Signal(0x12)
+       SIGTTIN   = syscall.Signal(0x15)
+       SIGTTOU   = syscall.Signal(0x16)
+       SIGURG    = syscall.Signal(0x10)
+       SIGUSR1   = syscall.Signal(0x1e)
+       SIGUSR2   = syscall.Signal(0x1f)
+       SIGVTALRM = syscall.Signal(0x1a)
+       SIGWINCH  = syscall.Signal(0x1c)
+       SIGXCPU   = syscall.Signal(0x18)
+       SIGXFSZ   = syscall.Signal(0x19)
+)
diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go
new file mode 100644 (file)
index 0000000..3189c6b
--- /dev/null
@@ -0,0 +1,1576 @@
+// mkerrors.sh -m64
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build arm64,darwin
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m64 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+       AF_APPLETALK                      = 0x10
+       AF_CCITT                          = 0xa
+       AF_CHAOS                          = 0x5
+       AF_CNT                            = 0x15
+       AF_COIP                           = 0x14
+       AF_DATAKIT                        = 0x9
+       AF_DECnet                         = 0xc
+       AF_DLI                            = 0xd
+       AF_E164                           = 0x1c
+       AF_ECMA                           = 0x8
+       AF_HYLINK                         = 0xf
+       AF_IEEE80211                      = 0x25
+       AF_IMPLINK                        = 0x3
+       AF_INET                           = 0x2
+       AF_INET6                          = 0x1e
+       AF_IPX                            = 0x17
+       AF_ISDN                           = 0x1c
+       AF_ISO                            = 0x7
+       AF_LAT                            = 0xe
+       AF_LINK                           = 0x12
+       AF_LOCAL                          = 0x1
+       AF_MAX                            = 0x28
+       AF_NATM                           = 0x1f
+       AF_NDRV                           = 0x1b
+       AF_NETBIOS                        = 0x21
+       AF_NS                             = 0x6
+       AF_OSI                            = 0x7
+       AF_PPP                            = 0x22
+       AF_PUP                            = 0x4
+       AF_RESERVED_36                    = 0x24
+       AF_ROUTE                          = 0x11
+       AF_SIP                            = 0x18
+       AF_SNA                            = 0xb
+       AF_SYSTEM                         = 0x20
+       AF_UNIX                           = 0x1
+       AF_UNSPEC                         = 0x0
+       AF_UTUN                           = 0x26
+       B0                                = 0x0
+       B110                              = 0x6e
+       B115200                           = 0x1c200
+       B1200                             = 0x4b0
+       B134                              = 0x86
+       B14400                            = 0x3840
+       B150                              = 0x96
+       B1800                             = 0x708
+       B19200                            = 0x4b00
+       B200                              = 0xc8
+       B230400                           = 0x38400
+       B2400                             = 0x960
+       B28800                            = 0x7080
+       B300                              = 0x12c
+       B38400                            = 0x9600
+       B4800                             = 0x12c0
+       B50                               = 0x32
+       B57600                            = 0xe100
+       B600                              = 0x258
+       B7200                             = 0x1c20
+       B75                               = 0x4b
+       B76800                            = 0x12c00
+       B9600                             = 0x2580
+       BIOCFLUSH                         = 0x20004268
+       BIOCGBLEN                         = 0x40044266
+       BIOCGDLT                          = 0x4004426a
+       BIOCGDLTLIST                      = 0xc00c4279
+       BIOCGETIF                         = 0x4020426b
+       BIOCGHDRCMPLT                     = 0x40044274
+       BIOCGRSIG                         = 0x40044272
+       BIOCGRTIMEOUT                     = 0x4010426e
+       BIOCGSEESENT                      = 0x40044276
+       BIOCGSTATS                        = 0x4008426f
+       BIOCIMMEDIATE                     = 0x80044270
+       BIOCPROMISC                       = 0x20004269
+       BIOCSBLEN                         = 0xc0044266
+       BIOCSDLT                          = 0x80044278
+       BIOCSETF                          = 0x80104267
+       BIOCSETFNR                        = 0x8010427e
+       BIOCSETIF                         = 0x8020426c
+       BIOCSHDRCMPLT                     = 0x80044275
+       BIOCSRSIG                         = 0x80044273
+       BIOCSRTIMEOUT                     = 0x8010426d
+       BIOCSSEESENT                      = 0x80044277
+       BIOCVERSION                       = 0x40044271
+       BPF_A                             = 0x10
+       BPF_ABS                           = 0x20
+       BPF_ADD                           = 0x0
+       BPF_ALIGNMENT                     = 0x4
+       BPF_ALU                           = 0x4
+       BPF_AND                           = 0x50
+       BPF_B                             = 0x10
+       BPF_DIV                           = 0x30
+       BPF_H                             = 0x8
+       BPF_IMM                           = 0x0
+       BPF_IND                           = 0x40
+       BPF_JA                            = 0x0
+       BPF_JEQ                           = 0x10
+       BPF_JGE                           = 0x30
+       BPF_JGT                           = 0x20
+       BPF_JMP                           = 0x5
+       BPF_JSET                          = 0x40
+       BPF_K                             = 0x0
+       BPF_LD                            = 0x0
+       BPF_LDX                           = 0x1
+       BPF_LEN                           = 0x80
+       BPF_LSH                           = 0x60
+       BPF_MAJOR_VERSION                 = 0x1
+       BPF_MAXBUFSIZE                    = 0x80000
+       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                           = 0x0
+       BPF_TXA                           = 0x80
+       BPF_W                             = 0x0
+       BPF_X                             = 0x8
+       BRKINT                            = 0x2
+       CFLUSH                            = 0xf
+       CLOCAL                            = 0x8000
+       CREAD                             = 0x800
+       CS5                               = 0x0
+       CS6                               = 0x100
+       CS7                               = 0x200
+       CS8                               = 0x300
+       CSIZE                             = 0x300
+       CSTART                            = 0x11
+       CSTATUS                           = 0x14
+       CSTOP                             = 0x13
+       CSTOPB                            = 0x400
+       CSUSP                             = 0x1a
+       CTL_MAXNAME                       = 0xc
+       CTL_NET                           = 0x4
+       DLT_A429                          = 0xb8
+       DLT_A653_ICM                      = 0xb9
+       DLT_AIRONET_HEADER                = 0x78
+       DLT_AOS                           = 0xde
+       DLT_APPLE_IP_OVER_IEEE1394        = 0x8a
+       DLT_ARCNET                        = 0x7
+       DLT_ARCNET_LINUX                  = 0x81
+       DLT_ATM_CLIP                      = 0x13
+       DLT_ATM_RFC1483                   = 0xb
+       DLT_AURORA                        = 0x7e
+       DLT_AX25                          = 0x3
+       DLT_AX25_KISS                     = 0xca
+       DLT_BACNET_MS_TP                  = 0xa5
+       DLT_BLUETOOTH_HCI_H4              = 0xbb
+       DLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9
+       DLT_CAN20B                        = 0xbe
+       DLT_CAN_SOCKETCAN                 = 0xe3
+       DLT_CHAOS                         = 0x5
+       DLT_CHDLC                         = 0x68
+       DLT_CISCO_IOS                     = 0x76
+       DLT_C_HDLC                        = 0x68
+       DLT_C_HDLC_WITH_DIR               = 0xcd
+       DLT_DBUS                          = 0xe7
+       DLT_DECT                          = 0xdd
+       DLT_DOCSIS                        = 0x8f
+       DLT_DVB_CI                        = 0xeb
+       DLT_ECONET                        = 0x73
+       DLT_EN10MB                        = 0x1
+       DLT_EN3MB                         = 0x2
+       DLT_ENC                           = 0x6d
+       DLT_ERF                           = 0xc5
+       DLT_ERF_ETH                       = 0xaf
+       DLT_ERF_POS                       = 0xb0
+       DLT_FC_2                          = 0xe0
+       DLT_FC_2_WITH_FRAME_DELIMS        = 0xe1
+       DLT_FDDI                          = 0xa
+       DLT_FLEXRAY                       = 0xd2
+       DLT_FRELAY                        = 0x6b
+       DLT_FRELAY_WITH_DIR               = 0xce
+       DLT_GCOM_SERIAL                   = 0xad
+       DLT_GCOM_T1E1                     = 0xac
+       DLT_GPF_F                         = 0xab
+       DLT_GPF_T                         = 0xaa
+       DLT_GPRS_LLC                      = 0xa9
+       DLT_GSMTAP_ABIS                   = 0xda
+       DLT_GSMTAP_UM                     = 0xd9
+       DLT_HHDLC                         = 0x79
+       DLT_IBM_SN                        = 0x92
+       DLT_IBM_SP                        = 0x91
+       DLT_IEEE802                       = 0x6
+       DLT_IEEE802_11                    = 0x69
+       DLT_IEEE802_11_RADIO              = 0x7f
+       DLT_IEEE802_11_RADIO_AVS          = 0xa3
+       DLT_IEEE802_15_4                  = 0xc3
+       DLT_IEEE802_15_4_LINUX            = 0xbf
+       DLT_IEEE802_15_4_NOFCS            = 0xe6
+       DLT_IEEE802_15_4_NONASK_PHY       = 0xd7
+       DLT_IEEE802_16_MAC_CPS            = 0xbc
+       DLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1
+       DLT_IPFILTER                      = 0x74
+       DLT_IPMB                          = 0xc7
+       DLT_IPMB_LINUX                    = 0xd1
+       DLT_IPNET                         = 0xe2
+       DLT_IPOIB                         = 0xf2
+       DLT_IPV4                          = 0xe4
+       DLT_IPV6                          = 0xe5
+       DLT_IP_OVER_FC                    = 0x7a
+       DLT_JUNIPER_ATM1                  = 0x89
+       DLT_JUNIPER_ATM2                  = 0x87
+       DLT_JUNIPER_ATM_CEMIC             = 0xee
+       DLT_JUNIPER_CHDLC                 = 0xb5
+       DLT_JUNIPER_ES                    = 0x84
+       DLT_JUNIPER_ETHER                 = 0xb2
+       DLT_JUNIPER_FIBRECHANNEL          = 0xea
+       DLT_JUNIPER_FRELAY                = 0xb4
+       DLT_JUNIPER_GGSN                  = 0x85
+       DLT_JUNIPER_ISM                   = 0xc2
+       DLT_JUNIPER_MFR                   = 0x86
+       DLT_JUNIPER_MLFR                  = 0x83
+       DLT_JUNIPER_MLPPP                 = 0x82
+       DLT_JUNIPER_MONITOR               = 0xa4
+       DLT_JUNIPER_PIC_PEER              = 0xae
+       DLT_JUNIPER_PPP                   = 0xb3
+       DLT_JUNIPER_PPPOE                 = 0xa7
+       DLT_JUNIPER_PPPOE_ATM             = 0xa8
+       DLT_JUNIPER_SERVICES              = 0x88
+       DLT_JUNIPER_SRX_E2E               = 0xe9
+       DLT_JUNIPER_ST                    = 0xc8
+       DLT_JUNIPER_VP                    = 0xb7
+       DLT_JUNIPER_VS                    = 0xe8
+       DLT_LAPB_WITH_DIR                 = 0xcf
+       DLT_LAPD                          = 0xcb
+       DLT_LIN                           = 0xd4
+       DLT_LINUX_EVDEV                   = 0xd8
+       DLT_LINUX_IRDA                    = 0x90
+       DLT_LINUX_LAPD                    = 0xb1
+       DLT_LINUX_PPP_WITHDIRECTION       = 0xa6
+       DLT_LINUX_SLL                     = 0x71
+       DLT_LOOP                          = 0x6c
+       DLT_LTALK                         = 0x72
+       DLT_MATCHING_MAX                  = 0xf5
+       DLT_MATCHING_MIN                  = 0x68
+       DLT_MFR                           = 0xb6
+       DLT_MOST                          = 0xd3
+       DLT_MPEG_2_TS                     = 0xf3
+       DLT_MPLS                          = 0xdb
+       DLT_MTP2                          = 0x8c
+       DLT_MTP2_WITH_PHDR                = 0x8b
+       DLT_MTP3                          = 0x8d
+       DLT_MUX27010                      = 0xec
+       DLT_NETANALYZER                   = 0xf0
+       DLT_NETANALYZER_TRANSPARENT       = 0xf1
+       DLT_NFC_LLCP                      = 0xf5
+       DLT_NFLOG                         = 0xef
+       DLT_NG40                          = 0xf4
+       DLT_NULL                          = 0x0
+       DLT_PCI_EXP                       = 0x7d
+       DLT_PFLOG                         = 0x75
+       DLT_PFSYNC                        = 0x12
+       DLT_PPI                           = 0xc0
+       DLT_PPP                           = 0x9
+       DLT_PPP_BSDOS                     = 0x10
+       DLT_PPP_ETHER                     = 0x33
+       DLT_PPP_PPPD                      = 0xa6
+       DLT_PPP_SERIAL                    = 0x32
+       DLT_PPP_WITH_DIR                  = 0xcc
+       DLT_PPP_WITH_DIRECTION            = 0xa6
+       DLT_PRISM_HEADER                  = 0x77
+       DLT_PRONET                        = 0x4
+       DLT_RAIF1                         = 0xc6
+       DLT_RAW                           = 0xc
+       DLT_RIO                           = 0x7c
+       DLT_SCCP                          = 0x8e
+       DLT_SITA                          = 0xc4
+       DLT_SLIP                          = 0x8
+       DLT_SLIP_BSDOS                    = 0xf
+       DLT_STANAG_5066_D_PDU             = 0xed
+       DLT_SUNATM                        = 0x7b
+       DLT_SYMANTEC_FIREWALL             = 0x63
+       DLT_TZSP                          = 0x80
+       DLT_USB                           = 0xba
+       DLT_USB_LINUX                     = 0xbd
+       DLT_USB_LINUX_MMAPPED             = 0xdc
+       DLT_USER0                         = 0x93
+       DLT_USER1                         = 0x94
+       DLT_USER10                        = 0x9d
+       DLT_USER11                        = 0x9e
+       DLT_USER12                        = 0x9f
+       DLT_USER13                        = 0xa0
+       DLT_USER14                        = 0xa1
+       DLT_USER15                        = 0xa2
+       DLT_USER2                         = 0x95
+       DLT_USER3                         = 0x96
+       DLT_USER4                         = 0x97
+       DLT_USER5                         = 0x98
+       DLT_USER6                         = 0x99
+       DLT_USER7                         = 0x9a
+       DLT_USER8                         = 0x9b
+       DLT_USER9                         = 0x9c
+       DLT_WIHART                        = 0xdf
+       DLT_X2E_SERIAL                    = 0xd5
+       DLT_X2E_XORAYA                    = 0xd6
+       DT_BLK                            = 0x6
+       DT_CHR                            = 0x2
+       DT_DIR                            = 0x4
+       DT_FIFO                           = 0x1
+       DT_LNK                            = 0xa
+       DT_REG                            = 0x8
+       DT_SOCK                           = 0xc
+       DT_UNKNOWN                        = 0x0
+       DT_WHT                            = 0xe
+       ECHO                              = 0x8
+       ECHOCTL                           = 0x40
+       ECHOE                             = 0x2
+       ECHOK                             = 0x4
+       ECHOKE                            = 0x1
+       ECHONL                            = 0x10
+       ECHOPRT                           = 0x20
+       EVFILT_AIO                        = -0x3
+       EVFILT_FS                         = -0x9
+       EVFILT_MACHPORT                   = -0x8
+       EVFILT_PROC                       = -0x5
+       EVFILT_READ                       = -0x1
+       EVFILT_SIGNAL                     = -0x6
+       EVFILT_SYSCOUNT                   = 0xe
+       EVFILT_THREADMARKER               = 0xe
+       EVFILT_TIMER                      = -0x7
+       EVFILT_USER                       = -0xa
+       EVFILT_VM                         = -0xc
+       EVFILT_VNODE                      = -0x4
+       EVFILT_WRITE                      = -0x2
+       EV_ADD                            = 0x1
+       EV_CLEAR                          = 0x20
+       EV_DELETE                         = 0x2
+       EV_DISABLE                        = 0x8
+       EV_DISPATCH                       = 0x80
+       EV_ENABLE                         = 0x4
+       EV_EOF                            = 0x8000
+       EV_ERROR                          = 0x4000
+       EV_FLAG0                          = 0x1000
+       EV_FLAG1                          = 0x2000
+       EV_ONESHOT                        = 0x10
+       EV_OOBAND                         = 0x2000
+       EV_POLL                           = 0x1000
+       EV_RECEIPT                        = 0x40
+       EV_SYSFLAGS                       = 0xf000
+       EXTA                              = 0x4b00
+       EXTB                              = 0x9600
+       EXTPROC                           = 0x800
+       FD_CLOEXEC                        = 0x1
+       FD_SETSIZE                        = 0x400
+       FLUSHO                            = 0x800000
+       F_ADDFILESIGS                     = 0x3d
+       F_ADDSIGS                         = 0x3b
+       F_ALLOCATEALL                     = 0x4
+       F_ALLOCATECONTIG                  = 0x2
+       F_CHKCLEAN                        = 0x29
+       F_DUPFD                           = 0x0
+       F_DUPFD_CLOEXEC                   = 0x43
+       F_FINDSIGS                        = 0x4e
+       F_FLUSH_DATA                      = 0x28
+       F_FREEZE_FS                       = 0x35
+       F_FULLFSYNC                       = 0x33
+       F_GETCODEDIR                      = 0x48
+       F_GETFD                           = 0x1
+       F_GETFL                           = 0x3
+       F_GETLK                           = 0x7
+       F_GETLKPID                        = 0x42
+       F_GETNOSIGPIPE                    = 0x4a
+       F_GETOWN                          = 0x5
+       F_GETPATH                         = 0x32
+       F_GETPATH_MTMINFO                 = 0x47
+       F_GETPROTECTIONCLASS              = 0x3f
+       F_GETPROTECTIONLEVEL              = 0x4d
+       F_GLOBAL_NOCACHE                  = 0x37
+       F_LOG2PHYS                        = 0x31
+       F_LOG2PHYS_EXT                    = 0x41
+       F_NOCACHE                         = 0x30
+       F_NODIRECT                        = 0x3e
+       F_OK                              = 0x0
+       F_PATHPKG_CHECK                   = 0x34
+       F_PEOFPOSMODE                     = 0x3
+       F_PREALLOCATE                     = 0x2a
+       F_RDADVISE                        = 0x2c
+       F_RDAHEAD                         = 0x2d
+       F_RDLCK                           = 0x1
+       F_SETBACKINGSTORE                 = 0x46
+       F_SETFD                           = 0x2
+       F_SETFL                           = 0x4
+       F_SETLK                           = 0x8
+       F_SETLKW                          = 0x9
+       F_SETLKWTIMEOUT                   = 0xa
+       F_SETNOSIGPIPE                    = 0x49
+       F_SETOWN                          = 0x6
+       F_SETPROTECTIONCLASS              = 0x40
+       F_SETSIZE                         = 0x2b
+       F_SINGLE_WRITER                   = 0x4c
+       F_THAW_FS                         = 0x36
+       F_TRANSCODEKEY                    = 0x4b
+       F_UNLCK                           = 0x2
+       F_VOLPOSMODE                      = 0x4
+       F_WRLCK                           = 0x3
+       HUPCL                             = 0x4000
+       ICANON                            = 0x100
+       ICMP6_FILTER                      = 0x12
+       ICRNL                             = 0x100
+       IEXTEN                            = 0x400
+       IFF_ALLMULTI                      = 0x200
+       IFF_ALTPHYS                       = 0x4000
+       IFF_BROADCAST                     = 0x2
+       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_AAL5                          = 0x31
+       IFT_ARCNET                        = 0x23
+       IFT_ARCNETPLUS                    = 0x24
+       IFT_ATM                           = 0x25
+       IFT_BRIDGE                        = 0xd1
+       IFT_CARP                          = 0xf8
+       IFT_CELLULAR                      = 0xff
+       IFT_CEPT                          = 0x13
+       IFT_DS3                           = 0x1e
+       IFT_ENC                           = 0xf4
+       IFT_EON                           = 0x19
+       IFT_ETHER                         = 0x6
+       IFT_FAITH                         = 0x38
+       IFT_FDDI                          = 0xf
+       IFT_FRELAY                        = 0x20
+       IFT_FRELAYDCE                     = 0x2c
+       IFT_GIF                           = 0x37
+       IFT_HDH1822                       = 0x3
+       IFT_HIPPI                         = 0x2f
+       IFT_HSSI                          = 0x2e
+       IFT_HY                            = 0xe
+       IFT_IEEE1394                      = 0x90
+       IFT_IEEE8023ADLAG                 = 0x88
+       IFT_ISDNBASIC                     = 0x14
+       IFT_ISDNPRIMARY                   = 0x15
+       IFT_ISO88022LLC                   = 0x29
+       IFT_ISO88023                      = 0x7
+       IFT_ISO88024                      = 0x8
+       IFT_ISO88025                      = 0x9
+       IFT_ISO88026                      = 0xa
+       IFT_L2VLAN                        = 0x87
+       IFT_LAPB                          = 0x10
+       IFT_LOCALTALK                     = 0x2a
+       IFT_LOOP                          = 0x18
+       IFT_MIOX25                        = 0x26
+       IFT_MODEM                         = 0x30
+       IFT_NSIP                          = 0x1b
+       IFT_OTHER                         = 0x1
+       IFT_P10                           = 0xc
+       IFT_P80                           = 0xd
+       IFT_PARA                          = 0x22
+       IFT_PDP                           = 0xff
+       IFT_PFLOG                         = 0xf5
+       IFT_PFSYNC                        = 0xf6
+       IFT_PKTAP                         = 0xfe
+       IFT_PPP                           = 0x17
+       IFT_PROPMUX                       = 0x36
+       IFT_PROPVIRTUAL                   = 0x35
+       IFT_PTPSERIAL                     = 0x16
+       IFT_RS232                         = 0x21
+       IFT_SDLC                          = 0x11
+       IFT_SIP                           = 0x1f
+       IFT_SLIP                          = 0x1c
+       IFT_SMDSDXI                       = 0x2b
+       IFT_SMDSICIP                      = 0x34
+       IFT_SONET                         = 0x27
+       IFT_SONETPATH                     = 0x32
+       IFT_SONETVT                       = 0x33
+       IFT_STARLAN                       = 0xb
+       IFT_STF                           = 0x39
+       IFT_T1                            = 0x12
+       IFT_ULTRA                         = 0x1d
+       IFT_V35                           = 0x2d
+       IFT_X25                           = 0x5
+       IFT_X25DDN                        = 0x4
+       IFT_X25PLE                        = 0x28
+       IFT_XETHER                        = 0x1a
+       IGNBRK                            = 0x1
+       IGNCR                             = 0x80
+       IGNPAR                            = 0x4
+       IMAXBEL                           = 0x2000
+       INLCR                             = 0x40
+       INPCK                             = 0x10
+       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_LINKLOCALNETNUM                = 0xa9fe0000
+       IN_LOOPBACKNET                    = 0x7f
+       IPPROTO_3PC                       = 0x22
+       IPPROTO_ADFS                      = 0x44
+       IPPROTO_AH                        = 0x33
+       IPPROTO_AHIP                      = 0x3d
+       IPPROTO_APES                      = 0x63
+       IPPROTO_ARGUS                     = 0xd
+       IPPROTO_AX25                      = 0x5d
+       IPPROTO_BHA                       = 0x31
+       IPPROTO_BLT                       = 0x1e
+       IPPROTO_BRSATMON                  = 0x4c
+       IPPROTO_CFTP                      = 0x3e
+       IPPROTO_CHAOS                     = 0x10
+       IPPROTO_CMTP                      = 0x26
+       IPPROTO_CPHB                      = 0x49
+       IPPROTO_CPNX                      = 0x48
+       IPPROTO_DDP                       = 0x25
+       IPPROTO_DGP                       = 0x56
+       IPPROTO_DIVERT                    = 0xfe
+       IPPROTO_DONE                      = 0x101
+       IPPROTO_DSTOPTS                   = 0x3c
+       IPPROTO_EGP                       = 0x8
+       IPPROTO_EMCON                     = 0xe
+       IPPROTO_ENCAP                     = 0x62
+       IPPROTO_EON                       = 0x50
+       IPPROTO_ESP                       = 0x32
+       IPPROTO_ETHERIP                   = 0x61
+       IPPROTO_FRAGMENT                  = 0x2c
+       IPPROTO_GGP                       = 0x3
+       IPPROTO_GMTP                      = 0x64
+       IPPROTO_GRE                       = 0x2f
+       IPPROTO_HELLO                     = 0x3f
+       IPPROTO_HMP                       = 0x14
+       IPPROTO_HOPOPTS                   = 0x0
+       IPPROTO_ICMP                      = 0x1
+       IPPROTO_ICMPV6                    = 0x3a
+       IPPROTO_IDP                       = 0x16
+       IPPROTO_IDPR                      = 0x23
+       IPPROTO_IDRP                      = 0x2d
+       IPPROTO_IGMP                      = 0x2
+       IPPROTO_IGP                       = 0x55
+       IPPROTO_IGRP                      = 0x58
+       IPPROTO_IL                        = 0x28
+       IPPROTO_INLSP                     = 0x34
+       IPPROTO_INP                       = 0x20
+       IPPROTO_IP                        = 0x0
+       IPPROTO_IPCOMP                    = 0x6c
+       IPPROTO_IPCV                      = 0x47
+       IPPROTO_IPEIP                     = 0x5e
+       IPPROTO_IPIP                      = 0x4
+       IPPROTO_IPPC                      = 0x43
+       IPPROTO_IPV4                      = 0x4
+       IPPROTO_IPV6                      = 0x29
+       IPPROTO_IRTP                      = 0x1c
+       IPPROTO_KRYPTOLAN                 = 0x41
+       IPPROTO_LARP                      = 0x5b
+       IPPROTO_LEAF1                     = 0x19
+       IPPROTO_LEAF2                     = 0x1a
+       IPPROTO_MAX                       = 0x100
+       IPPROTO_MAXID                     = 0x34
+       IPPROTO_MEAS                      = 0x13
+       IPPROTO_MHRP                      = 0x30
+       IPPROTO_MICP                      = 0x5f
+       IPPROTO_MTP                       = 0x5c
+       IPPROTO_MUX                       = 0x12
+       IPPROTO_ND                        = 0x4d
+       IPPROTO_NHRP                      = 0x36
+       IPPROTO_NONE                      = 0x3b
+       IPPROTO_NSP                       = 0x1f
+       IPPROTO_NVPII                     = 0xb
+       IPPROTO_OSPFIGP                   = 0x59
+       IPPROTO_PGM                       = 0x71
+       IPPROTO_PIGP                      = 0x9
+       IPPROTO_PIM                       = 0x67
+       IPPROTO_PRM                       = 0x15
+       IPPROTO_PUP                       = 0xc
+       IPPROTO_PVP                       = 0x4b
+       IPPROTO_RAW                       = 0xff
+       IPPROTO_RCCMON                    = 0xa
+       IPPROTO_RDP                       = 0x1b
+       IPPROTO_ROUTING                   = 0x2b
+       IPPROTO_RSVP                      = 0x2e
+       IPPROTO_RVD                       = 0x42
+       IPPROTO_SATEXPAK                  = 0x40
+       IPPROTO_SATMON                    = 0x45
+       IPPROTO_SCCSP                     = 0x60
+       IPPROTO_SCTP                      = 0x84
+       IPPROTO_SDRP                      = 0x2a
+       IPPROTO_SEP                       = 0x21
+       IPPROTO_SRPC                      = 0x5a
+       IPPROTO_ST                        = 0x7
+       IPPROTO_SVMTP                     = 0x52
+       IPPROTO_SWIPE                     = 0x35
+       IPPROTO_TCF                       = 0x57
+       IPPROTO_TCP                       = 0x6
+       IPPROTO_TP                        = 0x1d
+       IPPROTO_TPXX                      = 0x27
+       IPPROTO_TRUNK1                    = 0x17
+       IPPROTO_TRUNK2                    = 0x18
+       IPPROTO_TTP                       = 0x54
+       IPPROTO_UDP                       = 0x11
+       IPPROTO_VINES                     = 0x53
+       IPPROTO_VISA                      = 0x46
+       IPPROTO_VMTP                      = 0x51
+       IPPROTO_WBEXPAK                   = 0x4f
+       IPPROTO_WBMON                     = 0x4e
+       IPPROTO_WSN                       = 0x4a
+       IPPROTO_XNET                      = 0xf
+       IPPROTO_XTP                       = 0x24
+       IPV6_2292DSTOPTS                  = 0x17
+       IPV6_2292HOPLIMIT                 = 0x14
+       IPV6_2292HOPOPTS                  = 0x16
+       IPV6_2292NEXTHOP                  = 0x15
+       IPV6_2292PKTINFO                  = 0x13
+       IPV6_2292PKTOPTIONS               = 0x19
+       IPV6_2292RTHDR                    = 0x18
+       IPV6_BINDV6ONLY                   = 0x1b
+       IPV6_BOUND_IF                     = 0x7d
+       IPV6_CHECKSUM                     = 0x1a
+       IPV6_DEFAULT_MULTICAST_HOPS       = 0x1
+       IPV6_DEFAULT_MULTICAST_LOOP       = 0x1
+       IPV6_DEFHLIM                      = 0x40
+       IPV6_FAITH                        = 0x1d
+       IPV6_FLOWINFO_MASK                = 0xffffff0f
+       IPV6_FLOWLABEL_MASK               = 0xffff0f00
+       IPV6_FRAGTTL                      = 0x3c
+       IPV6_FW_ADD                       = 0x1e
+       IPV6_FW_DEL                       = 0x1f
+       IPV6_FW_FLUSH                     = 0x20
+       IPV6_FW_GET                       = 0x22
+       IPV6_FW_ZERO                      = 0x21
+       IPV6_HLIMDEC                      = 0x1
+       IPV6_IPSEC_POLICY                 = 0x1c
+       IPV6_JOIN_GROUP                   = 0xc
+       IPV6_LEAVE_GROUP                  = 0xd
+       IPV6_MAXHLIM                      = 0xff
+       IPV6_MAXOPTHDR                    = 0x800
+       IPV6_MAXPACKET                    = 0xffff
+       IPV6_MAX_GROUP_SRC_FILTER         = 0x200
+       IPV6_MAX_MEMBERSHIPS              = 0xfff
+       IPV6_MAX_SOCK_SRC_FILTER          = 0x80
+       IPV6_MIN_MEMBERSHIPS              = 0x1f
+       IPV6_MMTU                         = 0x500
+       IPV6_MULTICAST_HOPS               = 0xa
+       IPV6_MULTICAST_IF                 = 0x9
+       IPV6_MULTICAST_LOOP               = 0xb
+       IPV6_PORTRANGE                    = 0xe
+       IPV6_PORTRANGE_DEFAULT            = 0x0
+       IPV6_PORTRANGE_HIGH               = 0x1
+       IPV6_PORTRANGE_LOW                = 0x2
+       IPV6_RECVTCLASS                   = 0x23
+       IPV6_RTHDR_LOOSE                  = 0x0
+       IPV6_RTHDR_STRICT                 = 0x1
+       IPV6_RTHDR_TYPE_0                 = 0x0
+       IPV6_SOCKOPT_RESERVED1            = 0x3
+       IPV6_TCLASS                       = 0x24
+       IPV6_UNICAST_HOPS                 = 0x4
+       IPV6_V6ONLY                       = 0x1b
+       IPV6_VERSION                      = 0x60
+       IPV6_VERSION_MASK                 = 0xf0
+       IP_ADD_MEMBERSHIP                 = 0xc
+       IP_ADD_SOURCE_MEMBERSHIP          = 0x46
+       IP_BLOCK_SOURCE                   = 0x48
+       IP_BOUND_IF                       = 0x19
+       IP_DEFAULT_MULTICAST_LOOP         = 0x1
+       IP_DEFAULT_MULTICAST_TTL          = 0x1
+       IP_DF                             = 0x4000
+       IP_DROP_MEMBERSHIP                = 0xd
+       IP_DROP_SOURCE_MEMBERSHIP         = 0x47
+       IP_DUMMYNET_CONFIGURE             = 0x3c
+       IP_DUMMYNET_DEL                   = 0x3d
+       IP_DUMMYNET_FLUSH                 = 0x3e
+       IP_DUMMYNET_GET                   = 0x40
+       IP_FAITH                          = 0x16
+       IP_FW_ADD                         = 0x28
+       IP_FW_DEL                         = 0x29
+       IP_FW_FLUSH                       = 0x2a
+       IP_FW_GET                         = 0x2c
+       IP_FW_RESETLOG                    = 0x2d
+       IP_FW_ZERO                        = 0x2b
+       IP_HDRINCL                        = 0x2
+       IP_IPSEC_POLICY                   = 0x15
+       IP_MAXPACKET                      = 0xffff
+       IP_MAX_GROUP_SRC_FILTER           = 0x200
+       IP_MAX_MEMBERSHIPS                = 0xfff
+       IP_MAX_SOCK_MUTE_FILTER           = 0x80
+       IP_MAX_SOCK_SRC_FILTER            = 0x80
+       IP_MF                             = 0x2000
+       IP_MIN_MEMBERSHIPS                = 0x1f
+       IP_MSFILTER                       = 0x4a
+       IP_MSS                            = 0x240
+       IP_MULTICAST_IF                   = 0x9
+       IP_MULTICAST_IFINDEX              = 0x42
+       IP_MULTICAST_LOOP                 = 0xb
+       IP_MULTICAST_TTL                  = 0xa
+       IP_MULTICAST_VIF                  = 0xe
+       IP_NAT__XXX                       = 0x37
+       IP_OFFMASK                        = 0x1fff
+       IP_OLD_FW_ADD                     = 0x32
+       IP_OLD_FW_DEL                     = 0x33
+       IP_OLD_FW_FLUSH                   = 0x34
+       IP_OLD_FW_GET                     = 0x36
+       IP_OLD_FW_RESETLOG                = 0x38
+       IP_OLD_FW_ZERO                    = 0x35
+       IP_OPTIONS                        = 0x1
+       IP_PKTINFO                        = 0x1a
+       IP_PORTRANGE                      = 0x13
+       IP_PORTRANGE_DEFAULT              = 0x0
+       IP_PORTRANGE_HIGH                 = 0x1
+       IP_PORTRANGE_LOW                  = 0x2
+       IP_RECVDSTADDR                    = 0x7
+       IP_RECVIF                         = 0x14
+       IP_RECVOPTS                       = 0x5
+       IP_RECVPKTINFO                    = 0x1a
+       IP_RECVRETOPTS                    = 0x6
+       IP_RECVTTL                        = 0x18
+       IP_RETOPTS                        = 0x8
+       IP_RF                             = 0x8000
+       IP_RSVP_OFF                       = 0x10
+       IP_RSVP_ON                        = 0xf
+       IP_RSVP_VIF_OFF                   = 0x12
+       IP_RSVP_VIF_ON                    = 0x11
+       IP_STRIPHDR                       = 0x17
+       IP_TOS                            = 0x3
+       IP_TRAFFIC_MGT_BACKGROUND         = 0x41
+       IP_TTL                            = 0x4
+       IP_UNBLOCK_SOURCE                 = 0x49
+       ISIG                              = 0x80
+       ISTRIP                            = 0x20
+       IUTF8                             = 0x4000
+       IXANY                             = 0x800
+       IXOFF                             = 0x400
+       IXON                              = 0x200
+       LOCK_EX                           = 0x2
+       LOCK_NB                           = 0x4
+       LOCK_SH                           = 0x1
+       LOCK_UN                           = 0x8
+       MADV_CAN_REUSE                    = 0x9
+       MADV_DONTNEED                     = 0x4
+       MADV_FREE                         = 0x5
+       MADV_FREE_REUSABLE                = 0x7
+       MADV_FREE_REUSE                   = 0x8
+       MADV_NORMAL                       = 0x0
+       MADV_RANDOM                       = 0x1
+       MADV_SEQUENTIAL                   = 0x2
+       MADV_WILLNEED                     = 0x3
+       MADV_ZERO_WIRED_PAGES             = 0x6
+       MAP_ANON                          = 0x1000
+       MAP_COPY                          = 0x2
+       MAP_FILE                          = 0x0
+       MAP_FIXED                         = 0x10
+       MAP_HASSEMAPHORE                  = 0x200
+       MAP_JIT                           = 0x800
+       MAP_NOCACHE                       = 0x400
+       MAP_NOEXTEND                      = 0x100
+       MAP_NORESERVE                     = 0x40
+       MAP_PRIVATE                       = 0x2
+       MAP_RENAME                        = 0x20
+       MAP_RESERVED0080                  = 0x80
+       MAP_SHARED                        = 0x1
+       MCL_CURRENT                       = 0x1
+       MCL_FUTURE                        = 0x2
+       MSG_CTRUNC                        = 0x20
+       MSG_DONTROUTE                     = 0x4
+       MSG_DONTWAIT                      = 0x80
+       MSG_EOF                           = 0x100
+       MSG_EOR                           = 0x8
+       MSG_FLUSH                         = 0x400
+       MSG_HAVEMORE                      = 0x2000
+       MSG_HOLD                          = 0x800
+       MSG_NEEDSA                        = 0x10000
+       MSG_OOB                           = 0x1
+       MSG_PEEK                          = 0x2
+       MSG_RCVMORE                       = 0x4000
+       MSG_SEND                          = 0x1000
+       MSG_TRUNC                         = 0x10
+       MSG_WAITALL                       = 0x40
+       MSG_WAITSTREAM                    = 0x200
+       MS_ASYNC                          = 0x1
+       MS_DEACTIVATE                     = 0x8
+       MS_INVALIDATE                     = 0x2
+       MS_KILLPAGES                      = 0x4
+       MS_SYNC                           = 0x10
+       NAME_MAX                          = 0xff
+       NET_RT_DUMP                       = 0x1
+       NET_RT_DUMP2                      = 0x7
+       NET_RT_FLAGS                      = 0x2
+       NET_RT_IFLIST                     = 0x3
+       NET_RT_IFLIST2                    = 0x6
+       NET_RT_MAXID                      = 0xa
+       NET_RT_STAT                       = 0x4
+       NET_RT_TRASH                      = 0x5
+       NOFLSH                            = 0x80000000
+       NOTE_ABSOLUTE                     = 0x8
+       NOTE_ATTRIB                       = 0x8
+       NOTE_BACKGROUND                   = 0x40
+       NOTE_CHILD                        = 0x4
+       NOTE_CRITICAL                     = 0x20
+       NOTE_DELETE                       = 0x1
+       NOTE_EXEC                         = 0x20000000
+       NOTE_EXIT                         = 0x80000000
+       NOTE_EXITSTATUS                   = 0x4000000
+       NOTE_EXIT_CSERROR                 = 0x40000
+       NOTE_EXIT_DECRYPTFAIL             = 0x10000
+       NOTE_EXIT_DETAIL                  = 0x2000000
+       NOTE_EXIT_DETAIL_MASK             = 0x70000
+       NOTE_EXIT_MEMORY                  = 0x20000
+       NOTE_EXIT_REPARENTED              = 0x80000
+       NOTE_EXTEND                       = 0x4
+       NOTE_FFAND                        = 0x40000000
+       NOTE_FFCOPY                       = 0xc0000000
+       NOTE_FFCTRLMASK                   = 0xc0000000
+       NOTE_FFLAGSMASK                   = 0xffffff
+       NOTE_FFNOP                        = 0x0
+       NOTE_FFOR                         = 0x80000000
+       NOTE_FORK                         = 0x40000000
+       NOTE_LEEWAY                       = 0x10
+       NOTE_LINK                         = 0x10
+       NOTE_LOWAT                        = 0x1
+       NOTE_NONE                         = 0x80
+       NOTE_NSECONDS                     = 0x4
+       NOTE_PCTRLMASK                    = -0x100000
+       NOTE_PDATAMASK                    = 0xfffff
+       NOTE_REAP                         = 0x10000000
+       NOTE_RENAME                       = 0x20
+       NOTE_REVOKE                       = 0x40
+       NOTE_SECONDS                      = 0x1
+       NOTE_SIGNAL                       = 0x8000000
+       NOTE_TRACK                        = 0x1
+       NOTE_TRACKERR                     = 0x2
+       NOTE_TRIGGER                      = 0x1000000
+       NOTE_USECONDS                     = 0x2
+       NOTE_VM_ERROR                     = 0x10000000
+       NOTE_VM_PRESSURE                  = 0x80000000
+       NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000
+       NOTE_VM_PRESSURE_TERMINATE        = 0x40000000
+       NOTE_WRITE                        = 0x2
+       OCRNL                             = 0x10
+       OFDEL                             = 0x20000
+       OFILL                             = 0x80
+       ONLCR                             = 0x2
+       ONLRET                            = 0x40
+       ONOCR                             = 0x20
+       ONOEOT                            = 0x8
+       OPOST                             = 0x1
+       O_ACCMODE                         = 0x3
+       O_ALERT                           = 0x20000000
+       O_APPEND                          = 0x8
+       O_ASYNC                           = 0x40
+       O_CLOEXEC                         = 0x1000000
+       O_CREAT                           = 0x200
+       O_DIRECTORY                       = 0x100000
+       O_DP_GETRAWENCRYPTED              = 0x1
+       O_DSYNC                           = 0x400000
+       O_EVTONLY                         = 0x8000
+       O_EXCL                            = 0x800
+       O_EXLOCK                          = 0x20
+       O_FSYNC                           = 0x80
+       O_NDELAY                          = 0x4
+       O_NOCTTY                          = 0x20000
+       O_NOFOLLOW                        = 0x100
+       O_NONBLOCK                        = 0x4
+       O_POPUP                           = 0x80000000
+       O_RDONLY                          = 0x0
+       O_RDWR                            = 0x2
+       O_SHLOCK                          = 0x10
+       O_SYMLINK                         = 0x200000
+       O_SYNC                            = 0x80
+       O_TRUNC                           = 0x400
+       O_WRONLY                          = 0x1
+       PARENB                            = 0x1000
+       PARMRK                            = 0x8
+       PARODD                            = 0x2000
+       PENDIN                            = 0x20000000
+       PRIO_PGRP                         = 0x1
+       PRIO_PROCESS                      = 0x0
+       PRIO_USER                         = 0x2
+       PROT_EXEC                         = 0x4
+       PROT_NONE                         = 0x0
+       PROT_READ                         = 0x1
+       PROT_WRITE                        = 0x2
+       PT_ATTACH                         = 0xa
+       PT_ATTACHEXC                      = 0xe
+       PT_CONTINUE                       = 0x7
+       PT_DENY_ATTACH                    = 0x1f
+       PT_DETACH                         = 0xb
+       PT_FIRSTMACH                      = 0x20
+       PT_FORCEQUOTA                     = 0x1e
+       PT_KILL                           = 0x8
+       PT_READ_D                         = 0x2
+       PT_READ_I                         = 0x1
+       PT_READ_U                         = 0x3
+       PT_SIGEXC                         = 0xc
+       PT_STEP                           = 0x9
+       PT_THUPDATE                       = 0xd
+       PT_TRACE_ME                       = 0x0
+       PT_WRITE_D                        = 0x5
+       PT_WRITE_I                        = 0x4
+       PT_WRITE_U                        = 0x6
+       RLIMIT_AS                         = 0x5
+       RLIMIT_CORE                       = 0x4
+       RLIMIT_CPU                        = 0x0
+       RLIMIT_CPU_USAGE_MONITOR          = 0x2
+       RLIMIT_DATA                       = 0x2
+       RLIMIT_FSIZE                      = 0x1
+       RLIMIT_NOFILE                     = 0x8
+       RLIMIT_STACK                      = 0x3
+       RLIM_INFINITY                     = 0x7fffffffffffffff
+       RTAX_AUTHOR                       = 0x6
+       RTAX_BRD                          = 0x7
+       RTAX_DST                          = 0x0
+       RTAX_GATEWAY                      = 0x1
+       RTAX_GENMASK                      = 0x3
+       RTAX_IFA                          = 0x5
+       RTAX_IFP                          = 0x4
+       RTAX_MAX                          = 0x8
+       RTAX_NETMASK                      = 0x2
+       RTA_AUTHOR                        = 0x40
+       RTA_BRD                           = 0x80
+       RTA_DST                           = 0x1
+       RTA_GATEWAY                       = 0x2
+       RTA_GENMASK                       = 0x8
+       RTA_IFA                           = 0x20
+       RTA_IFP                           = 0x10
+       RTA_NETMASK                       = 0x4
+       RTF_BLACKHOLE                     = 0x1000
+       RTF_BROADCAST                     = 0x400000
+       RTF_CLONING                       = 0x100
+       RTF_CONDEMNED                     = 0x2000000
+       RTF_DELCLONE                      = 0x80
+       RTF_DONE                          = 0x40
+       RTF_DYNAMIC                       = 0x10
+       RTF_GATEWAY                       = 0x2
+       RTF_HOST                          = 0x4
+       RTF_IFREF                         = 0x4000000
+       RTF_IFSCOPE                       = 0x1000000
+       RTF_LLINFO                        = 0x400
+       RTF_LOCAL                         = 0x200000
+       RTF_MODIFIED                      = 0x20
+       RTF_MULTICAST                     = 0x800000
+       RTF_NOIFREF                       = 0x2000
+       RTF_PINNED                        = 0x100000
+       RTF_PRCLONING                     = 0x10000
+       RTF_PROTO1                        = 0x8000
+       RTF_PROTO2                        = 0x4000
+       RTF_PROTO3                        = 0x40000
+       RTF_PROXY                         = 0x8000000
+       RTF_REJECT                        = 0x8
+       RTF_ROUTER                        = 0x10000000
+       RTF_STATIC                        = 0x800
+       RTF_UP                            = 0x1
+       RTF_WASCLONED                     = 0x20000
+       RTF_XRESOLVE                      = 0x200
+       RTM_ADD                           = 0x1
+       RTM_CHANGE                        = 0x3
+       RTM_DELADDR                       = 0xd
+       RTM_DELETE                        = 0x2
+       RTM_DELMADDR                      = 0x10
+       RTM_GET                           = 0x4
+       RTM_GET2                          = 0x14
+       RTM_IFINFO                        = 0xe
+       RTM_IFINFO2                       = 0x12
+       RTM_LOCK                          = 0x8
+       RTM_LOSING                        = 0x5
+       RTM_MISS                          = 0x7
+       RTM_NEWADDR                       = 0xc
+       RTM_NEWMADDR                      = 0xf
+       RTM_NEWMADDR2                     = 0x13
+       RTM_OLDADD                        = 0x9
+       RTM_OLDDEL                        = 0xa
+       RTM_REDIRECT                      = 0x6
+       RTM_RESOLVE                       = 0xb
+       RTM_RTTUNIT                       = 0xf4240
+       RTM_VERSION                       = 0x5
+       RTV_EXPIRE                        = 0x4
+       RTV_HOPCOUNT                      = 0x2
+       RTV_MTU                           = 0x1
+       RTV_RPIPE                         = 0x8
+       RTV_RTT                           = 0x40
+       RTV_RTTVAR                        = 0x80
+       RTV_SPIPE                         = 0x10
+       RTV_SSTHRESH                      = 0x20
+       RUSAGE_CHILDREN                   = -0x1
+       RUSAGE_SELF                       = 0x0
+       SCM_CREDS                         = 0x3
+       SCM_RIGHTS                        = 0x1
+       SCM_TIMESTAMP                     = 0x2
+       SCM_TIMESTAMP_MONOTONIC           = 0x4
+       SHUT_RD                           = 0x0
+       SHUT_RDWR                         = 0x2
+       SHUT_WR                           = 0x1
+       SIOCADDMULTI                      = 0x80206931
+       SIOCAIFADDR                       = 0x8040691a
+       SIOCARPIPLL                       = 0xc0206928
+       SIOCATMARK                        = 0x40047307
+       SIOCAUTOADDR                      = 0xc0206926
+       SIOCAUTONETMASK                   = 0x80206927
+       SIOCDELMULTI                      = 0x80206932
+       SIOCDIFADDR                       = 0x80206919
+       SIOCDIFPHYADDR                    = 0x80206941
+       SIOCGDRVSPEC                      = 0xc028697b
+       SIOCGETVLAN                       = 0xc020697f
+       SIOCGHIWAT                        = 0x40047301
+       SIOCGIFADDR                       = 0xc0206921
+       SIOCGIFALTMTU                     = 0xc0206948
+       SIOCGIFASYNCMAP                   = 0xc020697c
+       SIOCGIFBOND                       = 0xc0206947
+       SIOCGIFBRDADDR                    = 0xc0206923
+       SIOCGIFCAP                        = 0xc020695b
+       SIOCGIFCONF                       = 0xc00c6924
+       SIOCGIFDEVMTU                     = 0xc0206944
+       SIOCGIFDSTADDR                    = 0xc0206922
+       SIOCGIFFLAGS                      = 0xc0206911
+       SIOCGIFGENERIC                    = 0xc020693a
+       SIOCGIFKPI                        = 0xc0206987
+       SIOCGIFMAC                        = 0xc0206982
+       SIOCGIFMEDIA                      = 0xc02c6938
+       SIOCGIFMETRIC                     = 0xc0206917
+       SIOCGIFMTU                        = 0xc0206933
+       SIOCGIFNETMASK                    = 0xc0206925
+       SIOCGIFPDSTADDR                   = 0xc0206940
+       SIOCGIFPHYS                       = 0xc0206935
+       SIOCGIFPSRCADDR                   = 0xc020693f
+       SIOCGIFSTATUS                     = 0xc331693d
+       SIOCGIFVLAN                       = 0xc020697f
+       SIOCGIFWAKEFLAGS                  = 0xc0206988
+       SIOCGLOWAT                        = 0x40047303
+       SIOCGPGRP                         = 0x40047309
+       SIOCIFCREATE                      = 0xc0206978
+       SIOCIFCREATE2                     = 0xc020697a
+       SIOCIFDESTROY                     = 0x80206979
+       SIOCIFGCLONERS                    = 0xc0106981
+       SIOCRSLVMULTI                     = 0xc010693b
+       SIOCSDRVSPEC                      = 0x8028697b
+       SIOCSETVLAN                       = 0x8020697e
+       SIOCSHIWAT                        = 0x80047300
+       SIOCSIFADDR                       = 0x8020690c
+       SIOCSIFALTMTU                     = 0x80206945
+       SIOCSIFASYNCMAP                   = 0x8020697d
+       SIOCSIFBOND                       = 0x80206946
+       SIOCSIFBRDADDR                    = 0x80206913
+       SIOCSIFCAP                        = 0x8020695a
+       SIOCSIFDSTADDR                    = 0x8020690e
+       SIOCSIFFLAGS                      = 0x80206910
+       SIOCSIFGENERIC                    = 0x80206939
+       SIOCSIFKPI                        = 0x80206986
+       SIOCSIFLLADDR                     = 0x8020693c
+       SIOCSIFMAC                        = 0x80206983
+       SIOCSIFMEDIA                      = 0xc0206937
+       SIOCSIFMETRIC                     = 0x80206918
+       SIOCSIFMTU                        = 0x80206934
+       SIOCSIFNETMASK                    = 0x80206916
+       SIOCSIFPHYADDR                    = 0x8040693e
+       SIOCSIFPHYS                       = 0x80206936
+       SIOCSIFVLAN                       = 0x8020697e
+       SIOCSLOWAT                        = 0x80047302
+       SIOCSPGRP                         = 0x80047308
+       SOCK_DGRAM                        = 0x2
+       SOCK_MAXADDRLEN                   = 0xff
+       SOCK_RAW                          = 0x3
+       SOCK_RDM                          = 0x4
+       SOCK_SEQPACKET                    = 0x5
+       SOCK_STREAM                       = 0x1
+       SOL_SOCKET                        = 0xffff
+       SOMAXCONN                         = 0x80
+       SO_ACCEPTCONN                     = 0x2
+       SO_BROADCAST                      = 0x20
+       SO_DEBUG                          = 0x1
+       SO_DONTROUTE                      = 0x10
+       SO_DONTTRUNC                      = 0x2000
+       SO_ERROR                          = 0x1007
+       SO_KEEPALIVE                      = 0x8
+       SO_LABEL                          = 0x1010
+       SO_LINGER                         = 0x80
+       SO_LINGER_SEC                     = 0x1080
+       SO_NKE                            = 0x1021
+       SO_NOADDRERR                      = 0x1023
+       SO_NOSIGPIPE                      = 0x1022
+       SO_NOTIFYCONFLICT                 = 0x1026
+       SO_NP_EXTENSIONS                  = 0x1083
+       SO_NREAD                          = 0x1020
+       SO_NUMRCVPKT                      = 0x1112
+       SO_NWRITE                         = 0x1024
+       SO_OOBINLINE                      = 0x100
+       SO_PEERLABEL                      = 0x1011
+       SO_RANDOMPORT                     = 0x1082
+       SO_RCVBUF                         = 0x1002
+       SO_RCVLOWAT                       = 0x1004
+       SO_RCVTIMEO                       = 0x1006
+       SO_REUSEADDR                      = 0x4
+       SO_REUSEPORT                      = 0x200
+       SO_REUSESHAREUID                  = 0x1025
+       SO_SNDBUF                         = 0x1001
+       SO_SNDLOWAT                       = 0x1003
+       SO_SNDTIMEO                       = 0x1005
+       SO_TIMESTAMP                      = 0x400
+       SO_TIMESTAMP_MONOTONIC            = 0x800
+       SO_TYPE                           = 0x1008
+       SO_UPCALLCLOSEWAIT                = 0x1027
+       SO_USELOOPBACK                    = 0x40
+       SO_WANTMORE                       = 0x4000
+       SO_WANTOOBFLAG                    = 0x8000
+       S_IEXEC                           = 0x40
+       S_IFBLK                           = 0x6000
+       S_IFCHR                           = 0x2000
+       S_IFDIR                           = 0x4000
+       S_IFIFO                           = 0x1000
+       S_IFLNK                           = 0xa000
+       S_IFMT                            = 0xf000
+       S_IFREG                           = 0x8000
+       S_IFSOCK                          = 0xc000
+       S_IFWHT                           = 0xe000
+       S_IREAD                           = 0x100
+       S_IRGRP                           = 0x20
+       S_IROTH                           = 0x4
+       S_IRUSR                           = 0x100
+       S_IRWXG                           = 0x38
+       S_IRWXO                           = 0x7
+       S_IRWXU                           = 0x1c0
+       S_ISGID                           = 0x400
+       S_ISTXT                           = 0x200
+       S_ISUID                           = 0x800
+       S_ISVTX                           = 0x200
+       S_IWGRP                           = 0x10
+       S_IWOTH                           = 0x2
+       S_IWRITE                          = 0x80
+       S_IWUSR                           = 0x80
+       S_IXGRP                           = 0x8
+       S_IXOTH                           = 0x1
+       S_IXUSR                           = 0x40
+       TCIFLUSH                          = 0x1
+       TCIOFLUSH                         = 0x3
+       TCOFLUSH                          = 0x2
+       TCP_CONNECTIONTIMEOUT             = 0x20
+       TCP_ENABLE_ECN                    = 0x104
+       TCP_KEEPALIVE                     = 0x10
+       TCP_KEEPCNT                       = 0x102
+       TCP_KEEPINTVL                     = 0x101
+       TCP_MAXHLEN                       = 0x3c
+       TCP_MAXOLEN                       = 0x28
+       TCP_MAXSEG                        = 0x2
+       TCP_MAXWIN                        = 0xffff
+       TCP_MAX_SACK                      = 0x4
+       TCP_MAX_WINSHIFT                  = 0xe
+       TCP_MINMSS                        = 0xd8
+       TCP_MSS                           = 0x200
+       TCP_NODELAY                       = 0x1
+       TCP_NOOPT                         = 0x8
+       TCP_NOPUSH                        = 0x4
+       TCP_NOTSENT_LOWAT                 = 0x201
+       TCP_RXT_CONNDROPTIME              = 0x80
+       TCP_RXT_FINDROP                   = 0x100
+       TCP_SENDMOREACKS                  = 0x103
+       TCSAFLUSH                         = 0x2
+       TIOCCBRK                          = 0x2000747a
+       TIOCCDTR                          = 0x20007478
+       TIOCCONS                          = 0x80047462
+       TIOCDCDTIMESTAMP                  = 0x40107458
+       TIOCDRAIN                         = 0x2000745e
+       TIOCDSIMICROCODE                  = 0x20007455
+       TIOCEXCL                          = 0x2000740d
+       TIOCEXT                           = 0x80047460
+       TIOCFLUSH                         = 0x80047410
+       TIOCGDRAINWAIT                    = 0x40047456
+       TIOCGETA                          = 0x40487413
+       TIOCGETD                          = 0x4004741a
+       TIOCGPGRP                         = 0x40047477
+       TIOCGWINSZ                        = 0x40087468
+       TIOCIXOFF                         = 0x20007480
+       TIOCIXON                          = 0x20007481
+       TIOCMBIC                          = 0x8004746b
+       TIOCMBIS                          = 0x8004746c
+       TIOCMGDTRWAIT                     = 0x4004745a
+       TIOCMGET                          = 0x4004746a
+       TIOCMODG                          = 0x40047403
+       TIOCMODS                          = 0x80047404
+       TIOCMSDTRWAIT                     = 0x8004745b
+       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                      = 0x0
+       TIOCPKT_DOSTOP                    = 0x20
+       TIOCPKT_FLUSHREAD                 = 0x1
+       TIOCPKT_FLUSHWRITE                = 0x2
+       TIOCPKT_IOCTL                     = 0x40
+       TIOCPKT_NOSTOP                    = 0x10
+       TIOCPKT_START                     = 0x8
+       TIOCPKT_STOP                      = 0x4
+       TIOCPTYGNAME                      = 0x40807453
+       TIOCPTYGRANT                      = 0x20007454
+       TIOCPTYUNLK                       = 0x20007452
+       TIOCREMOTE                        = 0x80047469
+       TIOCSBRK                          = 0x2000747b
+       TIOCSCONS                         = 0x20007463
+       TIOCSCTTY                         = 0x20007461
+       TIOCSDRAINWAIT                    = 0x80047457
+       TIOCSDTR                          = 0x20007479
+       TIOCSETA                          = 0x80487414
+       TIOCSETAF                         = 0x80487416
+       TIOCSETAW                         = 0x80487415
+       TIOCSETD                          = 0x8004741b
+       TIOCSIG                           = 0x2000745f
+       TIOCSPGRP                         = 0x80047476
+       TIOCSTART                         = 0x2000746e
+       TIOCSTAT                          = 0x20007465
+       TIOCSTI                           = 0x80017472
+       TIOCSTOP                          = 0x2000746f
+       TIOCSWINSZ                        = 0x80087467
+       TIOCTIMESTAMP                     = 0x40107459
+       TIOCUCNTL                         = 0x80047466
+       TOSTOP                            = 0x400000
+       VDISCARD                          = 0xf
+       VDSUSP                            = 0xb
+       VEOF                              = 0x0
+       VEOL                              = 0x1
+       VEOL2                             = 0x2
+       VERASE                            = 0x3
+       VINTR                             = 0x8
+       VKILL                             = 0x5
+       VLNEXT                            = 0xe
+       VMIN                              = 0x10
+       VQUIT                             = 0x9
+       VREPRINT                          = 0x6
+       VSTART                            = 0xc
+       VSTATUS                           = 0x12
+       VSTOP                             = 0xd
+       VSUSP                             = 0xa
+       VT0                               = 0x0
+       VT1                               = 0x10000
+       VTDLY                             = 0x10000
+       VTIME                             = 0x11
+       VWERASE                           = 0x4
+       WCONTINUED                        = 0x10
+       WCOREFLAG                         = 0x80
+       WEXITED                           = 0x4
+       WNOHANG                           = 0x1
+       WNOWAIT                           = 0x20
+       WORDSIZE                          = 0x40
+       WSTOPPED                          = 0x8
+       WUNTRACED                         = 0x2
+)
+
+// Errors
+const (
+       E2BIG           = syscall.Errno(0x7)
+       EACCES          = syscall.Errno(0xd)
+       EADDRINUSE      = syscall.Errno(0x30)
+       EADDRNOTAVAIL   = syscall.Errno(0x31)
+       EAFNOSUPPORT    = syscall.Errno(0x2f)
+       EAGAIN          = syscall.Errno(0x23)
+       EALREADY        = syscall.Errno(0x25)
+       EAUTH           = syscall.Errno(0x50)
+       EBADARCH        = syscall.Errno(0x56)
+       EBADEXEC        = syscall.Errno(0x55)
+       EBADF           = syscall.Errno(0x9)
+       EBADMACHO       = syscall.Errno(0x58)
+       EBADMSG         = syscall.Errno(0x5e)
+       EBADRPC         = syscall.Errno(0x48)
+       EBUSY           = syscall.Errno(0x10)
+       ECANCELED       = syscall.Errno(0x59)
+       ECHILD          = syscall.Errno(0xa)
+       ECONNABORTED    = syscall.Errno(0x35)
+       ECONNREFUSED    = syscall.Errno(0x3d)
+       ECONNRESET      = syscall.Errno(0x36)
+       EDEADLK         = syscall.Errno(0xb)
+       EDESTADDRREQ    = syscall.Errno(0x27)
+       EDEVERR         = syscall.Errno(0x53)
+       EDOM            = syscall.Errno(0x21)
+       EDQUOT          = syscall.Errno(0x45)
+       EEXIST          = syscall.Errno(0x11)
+       EFAULT          = syscall.Errno(0xe)
+       EFBIG           = syscall.Errno(0x1b)
+       EFTYPE          = syscall.Errno(0x4f)
+       EHOSTDOWN       = syscall.Errno(0x40)
+       EHOSTUNREACH    = syscall.Errno(0x41)
+       EIDRM           = syscall.Errno(0x5a)
+       EILSEQ          = syscall.Errno(0x5c)
+       EINPROGRESS     = syscall.Errno(0x24)
+       EINTR           = syscall.Errno(0x4)
+       EINVAL          = syscall.Errno(0x16)
+       EIO             = syscall.Errno(0x5)
+       EISCONN         = syscall.Errno(0x38)
+       EISDIR          = syscall.Errno(0x15)
+       ELAST           = syscall.Errno(0x6a)
+       ELOOP           = syscall.Errno(0x3e)
+       EMFILE          = syscall.Errno(0x18)
+       EMLINK          = syscall.Errno(0x1f)
+       EMSGSIZE        = syscall.Errno(0x28)
+       EMULTIHOP       = syscall.Errno(0x5f)
+       ENAMETOOLONG    = syscall.Errno(0x3f)
+       ENEEDAUTH       = syscall.Errno(0x51)
+       ENETDOWN        = syscall.Errno(0x32)
+       ENETRESET       = syscall.Errno(0x34)
+       ENETUNREACH     = syscall.Errno(0x33)
+       ENFILE          = syscall.Errno(0x17)
+       ENOATTR         = syscall.Errno(0x5d)
+       ENOBUFS         = syscall.Errno(0x37)
+       ENODATA         = syscall.Errno(0x60)
+       ENODEV          = syscall.Errno(0x13)
+       ENOENT          = syscall.Errno(0x2)
+       ENOEXEC         = syscall.Errno(0x8)
+       ENOLCK          = syscall.Errno(0x4d)
+       ENOLINK         = syscall.Errno(0x61)
+       ENOMEM          = syscall.Errno(0xc)
+       ENOMSG          = syscall.Errno(0x5b)
+       ENOPOLICY       = syscall.Errno(0x67)
+       ENOPROTOOPT     = syscall.Errno(0x2a)
+       ENOSPC          = syscall.Errno(0x1c)
+       ENOSR           = syscall.Errno(0x62)
+       ENOSTR          = syscall.Errno(0x63)
+       ENOSYS          = syscall.Errno(0x4e)
+       ENOTBLK         = syscall.Errno(0xf)
+       ENOTCONN        = syscall.Errno(0x39)
+       ENOTDIR         = syscall.Errno(0x14)
+       ENOTEMPTY       = syscall.Errno(0x42)
+       ENOTRECOVERABLE = syscall.Errno(0x68)
+       ENOTSOCK        = syscall.Errno(0x26)
+       ENOTSUP         = syscall.Errno(0x2d)
+       ENOTTY          = syscall.Errno(0x19)
+       ENXIO           = syscall.Errno(0x6)
+       EOPNOTSUPP      = syscall.Errno(0x66)
+       EOVERFLOW       = syscall.Errno(0x54)
+       EOWNERDEAD      = syscall.Errno(0x69)
+       EPERM           = syscall.Errno(0x1)
+       EPFNOSUPPORT    = syscall.Errno(0x2e)
+       EPIPE           = syscall.Errno(0x20)
+       EPROCLIM        = syscall.Errno(0x43)
+       EPROCUNAVAIL    = syscall.Errno(0x4c)
+       EPROGMISMATCH   = syscall.Errno(0x4b)
+       EPROGUNAVAIL    = syscall.Errno(0x4a)
+       EPROTO          = syscall.Errno(0x64)
+       EPROTONOSUPPORT = syscall.Errno(0x2b)
+       EPROTOTYPE      = syscall.Errno(0x29)
+       EPWROFF         = syscall.Errno(0x52)
+       EQFULL          = syscall.Errno(0x6a)
+       ERANGE          = syscall.Errno(0x22)
+       EREMOTE         = syscall.Errno(0x47)
+       EROFS           = syscall.Errno(0x1e)
+       ERPCMISMATCH    = syscall.Errno(0x49)
+       ESHLIBVERS      = syscall.Errno(0x57)
+       ESHUTDOWN       = syscall.Errno(0x3a)
+       ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+       ESPIPE          = syscall.Errno(0x1d)
+       ESRCH           = syscall.Errno(0x3)
+       ESTALE          = syscall.Errno(0x46)
+       ETIME           = syscall.Errno(0x65)
+       ETIMEDOUT       = syscall.Errno(0x3c)
+       ETOOMANYREFS    = syscall.Errno(0x3b)
+       ETXTBSY         = syscall.Errno(0x1a)
+       EUSERS          = syscall.Errno(0x44)
+       EWOULDBLOCK     = syscall.Errno(0x23)
+       EXDEV           = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+       SIGABRT   = syscall.Signal(0x6)
+       SIGALRM   = syscall.Signal(0xe)
+       SIGBUS    = syscall.Signal(0xa)
+       SIGCHLD   = syscall.Signal(0x14)
+       SIGCONT   = syscall.Signal(0x13)
+       SIGEMT    = syscall.Signal(0x7)
+       SIGFPE    = syscall.Signal(0x8)
+       SIGHUP    = syscall.Signal(0x1)
+       SIGILL    = syscall.Signal(0x4)
+       SIGINFO   = syscall.Signal(0x1d)
+       SIGINT    = syscall.Signal(0x2)
+       SIGIO     = syscall.Signal(0x17)
+       SIGIOT    = syscall.Signal(0x6)
+       SIGKILL   = syscall.Signal(0x9)
+       SIGPIPE   = syscall.Signal(0xd)
+       SIGPROF   = syscall.Signal(0x1b)
+       SIGQUIT   = syscall.Signal(0x3)
+       SIGSEGV   = syscall.Signal(0xb)
+       SIGSTOP   = syscall.Signal(0x11)
+       SIGSYS    = syscall.Signal(0xc)
+       SIGTERM   = syscall.Signal(0xf)
+       SIGTRAP   = syscall.Signal(0x5)
+       SIGTSTP   = syscall.Signal(0x12)
+       SIGTTIN   = syscall.Signal(0x15)
+       SIGTTOU   = syscall.Signal(0x16)
+       SIGURG    = syscall.Signal(0x10)
+       SIGUSR1   = syscall.Signal(0x1e)
+       SIGUSR2   = syscall.Signal(0x1f)
+       SIGVTALRM = syscall.Signal(0x1a)
+       SIGWINCH  = syscall.Signal(0x1c)
+       SIGXCPU   = syscall.Signal(0x18)
+       SIGXFSZ   = syscall.Signal(0x19)
+)
+
+// 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:  "resource 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:  "operation 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:  "device power is off",
+       83:  "device error",
+       84:  "value too large to be stored in data type",
+       85:  "bad executable (or shared library)",
+       86:  "bad CPU type in executable",
+       87:  "shared library version mismatch",
+       88:  "malformed Mach-o file",
+       89:  "operation canceled",
+       90:  "identifier removed",
+       91:  "no message of desired type",
+       92:  "illegal byte sequence",
+       93:  "attribute not found",
+       94:  "bad message",
+       95:  "EMULTIHOP (Reserved)",
+       96:  "no message available on STREAM",
+       97:  "ENOLINK (Reserved)",
+       98:  "no STREAM resources",
+       99:  "not a STREAM",
+       100: "protocol error",
+       101: "STREAM ioctl timeout",
+       102: "operation not supported on socket",
+       103: "policy not found",
+       104: "state not recoverable",
+       105: "previous owner died",
+       106: "interface output queue is full",
+}
+
+// Signal table
+var signals = [...]string{
+       1:  "hangup",
+       2:  "interrupt",
+       3:  "quit",
+       4:  "illegal instruction",
+       5:  "trace/BPT trap",
+       6:  "abort trap",
+       7:  "EMT trap",
+       8:  "floating point exception",
+       9:  "killed",
+       10: "bus error",
+       11: "segmentation fault",
+       12: "bad system call",
+       13: "broken pipe",
+       14: "alarm clock",
+       15: "terminated",
+       16: "urgent I/O condition",
+       17: "suspended (signal)",
+       18: "suspended",
+       19: "continued",
+       20: "child exited",
+       21: "stopped (tty input)",
+       22: "stopped (tty output)",
+       23: "I/O possible",
+       24: "cputime limit exceeded",
+       25: "filesize limit exceeded",
+       26: "virtual timer expired",
+       27: "profiling timer expired",
+       28: "window size changes",
+       29: "information request",
+       30: "user defined signal 1",
+       31: "user defined signal 2",
+}
diff --git a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_386.go b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_386.go
new file mode 100644 (file)
index 0000000..2a329f0
--- /dev/null
@@ -0,0 +1,1530 @@
+// mkerrors.sh -m32
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build 386,dragonfly
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m32 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+       AF_APPLETALK                      = 0x10
+       AF_ATM                            = 0x1e
+       AF_BLUETOOTH                      = 0x21
+       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_HYLINK                         = 0xf
+       AF_IEEE80211                      = 0x23
+       AF_IMPLINK                        = 0x3
+       AF_INET                           = 0x2
+       AF_INET6                          = 0x1c
+       AF_IPX                            = 0x17
+       AF_ISDN                           = 0x1a
+       AF_ISO                            = 0x7
+       AF_LAT                            = 0xe
+       AF_LINK                           = 0x12
+       AF_LOCAL                          = 0x1
+       AF_MAX                            = 0x24
+       AF_MPLS                           = 0x22
+       AF_NATM                           = 0x1d
+       AF_NETGRAPH                       = 0x20
+       AF_NS                             = 0x6
+       AF_OSI                            = 0x7
+       AF_PUP                            = 0x4
+       AF_ROUTE                          = 0x11
+       AF_SIP                            = 0x18
+       AF_SNA                            = 0xb
+       AF_UNIX                           = 0x1
+       AF_UNSPEC                         = 0x0
+       B0                                = 0x0
+       B110                              = 0x6e
+       B115200                           = 0x1c200
+       B1200                             = 0x4b0
+       B134                              = 0x86
+       B14400                            = 0x3840
+       B150                              = 0x96
+       B1800                             = 0x708
+       B19200                            = 0x4b00
+       B200                              = 0xc8
+       B230400                           = 0x38400
+       B2400                             = 0x960
+       B28800                            = 0x7080
+       B300                              = 0x12c
+       B38400                            = 0x9600
+       B4800                             = 0x12c0
+       B50                               = 0x32
+       B57600                            = 0xe100
+       B600                              = 0x258
+       B7200                             = 0x1c20
+       B75                               = 0x4b
+       B76800                            = 0x12c00
+       B9600                             = 0x2580
+       BIOCFLUSH                         = 0x20004268
+       BIOCGBLEN                         = 0x40044266
+       BIOCGDLT                          = 0x4004426a
+       BIOCGDLTLIST                      = 0xc0084279
+       BIOCGETIF                         = 0x4020426b
+       BIOCGHDRCMPLT                     = 0x40044274
+       BIOCGRSIG                         = 0x40044272
+       BIOCGRTIMEOUT                     = 0x4008426e
+       BIOCGSEESENT                      = 0x40044276
+       BIOCGSTATS                        = 0x4008426f
+       BIOCIMMEDIATE                     = 0x80044270
+       BIOCLOCK                          = 0x2000427a
+       BIOCPROMISC                       = 0x20004269
+       BIOCSBLEN                         = 0xc0044266
+       BIOCSDLT                          = 0x80044278
+       BIOCSETF                          = 0x80084267
+       BIOCSETIF                         = 0x8020426c
+       BIOCSETWF                         = 0x8008427b
+       BIOCSHDRCMPLT                     = 0x80044275
+       BIOCSRSIG                         = 0x80044273
+       BIOCSRTIMEOUT                     = 0x8008426d
+       BIOCSSEESENT                      = 0x80044277
+       BIOCVERSION                       = 0x40044271
+       BPF_A                             = 0x10
+       BPF_ABS                           = 0x20
+       BPF_ADD                           = 0x0
+       BPF_ALIGNMENT                     = 0x4
+       BPF_ALU                           = 0x4
+       BPF_AND                           = 0x50
+       BPF_B                             = 0x10
+       BPF_DEFAULTBUFSIZE                = 0x1000
+       BPF_DIV                           = 0x30
+       BPF_H                             = 0x8
+       BPF_IMM                           = 0x0
+       BPF_IND                           = 0x40
+       BPF_JA                            = 0x0
+       BPF_JEQ                           = 0x10
+       BPF_JGE                           = 0x30
+       BPF_JGT                           = 0x20
+       BPF_JMP                           = 0x5
+       BPF_JSET                          = 0x40
+       BPF_K                             = 0x0
+       BPF_LD                            = 0x0
+       BPF_LDX                           = 0x1
+       BPF_LEN                           = 0x80
+       BPF_LSH                           = 0x60
+       BPF_MAJOR_VERSION                 = 0x1
+       BPF_MAXBUFSIZE                    = 0x80000
+       BPF_MAXINSNS                      = 0x200
+       BPF_MAX_CLONES                    = 0x80
+       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                           = 0x0
+       BPF_TXA                           = 0x80
+       BPF_W                             = 0x0
+       BPF_X                             = 0x8
+       BRKINT                            = 0x2
+       CFLUSH                            = 0xf
+       CLOCAL                            = 0x8000
+       CREAD                             = 0x800
+       CS5                               = 0x0
+       CS6                               = 0x100
+       CS7                               = 0x200
+       CS8                               = 0x300
+       CSIZE                             = 0x300
+       CSTART                            = 0x11
+       CSTATUS                           = 0x14
+       CSTOP                             = 0x13
+       CSTOPB                            = 0x400
+       CSUSP                             = 0x1a
+       CTL_MAXNAME                       = 0xc
+       CTL_NET                           = 0x4
+       DLT_A429                          = 0xb8
+       DLT_A653_ICM                      = 0xb9
+       DLT_AIRONET_HEADER                = 0x78
+       DLT_APPLE_IP_OVER_IEEE1394        = 0x8a
+       DLT_ARCNET                        = 0x7
+       DLT_ARCNET_LINUX                  = 0x81
+       DLT_ATM_CLIP                      = 0x13
+       DLT_ATM_RFC1483                   = 0xb
+       DLT_AURORA                        = 0x7e
+       DLT_AX25                          = 0x3
+       DLT_AX25_KISS                     = 0xca
+       DLT_BACNET_MS_TP                  = 0xa5
+       DLT_BLUETOOTH_HCI_H4              = 0xbb
+       DLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9
+       DLT_CAN20B                        = 0xbe
+       DLT_CHAOS                         = 0x5
+       DLT_CHDLC                         = 0x68
+       DLT_CISCO_IOS                     = 0x76
+       DLT_C_HDLC                        = 0x68
+       DLT_C_HDLC_WITH_DIR               = 0xcd
+       DLT_DOCSIS                        = 0x8f
+       DLT_ECONET                        = 0x73
+       DLT_EN10MB                        = 0x1
+       DLT_EN3MB                         = 0x2
+       DLT_ENC                           = 0x6d
+       DLT_ERF                           = 0xc5
+       DLT_ERF_ETH                       = 0xaf
+       DLT_ERF_POS                       = 0xb0
+       DLT_FDDI                          = 0xa
+       DLT_FLEXRAY                       = 0xd2
+       DLT_FRELAY                        = 0x6b
+       DLT_FRELAY_WITH_DIR               = 0xce
+       DLT_GCOM_SERIAL                   = 0xad
+       DLT_GCOM_T1E1                     = 0xac
+       DLT_GPF_F                         = 0xab
+       DLT_GPF_T                         = 0xaa
+       DLT_GPRS_LLC                      = 0xa9
+       DLT_HHDLC                         = 0x79
+       DLT_IBM_SN                        = 0x92
+       DLT_IBM_SP                        = 0x91
+       DLT_IEEE802                       = 0x6
+       DLT_IEEE802_11                    = 0x69
+       DLT_IEEE802_11_RADIO              = 0x7f
+       DLT_IEEE802_11_RADIO_AVS          = 0xa3
+       DLT_IEEE802_15_4                  = 0xc3
+       DLT_IEEE802_15_4_LINUX            = 0xbf
+       DLT_IEEE802_15_4_NONASK_PHY       = 0xd7
+       DLT_IEEE802_16_MAC_CPS            = 0xbc
+       DLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1
+       DLT_IPFILTER                      = 0x74
+       DLT_IPMB                          = 0xc7
+       DLT_IPMB_LINUX                    = 0xd1
+       DLT_IP_OVER_FC                    = 0x7a
+       DLT_JUNIPER_ATM1                  = 0x89
+       DLT_JUNIPER_ATM2                  = 0x87
+       DLT_JUNIPER_CHDLC                 = 0xb5
+       DLT_JUNIPER_ES                    = 0x84
+       DLT_JUNIPER_ETHER                 = 0xb2
+       DLT_JUNIPER_FRELAY                = 0xb4
+       DLT_JUNIPER_GGSN                  = 0x85
+       DLT_JUNIPER_ISM                   = 0xc2
+       DLT_JUNIPER_MFR                   = 0x86
+       DLT_JUNIPER_MLFR                  = 0x83
+       DLT_JUNIPER_MLPPP                 = 0x82
+       DLT_JUNIPER_MONITOR               = 0xa4
+       DLT_JUNIPER_PIC_PEER              = 0xae
+       DLT_JUNIPER_PPP                   = 0xb3
+       DLT_JUNIPER_PPPOE                 = 0xa7
+       DLT_JUNIPER_PPPOE_ATM             = 0xa8
+       DLT_JUNIPER_SERVICES              = 0x88
+       DLT_JUNIPER_ST                    = 0xc8
+       DLT_JUNIPER_VP                    = 0xb7
+       DLT_LAPB_WITH_DIR                 = 0xcf
+       DLT_LAPD                          = 0xcb
+       DLT_LIN                           = 0xd4
+       DLT_LINUX_IRDA                    = 0x90
+       DLT_LINUX_LAPD                    = 0xb1
+       DLT_LINUX_SLL                     = 0x71
+       DLT_LOOP                          = 0x6c
+       DLT_LTALK                         = 0x72
+       DLT_MFR                           = 0xb6
+       DLT_MOST                          = 0xd3
+       DLT_MTP2                          = 0x8c
+       DLT_MTP2_WITH_PHDR                = 0x8b
+       DLT_MTP3                          = 0x8d
+       DLT_NULL                          = 0x0
+       DLT_PCI_EXP                       = 0x7d
+       DLT_PFLOG                         = 0x75
+       DLT_PFSYNC                        = 0x12
+       DLT_PPI                           = 0xc0
+       DLT_PPP                           = 0x9
+       DLT_PPP_BSDOS                     = 0x10
+       DLT_PPP_ETHER                     = 0x33
+       DLT_PPP_PPPD                      = 0xa6
+       DLT_PPP_SERIAL                    = 0x32
+       DLT_PPP_WITH_DIR                  = 0xcc
+       DLT_PRISM_HEADER                  = 0x77
+       DLT_PRONET                        = 0x4
+       DLT_RAIF1                         = 0xc6
+       DLT_RAW                           = 0xc
+       DLT_REDBACK_SMARTEDGE             = 0x20
+       DLT_RIO                           = 0x7c
+       DLT_SCCP                          = 0x8e
+       DLT_SITA                          = 0xc4
+       DLT_SLIP                          = 0x8
+       DLT_SLIP_BSDOS                    = 0xf
+       DLT_SUNATM                        = 0x7b
+       DLT_SYMANTEC_FIREWALL             = 0x63
+       DLT_TZSP                          = 0x80
+       DLT_USB                           = 0xba
+       DLT_USB_LINUX                     = 0xbd
+       DLT_X2E_SERIAL                    = 0xd5
+       DLT_X2E_XORAYA                    = 0xd6
+       DT_BLK                            = 0x6
+       DT_CHR                            = 0x2
+       DT_DBF                            = 0xf
+       DT_DIR                            = 0x4
+       DT_FIFO                           = 0x1
+       DT_LNK                            = 0xa
+       DT_REG                            = 0x8
+       DT_SOCK                           = 0xc
+       DT_UNKNOWN                        = 0x0
+       DT_WHT                            = 0xe
+       ECHO                              = 0x8
+       ECHOCTL                           = 0x40
+       ECHOE                             = 0x2
+       ECHOK                             = 0x4
+       ECHOKE                            = 0x1
+       ECHONL                            = 0x10
+       ECHOPRT                           = 0x20
+       EVFILT_AIO                        = -0x3
+       EVFILT_EXCEPT                     = -0x8
+       EVFILT_MARKER                     = 0xf
+       EVFILT_PROC                       = -0x5
+       EVFILT_READ                       = -0x1
+       EVFILT_SIGNAL                     = -0x6
+       EVFILT_SYSCOUNT                   = 0x8
+       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_NODATA                         = 0x1000
+       EV_ONESHOT                        = 0x10
+       EV_SYSFLAGS                       = 0xf000
+       EXTA                              = 0x4b00
+       EXTB                              = 0x9600
+       EXTEXIT_LWP                       = 0x10000
+       EXTEXIT_PROC                      = 0x0
+       EXTEXIT_SETINT                    = 0x1
+       EXTEXIT_SIMPLE                    = 0x0
+       EXTPROC                           = 0x800
+       FD_CLOEXEC                        = 0x1
+       FD_SETSIZE                        = 0x400
+       FLUSHO                            = 0x800000
+       F_DUP2FD                          = 0xa
+       F_DUP2FD_CLOEXEC                  = 0x12
+       F_DUPFD                           = 0x0
+       F_DUPFD_CLOEXEC                   = 0x11
+       F_GETFD                           = 0x1
+       F_GETFL                           = 0x3
+       F_GETLK                           = 0x7
+       F_GETOWN                          = 0x5
+       F_OK                              = 0x0
+       F_RDLCK                           = 0x1
+       F_SETFD                           = 0x2
+       F_SETFL                           = 0x4
+       F_SETLK                           = 0x8
+       F_SETLKW                          = 0x9
+       F_SETOWN                          = 0x6
+       F_UNLCK                           = 0x2
+       F_WRLCK                           = 0x3
+       HUPCL                             = 0x4000
+       ICANON                            = 0x100
+       ICMP6_FILTER                      = 0x12
+       ICRNL                             = 0x100
+       IEXTEN                            = 0x400
+       IFAN_ARRIVAL                      = 0x0
+       IFAN_DEPARTURE                    = 0x1
+       IFF_ALLMULTI                      = 0x200
+       IFF_ALTPHYS                       = 0x4000
+       IFF_BROADCAST                     = 0x2
+       IFF_CANTCHANGE                    = 0x118e72
+       IFF_DEBUG                         = 0x4
+       IFF_LINK0                         = 0x1000
+       IFF_LINK1                         = 0x2000
+       IFF_LINK2                         = 0x4000
+       IFF_LOOPBACK                      = 0x8
+       IFF_MONITOR                       = 0x40000
+       IFF_MULTICAST                     = 0x8000
+       IFF_NOARP                         = 0x80
+       IFF_NPOLLING                      = 0x100000
+       IFF_OACTIVE                       = 0x400
+       IFF_OACTIVE_COMPAT                = 0x400
+       IFF_POINTOPOINT                   = 0x10
+       IFF_POLLING                       = 0x10000
+       IFF_POLLING_COMPAT                = 0x10000
+       IFF_PPROMISC                      = 0x20000
+       IFF_PROMISC                       = 0x100
+       IFF_RUNNING                       = 0x40
+       IFF_SIMPLEX                       = 0x800
+       IFF_SMART                         = 0x20
+       IFF_STATICARP                     = 0x80000
+       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_BRIDGE                        = 0xd1
+       IFT_BSC                           = 0x53
+       IFT_CARP                          = 0xf8
+       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_DS0                           = 0x51
+       IFT_DS0BUNDLE                     = 0x52
+       IFT_DS1FDL                        = 0xaa
+       IFT_DS3                           = 0x1e
+       IFT_DTM                           = 0x8c
+       IFT_DVBASILN                      = 0xac
+       IFT_DVBASIOUT                     = 0xad
+       IFT_DVBRCCDOWNSTREAM              = 0x93
+       IFT_DVBRCCMACLAYER                = 0x92
+       IFT_DVBRCCUPSTREAM                = 0x94
+       IFT_ENC                           = 0xf4
+       IFT_EON                           = 0x19
+       IFT_EPLRS                         = 0x57
+       IFT_ESCON                         = 0x49
+       IFT_ETHER                         = 0x6
+       IFT_FAITH                         = 0xf2
+       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_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_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_PFSYNC                        = 0xf6
+       IFT_PLC                           = 0xae
+       IFT_POS                           = 0xab
+       IFT_PPP                           = 0x17
+       IFT_PPPMULTILINKBUNDLE            = 0x6c
+       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                           = 0xf1
+       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_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_STF                           = 0xf3
+       IFT_T1                            = 0x12
+       IFT_TDLC                          = 0x74
+       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_VOICEEM                       = 0x64
+       IFT_VOICEENCAP                    = 0x67
+       IFT_VOICEFXO                      = 0x65
+       IFT_VOICEFXS                      = 0x66
+       IFT_VOICEOVERATM                  = 0x98
+       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
+       IGNBRK                            = 0x1
+       IGNCR                             = 0x80
+       IGNPAR                            = 0x4
+       IMAXBEL                           = 0x2000
+       INLCR                             = 0x40
+       INPCK                             = 0x10
+       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
+       IPPROTO_3PC                       = 0x22
+       IPPROTO_ADFS                      = 0x44
+       IPPROTO_AH                        = 0x33
+       IPPROTO_AHIP                      = 0x3d
+       IPPROTO_APES                      = 0x63
+       IPPROTO_ARGUS                     = 0xd
+       IPPROTO_AX25                      = 0x5d
+       IPPROTO_BHA                       = 0x31
+       IPPROTO_BLT                       = 0x1e
+       IPPROTO_BRSATMON                  = 0x4c
+       IPPROTO_CARP                      = 0x70
+       IPPROTO_CFTP                      = 0x3e
+       IPPROTO_CHAOS                     = 0x10
+       IPPROTO_CMTP                      = 0x26
+       IPPROTO_CPHB                      = 0x49
+       IPPROTO_CPNX                      = 0x48
+       IPPROTO_DDP                       = 0x25
+       IPPROTO_DGP                       = 0x56
+       IPPROTO_DIVERT                    = 0xfe
+       IPPROTO_DONE                      = 0x101
+       IPPROTO_DSTOPTS                   = 0x3c
+       IPPROTO_EGP                       = 0x8
+       IPPROTO_EMCON                     = 0xe
+       IPPROTO_ENCAP                     = 0x62
+       IPPROTO_EON                       = 0x50
+       IPPROTO_ESP                       = 0x32
+       IPPROTO_ETHERIP                   = 0x61
+       IPPROTO_FRAGMENT                  = 0x2c
+       IPPROTO_GGP                       = 0x3
+       IPPROTO_GMTP                      = 0x64
+       IPPROTO_GRE                       = 0x2f
+       IPPROTO_HELLO                     = 0x3f
+       IPPROTO_HMP                       = 0x14
+       IPPROTO_HOPOPTS                   = 0x0
+       IPPROTO_ICMP                      = 0x1
+       IPPROTO_ICMPV6                    = 0x3a
+       IPPROTO_IDP                       = 0x16
+       IPPROTO_IDPR                      = 0x23
+       IPPROTO_IDRP                      = 0x2d
+       IPPROTO_IGMP                      = 0x2
+       IPPROTO_IGP                       = 0x55
+       IPPROTO_IGRP                      = 0x58
+       IPPROTO_IL                        = 0x28
+       IPPROTO_INLSP                     = 0x34
+       IPPROTO_INP                       = 0x20
+       IPPROTO_IP                        = 0x0
+       IPPROTO_IPCOMP                    = 0x6c
+       IPPROTO_IPCV                      = 0x47
+       IPPROTO_IPEIP                     = 0x5e
+       IPPROTO_IPIP                      = 0x4
+       IPPROTO_IPPC                      = 0x43
+       IPPROTO_IPV4                      = 0x4
+       IPPROTO_IPV6                      = 0x29
+       IPPROTO_IRTP                      = 0x1c
+       IPPROTO_KRYPTOLAN                 = 0x41
+       IPPROTO_LARP                      = 0x5b
+       IPPROTO_LEAF1                     = 0x19
+       IPPROTO_LEAF2                     = 0x1a
+       IPPROTO_MAX                       = 0x100
+       IPPROTO_MAXID                     = 0x34
+       IPPROTO_MEAS                      = 0x13
+       IPPROTO_MHRP                      = 0x30
+       IPPROTO_MICP                      = 0x5f
+       IPPROTO_MOBILE                    = 0x37
+       IPPROTO_MTP                       = 0x5c
+       IPPROTO_MUX                       = 0x12
+       IPPROTO_ND                        = 0x4d
+       IPPROTO_NHRP                      = 0x36
+       IPPROTO_NONE                      = 0x3b
+       IPPROTO_NSP                       = 0x1f
+       IPPROTO_NVPII                     = 0xb
+       IPPROTO_OSPFIGP                   = 0x59
+       IPPROTO_PFSYNC                    = 0xf0
+       IPPROTO_PGM                       = 0x71
+       IPPROTO_PIGP                      = 0x9
+       IPPROTO_PIM                       = 0x67
+       IPPROTO_PRM                       = 0x15
+       IPPROTO_PUP                       = 0xc
+       IPPROTO_PVP                       = 0x4b
+       IPPROTO_RAW                       = 0xff
+       IPPROTO_RCCMON                    = 0xa
+       IPPROTO_RDP                       = 0x1b
+       IPPROTO_ROUTING                   = 0x2b
+       IPPROTO_RSVP                      = 0x2e
+       IPPROTO_RVD                       = 0x42
+       IPPROTO_SATEXPAK                  = 0x40
+       IPPROTO_SATMON                    = 0x45
+       IPPROTO_SCCSP                     = 0x60
+       IPPROTO_SCTP                      = 0x84
+       IPPROTO_SDRP                      = 0x2a
+       IPPROTO_SEP                       = 0x21
+       IPPROTO_SKIP                      = 0x39
+       IPPROTO_SRPC                      = 0x5a
+       IPPROTO_ST                        = 0x7
+       IPPROTO_SVMTP                     = 0x52
+       IPPROTO_SWIPE                     = 0x35
+       IPPROTO_TCF                       = 0x57
+       IPPROTO_TCP                       = 0x6
+       IPPROTO_TLSP                      = 0x38
+       IPPROTO_TP                        = 0x1d
+       IPPROTO_TPXX                      = 0x27
+       IPPROTO_TRUNK1                    = 0x17
+       IPPROTO_TRUNK2                    = 0x18
+       IPPROTO_TTP                       = 0x54
+       IPPROTO_UDP                       = 0x11
+       IPPROTO_UNKNOWN                   = 0x102
+       IPPROTO_VINES                     = 0x53
+       IPPROTO_VISA                      = 0x46
+       IPPROTO_VMTP                      = 0x51
+       IPPROTO_WBEXPAK                   = 0x4f
+       IPPROTO_WBMON                     = 0x4e
+       IPPROTO_WSN                       = 0x4a
+       IPPROTO_XNET                      = 0xf
+       IPPROTO_XTP                       = 0x24
+       IPV6_AUTOFLOWLABEL                = 0x3b
+       IPV6_BINDV6ONLY                   = 0x1b
+       IPV6_CHECKSUM                     = 0x1a
+       IPV6_DEFAULT_MULTICAST_HOPS       = 0x1
+       IPV6_DEFAULT_MULTICAST_LOOP       = 0x1
+       IPV6_DEFHLIM                      = 0x40
+       IPV6_DONTFRAG                     = 0x3e
+       IPV6_DSTOPTS                      = 0x32
+       IPV6_FAITH                        = 0x1d
+       IPV6_FLOWINFO_MASK                = 0xffffff0f
+       IPV6_FLOWLABEL_MASK               = 0xffff0f00
+       IPV6_FRAGTTL                      = 0x78
+       IPV6_FW_ADD                       = 0x1e
+       IPV6_FW_DEL                       = 0x1f
+       IPV6_FW_FLUSH                     = 0x20
+       IPV6_FW_GET                       = 0x22
+       IPV6_FW_ZERO                      = 0x21
+       IPV6_HLIMDEC                      = 0x1
+       IPV6_HOPLIMIT                     = 0x2f
+       IPV6_HOPOPTS                      = 0x31
+       IPV6_IPSEC_POLICY                 = 0x1c
+       IPV6_JOIN_GROUP                   = 0xc
+       IPV6_LEAVE_GROUP                  = 0xd
+       IPV6_MAXHLIM                      = 0xff
+       IPV6_MAXPACKET                    = 0xffff
+       IPV6_MMTU                         = 0x500
+       IPV6_MSFILTER                     = 0x4a
+       IPV6_MULTICAST_HOPS               = 0xa
+       IPV6_MULTICAST_IF                 = 0x9
+       IPV6_MULTICAST_LOOP               = 0xb
+       IPV6_NEXTHOP                      = 0x30
+       IPV6_PATHMTU                      = 0x2c
+       IPV6_PKTINFO                      = 0x2e
+       IPV6_PKTOPTIONS                   = 0x34
+       IPV6_PORTRANGE                    = 0xe
+       IPV6_PORTRANGE_DEFAULT            = 0x0
+       IPV6_PORTRANGE_HIGH               = 0x1
+       IPV6_PORTRANGE_LOW                = 0x2
+       IPV6_PREFER_TEMPADDR              = 0x3f
+       IPV6_RECVDSTOPTS                  = 0x28
+       IPV6_RECVHOPLIMIT                 = 0x25
+       IPV6_RECVHOPOPTS                  = 0x27
+       IPV6_RECVPATHMTU                  = 0x2b
+       IPV6_RECVPKTINFO                  = 0x24
+       IPV6_RECVRTHDR                    = 0x26
+       IPV6_RECVTCLASS                   = 0x39
+       IPV6_RTHDR                        = 0x33
+       IPV6_RTHDRDSTOPTS                 = 0x23
+       IPV6_RTHDR_LOOSE                  = 0x0
+       IPV6_RTHDR_STRICT                 = 0x1
+       IPV6_RTHDR_TYPE_0                 = 0x0
+       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_DEFAULT_MULTICAST_LOOP         = 0x1
+       IP_DEFAULT_MULTICAST_TTL          = 0x1
+       IP_DF                             = 0x4000
+       IP_DROP_MEMBERSHIP                = 0xd
+       IP_DUMMYNET_CONFIGURE             = 0x3c
+       IP_DUMMYNET_DEL                   = 0x3d
+       IP_DUMMYNET_FLUSH                 = 0x3e
+       IP_DUMMYNET_GET                   = 0x40
+       IP_FAITH                          = 0x16
+       IP_FW_ADD                         = 0x32
+       IP_FW_DEL                         = 0x33
+       IP_FW_FLUSH                       = 0x34
+       IP_FW_GET                         = 0x36
+       IP_FW_RESETLOG                    = 0x37
+       IP_FW_ZERO                        = 0x35
+       IP_HDRINCL                        = 0x2
+       IP_IPSEC_POLICY                   = 0x15
+       IP_MAXPACKET                      = 0xffff
+       IP_MAX_MEMBERSHIPS                = 0x14
+       IP_MF                             = 0x2000
+       IP_MINTTL                         = 0x42
+       IP_MSS                            = 0x240
+       IP_MULTICAST_IF                   = 0x9
+       IP_MULTICAST_LOOP                 = 0xb
+       IP_MULTICAST_TTL                  = 0xa
+       IP_MULTICAST_VIF                  = 0xe
+       IP_OFFMASK                        = 0x1fff
+       IP_OPTIONS                        = 0x1
+       IP_PORTRANGE                      = 0x13
+       IP_PORTRANGE_DEFAULT              = 0x0
+       IP_PORTRANGE_HIGH                 = 0x1
+       IP_PORTRANGE_LOW                  = 0x2
+       IP_RECVDSTADDR                    = 0x7
+       IP_RECVIF                         = 0x14
+       IP_RECVOPTS                       = 0x5
+       IP_RECVRETOPTS                    = 0x6
+       IP_RECVTTL                        = 0x41
+       IP_RETOPTS                        = 0x8
+       IP_RF                             = 0x8000
+       IP_RSVP_OFF                       = 0x10
+       IP_RSVP_ON                        = 0xf
+       IP_RSVP_VIF_OFF                   = 0x12
+       IP_RSVP_VIF_ON                    = 0x11
+       IP_TOS                            = 0x3
+       IP_TTL                            = 0x4
+       ISIG                              = 0x80
+       ISTRIP                            = 0x20
+       IXANY                             = 0x800
+       IXOFF                             = 0x400
+       IXON                              = 0x200
+       LOCK_EX                           = 0x2
+       LOCK_NB                           = 0x4
+       LOCK_SH                           = 0x1
+       LOCK_UN                           = 0x8
+       MADV_AUTOSYNC                     = 0x7
+       MADV_CONTROL_END                  = 0xb
+       MADV_CONTROL_START                = 0xa
+       MADV_CORE                         = 0x9
+       MADV_DONTNEED                     = 0x4
+       MADV_FREE                         = 0x5
+       MADV_INVAL                        = 0xa
+       MADV_NOCORE                       = 0x8
+       MADV_NORMAL                       = 0x0
+       MADV_NOSYNC                       = 0x6
+       MADV_RANDOM                       = 0x1
+       MADV_SEQUENTIAL                   = 0x2
+       MADV_SETMAP                       = 0xb
+       MADV_WILLNEED                     = 0x3
+       MAP_ANON                          = 0x1000
+       MAP_COPY                          = 0x2
+       MAP_FILE                          = 0x0
+       MAP_FIXED                         = 0x10
+       MAP_HASSEMAPHORE                  = 0x200
+       MAP_INHERIT                       = 0x80
+       MAP_NOCORE                        = 0x20000
+       MAP_NOEXTEND                      = 0x100
+       MAP_NORESERVE                     = 0x40
+       MAP_NOSYNC                        = 0x800
+       MAP_PRIVATE                       = 0x2
+       MAP_RENAME                        = 0x20
+       MAP_SHARED                        = 0x1
+       MAP_SIZEALIGN                     = 0x40000
+       MAP_STACK                         = 0x400
+       MAP_TRYFIXED                      = 0x10000
+       MAP_VPAGETABLE                    = 0x2000
+       MCL_CURRENT                       = 0x1
+       MCL_FUTURE                        = 0x2
+       MSG_CTRUNC                        = 0x20
+       MSG_DONTROUTE                     = 0x4
+       MSG_DONTWAIT                      = 0x80
+       MSG_EOF                           = 0x100
+       MSG_EOR                           = 0x8
+       MSG_FBLOCKING                     = 0x10000
+       MSG_FMASK                         = 0xffff0000
+       MSG_FNONBLOCKING                  = 0x20000
+       MSG_NOSIGNAL                      = 0x400
+       MSG_NOTIFICATION                  = 0x200
+       MSG_OOB                           = 0x1
+       MSG_PEEK                          = 0x2
+       MSG_SYNC                          = 0x800
+       MSG_TRUNC                         = 0x10
+       MSG_WAITALL                       = 0x40
+       MS_ASYNC                          = 0x1
+       MS_INVALIDATE                     = 0x2
+       MS_SYNC                           = 0x0
+       NAME_MAX                          = 0xff
+       NET_RT_DUMP                       = 0x1
+       NET_RT_FLAGS                      = 0x2
+       NET_RT_IFLIST                     = 0x3
+       NET_RT_MAXID                      = 0x4
+       NOFLSH                            = 0x80000000
+       NOTE_ATTRIB                       = 0x8
+       NOTE_CHILD                        = 0x4
+       NOTE_DELETE                       = 0x1
+       NOTE_EXEC                         = 0x20000000
+       NOTE_EXIT                         = 0x80000000
+       NOTE_EXTEND                       = 0x4
+       NOTE_FORK                         = 0x40000000
+       NOTE_LINK                         = 0x10
+       NOTE_LOWAT                        = 0x1
+       NOTE_OOB                          = 0x2
+       NOTE_PCTRLMASK                    = 0xf0000000
+       NOTE_PDATAMASK                    = 0xfffff
+       NOTE_RENAME                       = 0x20
+       NOTE_REVOKE                       = 0x40
+       NOTE_TRACK                        = 0x1
+       NOTE_TRACKERR                     = 0x2
+       NOTE_WRITE                        = 0x2
+       OCRNL                             = 0x10
+       ONLCR                             = 0x2
+       ONLRET                            = 0x40
+       ONOCR                             = 0x20
+       ONOEOT                            = 0x8
+       OPOST                             = 0x1
+       O_ACCMODE                         = 0x3
+       O_APPEND                          = 0x8
+       O_ASYNC                           = 0x40
+       O_CLOEXEC                         = 0x20000
+       O_CREAT                           = 0x200
+       O_DIRECT                          = 0x10000
+       O_DIRECTORY                       = 0x8000000
+       O_EXCL                            = 0x800
+       O_EXLOCK                          = 0x20
+       O_FAPPEND                         = 0x100000
+       O_FASYNCWRITE                     = 0x800000
+       O_FBLOCKING                       = 0x40000
+       O_FBUFFERED                       = 0x2000000
+       O_FMASK                           = 0x7fc0000
+       O_FNONBLOCKING                    = 0x80000
+       O_FOFFSET                         = 0x200000
+       O_FSYNC                           = 0x80
+       O_FSYNCWRITE                      = 0x400000
+       O_FUNBUFFERED                     = 0x1000000
+       O_MAPONREAD                       = 0x4000000
+       O_NDELAY                          = 0x4
+       O_NOCTTY                          = 0x8000
+       O_NOFOLLOW                        = 0x100
+       O_NONBLOCK                        = 0x4
+       O_RDONLY                          = 0x0
+       O_RDWR                            = 0x2
+       O_SHLOCK                          = 0x10
+       O_SYNC                            = 0x80
+       O_TRUNC                           = 0x400
+       O_WRONLY                          = 0x1
+       PARENB                            = 0x1000
+       PARMRK                            = 0x8
+       PARODD                            = 0x2000
+       PENDIN                            = 0x20000000
+       PRIO_PGRP                         = 0x1
+       PRIO_PROCESS                      = 0x0
+       PRIO_USER                         = 0x2
+       PROT_EXEC                         = 0x4
+       PROT_NONE                         = 0x0
+       PROT_READ                         = 0x1
+       PROT_WRITE                        = 0x2
+       RLIMIT_AS                         = 0xa
+       RLIMIT_CORE                       = 0x4
+       RLIMIT_CPU                        = 0x0
+       RLIMIT_DATA                       = 0x2
+       RLIMIT_FSIZE                      = 0x1
+       RLIMIT_NOFILE                     = 0x8
+       RLIMIT_STACK                      = 0x3
+       RLIM_INFINITY                     = 0x7fffffffffffffff
+       RTAX_AUTHOR                       = 0x6
+       RTAX_BRD                          = 0x7
+       RTAX_DST                          = 0x0
+       RTAX_GATEWAY                      = 0x1
+       RTAX_GENMASK                      = 0x3
+       RTAX_IFA                          = 0x5
+       RTAX_IFP                          = 0x4
+       RTAX_MAX                          = 0xb
+       RTAX_MPLS1                        = 0x8
+       RTAX_MPLS2                        = 0x9
+       RTAX_MPLS3                        = 0xa
+       RTAX_NETMASK                      = 0x2
+       RTA_AUTHOR                        = 0x40
+       RTA_BRD                           = 0x80
+       RTA_DST                           = 0x1
+       RTA_GATEWAY                       = 0x2
+       RTA_GENMASK                       = 0x8
+       RTA_IFA                           = 0x20
+       RTA_IFP                           = 0x10
+       RTA_MPLS1                         = 0x100
+       RTA_MPLS2                         = 0x200
+       RTA_MPLS3                         = 0x400
+       RTA_NETMASK                       = 0x4
+       RTF_BLACKHOLE                     = 0x1000
+       RTF_BROADCAST                     = 0x400000
+       RTF_CLONING                       = 0x100
+       RTF_DONE                          = 0x40
+       RTF_DYNAMIC                       = 0x10
+       RTF_GATEWAY                       = 0x2
+       RTF_HOST                          = 0x4
+       RTF_LLINFO                        = 0x400
+       RTF_LOCAL                         = 0x200000
+       RTF_MODIFIED                      = 0x20
+       RTF_MPLSOPS                       = 0x1000000
+       RTF_MULTICAST                     = 0x800000
+       RTF_PINNED                        = 0x100000
+       RTF_PRCLONING                     = 0x10000
+       RTF_PROTO1                        = 0x8000
+       RTF_PROTO2                        = 0x4000
+       RTF_PROTO3                        = 0x40000
+       RTF_REJECT                        = 0x8
+       RTF_STATIC                        = 0x800
+       RTF_UP                            = 0x1
+       RTF_WASCLONED                     = 0x20000
+       RTF_XRESOLVE                      = 0x200
+       RTM_ADD                           = 0x1
+       RTM_CHANGE                        = 0x3
+       RTM_DELADDR                       = 0xd
+       RTM_DELETE                        = 0x2
+       RTM_DELMADDR                      = 0x10
+       RTM_GET                           = 0x4
+       RTM_IEEE80211                     = 0x12
+       RTM_IFANNOUNCE                    = 0x11
+       RTM_IFINFO                        = 0xe
+       RTM_LOCK                          = 0x8
+       RTM_LOSING                        = 0x5
+       RTM_MISS                          = 0x7
+       RTM_NEWADDR                       = 0xc
+       RTM_NEWMADDR                      = 0xf
+       RTM_OLDADD                        = 0x9
+       RTM_OLDDEL                        = 0xa
+       RTM_REDIRECT                      = 0x6
+       RTM_RESOLVE                       = 0xb
+       RTM_RTTUNIT                       = 0xf4240
+       RTM_VERSION                       = 0x6
+       RTV_EXPIRE                        = 0x4
+       RTV_HOPCOUNT                      = 0x2
+       RTV_IWCAPSEGS                     = 0x400
+       RTV_IWMAXSEGS                     = 0x200
+       RTV_MSL                           = 0x100
+       RTV_MTU                           = 0x1
+       RTV_RPIPE                         = 0x8
+       RTV_RTT                           = 0x40
+       RTV_RTTVAR                        = 0x80
+       RTV_SPIPE                         = 0x10
+       RTV_SSTHRESH                      = 0x20
+       RUSAGE_CHILDREN                   = -0x1
+       RUSAGE_SELF                       = 0x0
+       SCM_CREDS                         = 0x3
+       SCM_RIGHTS                        = 0x1
+       SCM_TIMESTAMP                     = 0x2
+       SHUT_RD                           = 0x0
+       SHUT_RDWR                         = 0x2
+       SHUT_WR                           = 0x1
+       SIOCADDMULTI                      = 0x80206931
+       SIOCADDRT                         = 0x8030720a
+       SIOCAIFADDR                       = 0x8040691a
+       SIOCALIFADDR                      = 0x8118691b
+       SIOCATMARK                        = 0x40047307
+       SIOCDELMULTI                      = 0x80206932
+       SIOCDELRT                         = 0x8030720b
+       SIOCDIFADDR                       = 0x80206919
+       SIOCDIFPHYADDR                    = 0x80206949
+       SIOCDLIFADDR                      = 0x8118691d
+       SIOCGDRVSPEC                      = 0xc01c697b
+       SIOCGETSGCNT                      = 0xc0147210
+       SIOCGETVIFCNT                     = 0xc014720f
+       SIOCGHIWAT                        = 0x40047301
+       SIOCGIFADDR                       = 0xc0206921
+       SIOCGIFBRDADDR                    = 0xc0206923
+       SIOCGIFCAP                        = 0xc020691f
+       SIOCGIFCONF                       = 0xc0086924
+       SIOCGIFDATA                       = 0xc0206926
+       SIOCGIFDSTADDR                    = 0xc0206922
+       SIOCGIFFLAGS                      = 0xc0206911
+       SIOCGIFGENERIC                    = 0xc020693a
+       SIOCGIFGMEMB                      = 0xc024698a
+       SIOCGIFINDEX                      = 0xc0206920
+       SIOCGIFMEDIA                      = 0xc0286938
+       SIOCGIFMETRIC                     = 0xc0206917
+       SIOCGIFMTU                        = 0xc0206933
+       SIOCGIFNETMASK                    = 0xc0206925
+       SIOCGIFPDSTADDR                   = 0xc0206948
+       SIOCGIFPHYS                       = 0xc0206935
+       SIOCGIFPOLLCPU                    = 0xc020697e
+       SIOCGIFPSRCADDR                   = 0xc0206947
+       SIOCGIFSTATUS                     = 0xc331693b
+       SIOCGIFTSOLEN                     = 0xc0206980
+       SIOCGLIFADDR                      = 0xc118691c
+       SIOCGLIFPHYADDR                   = 0xc118694b
+       SIOCGLOWAT                        = 0x40047303
+       SIOCGPGRP                         = 0x40047309
+       SIOCGPRIVATE_0                    = 0xc0206950
+       SIOCGPRIVATE_1                    = 0xc0206951
+       SIOCIFCREATE                      = 0xc020697a
+       SIOCIFCREATE2                     = 0xc020697c
+       SIOCIFDESTROY                     = 0x80206979
+       SIOCIFGCLONERS                    = 0xc00c6978
+       SIOCSDRVSPEC                      = 0x801c697b
+       SIOCSHIWAT                        = 0x80047300
+       SIOCSIFADDR                       = 0x8020690c
+       SIOCSIFBRDADDR                    = 0x80206913
+       SIOCSIFCAP                        = 0x8020691e
+       SIOCSIFDSTADDR                    = 0x8020690e
+       SIOCSIFFLAGS                      = 0x80206910
+       SIOCSIFGENERIC                    = 0x80206939
+       SIOCSIFLLADDR                     = 0x8020693c
+       SIOCSIFMEDIA                      = 0xc0206937
+       SIOCSIFMETRIC                     = 0x80206918
+       SIOCSIFMTU                        = 0x80206934
+       SIOCSIFNAME                       = 0x80206928
+       SIOCSIFNETMASK                    = 0x80206916
+       SIOCSIFPHYADDR                    = 0x80406946
+       SIOCSIFPHYS                       = 0x80206936
+       SIOCSIFPOLLCPU                    = 0x8020697d
+       SIOCSIFTSOLEN                     = 0x8020697f
+       SIOCSLIFPHYADDR                   = 0x8118694a
+       SIOCSLOWAT                        = 0x80047302
+       SIOCSPGRP                         = 0x80047308
+       SOCK_DGRAM                        = 0x2
+       SOCK_MAXADDRLEN                   = 0xff
+       SOCK_RAW                          = 0x3
+       SOCK_RDM                          = 0x4
+       SOCK_SEQPACKET                    = 0x5
+       SOCK_STREAM                       = 0x1
+       SOL_SOCKET                        = 0xffff
+       SOMAXCONN                         = 0x80
+       SO_ACCEPTCONN                     = 0x2
+       SO_ACCEPTFILTER                   = 0x1000
+       SO_BROADCAST                      = 0x20
+       SO_DEBUG                          = 0x1
+       SO_DONTROUTE                      = 0x10
+       SO_ERROR                          = 0x1007
+       SO_KEEPALIVE                      = 0x8
+       SO_LINGER                         = 0x80
+       SO_NOSIGPIPE                      = 0x800
+       SO_OOBINLINE                      = 0x100
+       SO_RCVBUF                         = 0x1002
+       SO_RCVLOWAT                       = 0x1004
+       SO_RCVTIMEO                       = 0x1006
+       SO_REUSEADDR                      = 0x4
+       SO_REUSEPORT                      = 0x200
+       SO_SNDBUF                         = 0x1001
+       SO_SNDLOWAT                       = 0x1003
+       SO_SNDSPACE                       = 0x100a
+       SO_SNDTIMEO                       = 0x1005
+       SO_TIMESTAMP                      = 0x400
+       SO_TYPE                           = 0x1008
+       SO_USELOOPBACK                    = 0x40
+       TCIFLUSH                          = 0x1
+       TCIOFLUSH                         = 0x3
+       TCOFLUSH                          = 0x2
+       TCP_FASTKEEP                      = 0x80
+       TCP_KEEPCNT                       = 0x400
+       TCP_KEEPIDLE                      = 0x100
+       TCP_KEEPINIT                      = 0x20
+       TCP_KEEPINTVL                     = 0x200
+       TCP_MAXBURST                      = 0x4
+       TCP_MAXHLEN                       = 0x3c
+       TCP_MAXOLEN                       = 0x28
+       TCP_MAXSEG                        = 0x2
+       TCP_MAXWIN                        = 0xffff
+       TCP_MAX_WINSHIFT                  = 0xe
+       TCP_MINMSS                        = 0x100
+       TCP_MIN_WINSHIFT                  = 0x5
+       TCP_MSS                           = 0x200
+       TCP_NODELAY                       = 0x1
+       TCP_NOOPT                         = 0x8
+       TCP_NOPUSH                        = 0x4
+       TCP_SIGNATURE_ENABLE              = 0x10
+       TCSAFLUSH                         = 0x2
+       TIOCCBRK                          = 0x2000747a
+       TIOCCDTR                          = 0x20007478
+       TIOCCONS                          = 0x80047462
+       TIOCDCDTIMESTAMP                  = 0x40087458
+       TIOCDRAIN                         = 0x2000745e
+       TIOCEXCL                          = 0x2000740d
+       TIOCEXT                           = 0x80047460
+       TIOCFLUSH                         = 0x80047410
+       TIOCGDRAINWAIT                    = 0x40047456
+       TIOCGETA                          = 0x402c7413
+       TIOCGETD                          = 0x4004741a
+       TIOCGPGRP                         = 0x40047477
+       TIOCGSID                          = 0x40047463
+       TIOCGSIZE                         = 0x40087468
+       TIOCGWINSZ                        = 0x40087468
+       TIOCISPTMASTER                    = 0x20007455
+       TIOCMBIC                          = 0x8004746b
+       TIOCMBIS                          = 0x8004746c
+       TIOCMGDTRWAIT                     = 0x4004745a
+       TIOCMGET                          = 0x4004746a
+       TIOCMODG                          = 0x40047403
+       TIOCMODS                          = 0x80047404
+       TIOCMSDTRWAIT                     = 0x8004745b
+       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                      = 0x0
+       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
+       TIOCSDRAINWAIT                    = 0x80047457
+       TIOCSDTR                          = 0x20007479
+       TIOCSETA                          = 0x802c7414
+       TIOCSETAF                         = 0x802c7416
+       TIOCSETAW                         = 0x802c7415
+       TIOCSETD                          = 0x8004741b
+       TIOCSIG                           = 0x2000745f
+       TIOCSPGRP                         = 0x80047476
+       TIOCSSIZE                         = 0x80087467
+       TIOCSTART                         = 0x2000746e
+       TIOCSTAT                          = 0x20007465
+       TIOCSTI                           = 0x80017472
+       TIOCSTOP                          = 0x2000746f
+       TIOCSWINSZ                        = 0x80087467
+       TIOCTIMESTAMP                     = 0x40087459
+       TIOCUCNTL                         = 0x80047466
+       TOSTOP                            = 0x400000
+       VCHECKPT                          = 0x13
+       VDISCARD                          = 0xf
+       VDSUSP                            = 0xb
+       VEOF                              = 0x0
+       VEOL                              = 0x1
+       VEOL2                             = 0x2
+       VERASE                            = 0x3
+       VERASE2                           = 0x7
+       VINTR                             = 0x8
+       VKILL                             = 0x5
+       VLNEXT                            = 0xe
+       VMIN                              = 0x10
+       VQUIT                             = 0x9
+       VREPRINT                          = 0x6
+       VSTART                            = 0xc
+       VSTATUS                           = 0x12
+       VSTOP                             = 0xd
+       VSUSP                             = 0xa
+       VTIME                             = 0x11
+       VWERASE                           = 0x4
+       WCONTINUED                        = 0x4
+       WCOREFLAG                         = 0x80
+       WLINUXCLONE                       = 0x80000000
+       WNOHANG                           = 0x1
+       WSTOPPED                          = 0x7f
+       WUNTRACED                         = 0x2
+)
+
+// Errors
+const (
+       E2BIG           = syscall.Errno(0x7)
+       EACCES          = syscall.Errno(0xd)
+       EADDRINUSE      = syscall.Errno(0x30)
+       EADDRNOTAVAIL   = syscall.Errno(0x31)
+       EAFNOSUPPORT    = syscall.Errno(0x2f)
+       EAGAIN          = syscall.Errno(0x23)
+       EALREADY        = syscall.Errno(0x25)
+       EASYNC          = syscall.Errno(0x63)
+       EAUTH           = syscall.Errno(0x50)
+       EBADF           = syscall.Errno(0x9)
+       EBADMSG         = syscall.Errno(0x59)
+       EBADRPC         = syscall.Errno(0x48)
+       EBUSY           = syscall.Errno(0x10)
+       ECANCELED       = syscall.Errno(0x55)
+       ECHILD          = syscall.Errno(0xa)
+       ECONNABORTED    = syscall.Errno(0x35)
+       ECONNREFUSED    = syscall.Errno(0x3d)
+       ECONNRESET      = syscall.Errno(0x36)
+       EDEADLK         = syscall.Errno(0xb)
+       EDESTADDRREQ    = syscall.Errno(0x27)
+       EDOM            = syscall.Errno(0x21)
+       EDOOFUS         = syscall.Errno(0x58)
+       EDQUOT          = syscall.Errno(0x45)
+       EEXIST          = syscall.Errno(0x11)
+       EFAULT          = syscall.Errno(0xe)
+       EFBIG           = syscall.Errno(0x1b)
+       EFTYPE          = syscall.Errno(0x4f)
+       EHOSTDOWN       = syscall.Errno(0x40)
+       EHOSTUNREACH    = syscall.Errno(0x41)
+       EIDRM           = syscall.Errno(0x52)
+       EILSEQ          = syscall.Errno(0x56)
+       EINPROGRESS     = syscall.Errno(0x24)
+       EINTR           = syscall.Errno(0x4)
+       EINVAL          = syscall.Errno(0x16)
+       EIO             = syscall.Errno(0x5)
+       EISCONN         = syscall.Errno(0x38)
+       EISDIR          = syscall.Errno(0x15)
+       ELAST           = syscall.Errno(0x63)
+       ELOOP           = syscall.Errno(0x3e)
+       EMFILE          = syscall.Errno(0x18)
+       EMLINK          = syscall.Errno(0x1f)
+       EMSGSIZE        = syscall.Errno(0x28)
+       EMULTIHOP       = syscall.Errno(0x5a)
+       ENAMETOOLONG    = syscall.Errno(0x3f)
+       ENEEDAUTH       = syscall.Errno(0x51)
+       ENETDOWN        = syscall.Errno(0x32)
+       ENETRESET       = syscall.Errno(0x34)
+       ENETUNREACH     = syscall.Errno(0x33)
+       ENFILE          = syscall.Errno(0x17)
+       ENOATTR         = syscall.Errno(0x57)
+       ENOBUFS         = syscall.Errno(0x37)
+       ENODEV          = syscall.Errno(0x13)
+       ENOENT          = syscall.Errno(0x2)
+       ENOEXEC         = syscall.Errno(0x8)
+       ENOLCK          = syscall.Errno(0x4d)
+       ENOLINK         = syscall.Errno(0x5b)
+       ENOMEDIUM       = syscall.Errno(0x5d)
+       ENOMEM          = syscall.Errno(0xc)
+       ENOMSG          = syscall.Errno(0x53)
+       ENOPROTOOPT     = syscall.Errno(0x2a)
+       ENOSPC          = syscall.Errno(0x1c)
+       ENOSYS          = syscall.Errno(0x4e)
+       ENOTBLK         = syscall.Errno(0xf)
+       ENOTCONN        = syscall.Errno(0x39)
+       ENOTDIR         = syscall.Errno(0x14)
+       ENOTEMPTY       = syscall.Errno(0x42)
+       ENOTSOCK        = syscall.Errno(0x26)
+       ENOTSUP         = syscall.Errno(0x2d)
+       ENOTTY          = syscall.Errno(0x19)
+       ENXIO           = syscall.Errno(0x6)
+       EOPNOTSUPP      = syscall.Errno(0x2d)
+       EOVERFLOW       = syscall.Errno(0x54)
+       EPERM           = syscall.Errno(0x1)
+       EPFNOSUPPORT    = syscall.Errno(0x2e)
+       EPIPE           = syscall.Errno(0x20)
+       EPROCLIM        = syscall.Errno(0x43)
+       EPROCUNAVAIL    = syscall.Errno(0x4c)
+       EPROGMISMATCH   = syscall.Errno(0x4b)
+       EPROGUNAVAIL    = syscall.Errno(0x4a)
+       EPROTO          = syscall.Errno(0x5c)
+       EPROTONOSUPPORT = syscall.Errno(0x2b)
+       EPROTOTYPE      = syscall.Errno(0x29)
+       ERANGE          = syscall.Errno(0x22)
+       EREMOTE         = syscall.Errno(0x47)
+       EROFS           = syscall.Errno(0x1e)
+       ERPCMISMATCH    = syscall.Errno(0x49)
+       ESHUTDOWN       = syscall.Errno(0x3a)
+       ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+       ESPIPE          = syscall.Errno(0x1d)
+       ESRCH           = syscall.Errno(0x3)
+       ESTALE          = syscall.Errno(0x46)
+       ETIMEDOUT       = syscall.Errno(0x3c)
+       ETOOMANYREFS    = syscall.Errno(0x3b)
+       ETXTBSY         = syscall.Errno(0x1a)
+       EUNUSED94       = syscall.Errno(0x5e)
+       EUNUSED95       = syscall.Errno(0x5f)
+       EUNUSED96       = syscall.Errno(0x60)
+       EUNUSED97       = syscall.Errno(0x61)
+       EUNUSED98       = syscall.Errno(0x62)
+       EUSERS          = syscall.Errno(0x44)
+       EWOULDBLOCK     = syscall.Errno(0x23)
+       EXDEV           = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+       SIGABRT     = syscall.Signal(0x6)
+       SIGALRM     = syscall.Signal(0xe)
+       SIGBUS      = syscall.Signal(0xa)
+       SIGCHLD     = syscall.Signal(0x14)
+       SIGCKPT     = syscall.Signal(0x21)
+       SIGCKPTEXIT = syscall.Signal(0x22)
+       SIGCONT     = syscall.Signal(0x13)
+       SIGEMT      = syscall.Signal(0x7)
+       SIGFPE      = syscall.Signal(0x8)
+       SIGHUP      = syscall.Signal(0x1)
+       SIGILL      = syscall.Signal(0x4)
+       SIGINFO     = syscall.Signal(0x1d)
+       SIGINT      = syscall.Signal(0x2)
+       SIGIO       = syscall.Signal(0x17)
+       SIGIOT      = syscall.Signal(0x6)
+       SIGKILL     = syscall.Signal(0x9)
+       SIGPIPE     = syscall.Signal(0xd)
+       SIGPROF     = syscall.Signal(0x1b)
+       SIGQUIT     = syscall.Signal(0x3)
+       SIGSEGV     = syscall.Signal(0xb)
+       SIGSTOP     = syscall.Signal(0x11)
+       SIGSYS      = syscall.Signal(0xc)
+       SIGTERM     = syscall.Signal(0xf)
+       SIGTHR      = syscall.Signal(0x20)
+       SIGTRAP     = syscall.Signal(0x5)
+       SIGTSTP     = syscall.Signal(0x12)
+       SIGTTIN     = syscall.Signal(0x15)
+       SIGTTOU     = syscall.Signal(0x16)
+       SIGURG      = syscall.Signal(0x10)
+       SIGUSR1     = syscall.Signal(0x1e)
+       SIGUSR2     = syscall.Signal(0x1f)
+       SIGVTALRM   = syscall.Signal(0x1a)
+       SIGWINCH    = syscall.Signal(0x1c)
+       SIGXCPU     = syscall.Signal(0x18)
+       SIGXFSZ     = syscall.Signal(0x19)
+)
+
+// 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: "operation 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: "identifier removed",
+       83: "no message of desired type",
+       84: "value too large to be stored in data type",
+       85: "operation canceled",
+       86: "illegal byte sequence",
+       87: "attribute not found",
+       88: "programming error",
+       89: "bad message",
+       90: "multihop attempted",
+       91: "link has been severed",
+       92: "protocol error",
+       93: "no medium found",
+       94: "unknown error: 94",
+       95: "unknown error: 95",
+       96: "unknown error: 96",
+       97: "unknown error: 97",
+       98: "unknown error: 98",
+       99: "unknown error: 99",
+}
+
+// Signal table
+var signals = [...]string{
+       1:  "hangup",
+       2:  "interrupt",
+       3:  "quit",
+       4:  "illegal instruction",
+       5:  "trace/BPT trap",
+       6:  "abort trap",
+       7:  "EMT trap",
+       8:  "floating point exception",
+       9:  "killed",
+       10: "bus error",
+       11: "segmentation fault",
+       12: "bad system call",
+       13: "broken pipe",
+       14: "alarm clock",
+       15: "terminated",
+       16: "urgent I/O condition",
+       17: "suspended (signal)",
+       18: "suspended",
+       19: "continued",
+       20: "child exited",
+       21: "stopped (tty input)",
+       22: "stopped (tty output)",
+       23: "I/O possible",
+       24: "cputime limit exceeded",
+       25: "filesize limit exceeded",
+       26: "virtual timer expired",
+       27: "profiling timer expired",
+       28: "window size changes",
+       29: "information request",
+       30: "user defined signal 1",
+       31: "user defined signal 2",
+       32: "thread Scheduler",
+       33: "checkPoint",
+       34: "checkPointExit",
+}
diff --git a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go
new file mode 100644 (file)
index 0000000..0feceee
--- /dev/null
@@ -0,0 +1,1530 @@
+// mkerrors.sh -m64
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,dragonfly
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m64 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+       AF_APPLETALK                      = 0x10
+       AF_ATM                            = 0x1e
+       AF_BLUETOOTH                      = 0x21
+       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_HYLINK                         = 0xf
+       AF_IEEE80211                      = 0x23
+       AF_IMPLINK                        = 0x3
+       AF_INET                           = 0x2
+       AF_INET6                          = 0x1c
+       AF_IPX                            = 0x17
+       AF_ISDN                           = 0x1a
+       AF_ISO                            = 0x7
+       AF_LAT                            = 0xe
+       AF_LINK                           = 0x12
+       AF_LOCAL                          = 0x1
+       AF_MAX                            = 0x24
+       AF_MPLS                           = 0x22
+       AF_NATM                           = 0x1d
+       AF_NETGRAPH                       = 0x20
+       AF_NS                             = 0x6
+       AF_OSI                            = 0x7
+       AF_PUP                            = 0x4
+       AF_ROUTE                          = 0x11
+       AF_SIP                            = 0x18
+       AF_SNA                            = 0xb
+       AF_UNIX                           = 0x1
+       AF_UNSPEC                         = 0x0
+       B0                                = 0x0
+       B110                              = 0x6e
+       B115200                           = 0x1c200
+       B1200                             = 0x4b0
+       B134                              = 0x86
+       B14400                            = 0x3840
+       B150                              = 0x96
+       B1800                             = 0x708
+       B19200                            = 0x4b00
+       B200                              = 0xc8
+       B230400                           = 0x38400
+       B2400                             = 0x960
+       B28800                            = 0x7080
+       B300                              = 0x12c
+       B38400                            = 0x9600
+       B4800                             = 0x12c0
+       B50                               = 0x32
+       B57600                            = 0xe100
+       B600                              = 0x258
+       B7200                             = 0x1c20
+       B75                               = 0x4b
+       B76800                            = 0x12c00
+       B9600                             = 0x2580
+       BIOCFLUSH                         = 0x20004268
+       BIOCGBLEN                         = 0x40044266
+       BIOCGDLT                          = 0x4004426a
+       BIOCGDLTLIST                      = 0xc0104279
+       BIOCGETIF                         = 0x4020426b
+       BIOCGHDRCMPLT                     = 0x40044274
+       BIOCGRSIG                         = 0x40044272
+       BIOCGRTIMEOUT                     = 0x4010426e
+       BIOCGSEESENT                      = 0x40044276
+       BIOCGSTATS                        = 0x4008426f
+       BIOCIMMEDIATE                     = 0x80044270
+       BIOCLOCK                          = 0x2000427a
+       BIOCPROMISC                       = 0x20004269
+       BIOCSBLEN                         = 0xc0044266
+       BIOCSDLT                          = 0x80044278
+       BIOCSETF                          = 0x80104267
+       BIOCSETIF                         = 0x8020426c
+       BIOCSETWF                         = 0x8010427b
+       BIOCSHDRCMPLT                     = 0x80044275
+       BIOCSRSIG                         = 0x80044273
+       BIOCSRTIMEOUT                     = 0x8010426d
+       BIOCSSEESENT                      = 0x80044277
+       BIOCVERSION                       = 0x40044271
+       BPF_A                             = 0x10
+       BPF_ABS                           = 0x20
+       BPF_ADD                           = 0x0
+       BPF_ALIGNMENT                     = 0x8
+       BPF_ALU                           = 0x4
+       BPF_AND                           = 0x50
+       BPF_B                             = 0x10
+       BPF_DEFAULTBUFSIZE                = 0x1000
+       BPF_DIV                           = 0x30
+       BPF_H                             = 0x8
+       BPF_IMM                           = 0x0
+       BPF_IND                           = 0x40
+       BPF_JA                            = 0x0
+       BPF_JEQ                           = 0x10
+       BPF_JGE                           = 0x30
+       BPF_JGT                           = 0x20
+       BPF_JMP                           = 0x5
+       BPF_JSET                          = 0x40
+       BPF_K                             = 0x0
+       BPF_LD                            = 0x0
+       BPF_LDX                           = 0x1
+       BPF_LEN                           = 0x80
+       BPF_LSH                           = 0x60
+       BPF_MAJOR_VERSION                 = 0x1
+       BPF_MAXBUFSIZE                    = 0x80000
+       BPF_MAXINSNS                      = 0x200
+       BPF_MAX_CLONES                    = 0x80
+       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                           = 0x0
+       BPF_TXA                           = 0x80
+       BPF_W                             = 0x0
+       BPF_X                             = 0x8
+       BRKINT                            = 0x2
+       CFLUSH                            = 0xf
+       CLOCAL                            = 0x8000
+       CREAD                             = 0x800
+       CS5                               = 0x0
+       CS6                               = 0x100
+       CS7                               = 0x200
+       CS8                               = 0x300
+       CSIZE                             = 0x300
+       CSTART                            = 0x11
+       CSTATUS                           = 0x14
+       CSTOP                             = 0x13
+       CSTOPB                            = 0x400
+       CSUSP                             = 0x1a
+       CTL_MAXNAME                       = 0xc
+       CTL_NET                           = 0x4
+       DLT_A429                          = 0xb8
+       DLT_A653_ICM                      = 0xb9
+       DLT_AIRONET_HEADER                = 0x78
+       DLT_APPLE_IP_OVER_IEEE1394        = 0x8a
+       DLT_ARCNET                        = 0x7
+       DLT_ARCNET_LINUX                  = 0x81
+       DLT_ATM_CLIP                      = 0x13
+       DLT_ATM_RFC1483                   = 0xb
+       DLT_AURORA                        = 0x7e
+       DLT_AX25                          = 0x3
+       DLT_AX25_KISS                     = 0xca
+       DLT_BACNET_MS_TP                  = 0xa5
+       DLT_BLUETOOTH_HCI_H4              = 0xbb
+       DLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9
+       DLT_CAN20B                        = 0xbe
+       DLT_CHAOS                         = 0x5
+       DLT_CHDLC                         = 0x68
+       DLT_CISCO_IOS                     = 0x76
+       DLT_C_HDLC                        = 0x68
+       DLT_C_HDLC_WITH_DIR               = 0xcd
+       DLT_DOCSIS                        = 0x8f
+       DLT_ECONET                        = 0x73
+       DLT_EN10MB                        = 0x1
+       DLT_EN3MB                         = 0x2
+       DLT_ENC                           = 0x6d
+       DLT_ERF                           = 0xc5
+       DLT_ERF_ETH                       = 0xaf
+       DLT_ERF_POS                       = 0xb0
+       DLT_FDDI                          = 0xa
+       DLT_FLEXRAY                       = 0xd2
+       DLT_FRELAY                        = 0x6b
+       DLT_FRELAY_WITH_DIR               = 0xce
+       DLT_GCOM_SERIAL                   = 0xad
+       DLT_GCOM_T1E1                     = 0xac
+       DLT_GPF_F                         = 0xab
+       DLT_GPF_T                         = 0xaa
+       DLT_GPRS_LLC                      = 0xa9
+       DLT_HHDLC                         = 0x79
+       DLT_IBM_SN                        = 0x92
+       DLT_IBM_SP                        = 0x91
+       DLT_IEEE802                       = 0x6
+       DLT_IEEE802_11                    = 0x69
+       DLT_IEEE802_11_RADIO              = 0x7f
+       DLT_IEEE802_11_RADIO_AVS          = 0xa3
+       DLT_IEEE802_15_4                  = 0xc3
+       DLT_IEEE802_15_4_LINUX            = 0xbf
+       DLT_IEEE802_15_4_NONASK_PHY       = 0xd7
+       DLT_IEEE802_16_MAC_CPS            = 0xbc
+       DLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1
+       DLT_IPFILTER                      = 0x74
+       DLT_IPMB                          = 0xc7
+       DLT_IPMB_LINUX                    = 0xd1
+       DLT_IP_OVER_FC                    = 0x7a
+       DLT_JUNIPER_ATM1                  = 0x89
+       DLT_JUNIPER_ATM2                  = 0x87
+       DLT_JUNIPER_CHDLC                 = 0xb5
+       DLT_JUNIPER_ES                    = 0x84
+       DLT_JUNIPER_ETHER                 = 0xb2
+       DLT_JUNIPER_FRELAY                = 0xb4
+       DLT_JUNIPER_GGSN                  = 0x85
+       DLT_JUNIPER_ISM                   = 0xc2
+       DLT_JUNIPER_MFR                   = 0x86
+       DLT_JUNIPER_MLFR                  = 0x83
+       DLT_JUNIPER_MLPPP                 = 0x82
+       DLT_JUNIPER_MONITOR               = 0xa4
+       DLT_JUNIPER_PIC_PEER              = 0xae
+       DLT_JUNIPER_PPP                   = 0xb3
+       DLT_JUNIPER_PPPOE                 = 0xa7
+       DLT_JUNIPER_PPPOE_ATM             = 0xa8
+       DLT_JUNIPER_SERVICES              = 0x88
+       DLT_JUNIPER_ST                    = 0xc8
+       DLT_JUNIPER_VP                    = 0xb7
+       DLT_LAPB_WITH_DIR                 = 0xcf
+       DLT_LAPD                          = 0xcb
+       DLT_LIN                           = 0xd4
+       DLT_LINUX_IRDA                    = 0x90
+       DLT_LINUX_LAPD                    = 0xb1
+       DLT_LINUX_SLL                     = 0x71
+       DLT_LOOP                          = 0x6c
+       DLT_LTALK                         = 0x72
+       DLT_MFR                           = 0xb6
+       DLT_MOST                          = 0xd3
+       DLT_MTP2                          = 0x8c
+       DLT_MTP2_WITH_PHDR                = 0x8b
+       DLT_MTP3                          = 0x8d
+       DLT_NULL                          = 0x0
+       DLT_PCI_EXP                       = 0x7d
+       DLT_PFLOG                         = 0x75
+       DLT_PFSYNC                        = 0x12
+       DLT_PPI                           = 0xc0
+       DLT_PPP                           = 0x9
+       DLT_PPP_BSDOS                     = 0x10
+       DLT_PPP_ETHER                     = 0x33
+       DLT_PPP_PPPD                      = 0xa6
+       DLT_PPP_SERIAL                    = 0x32
+       DLT_PPP_WITH_DIR                  = 0xcc
+       DLT_PRISM_HEADER                  = 0x77
+       DLT_PRONET                        = 0x4
+       DLT_RAIF1                         = 0xc6
+       DLT_RAW                           = 0xc
+       DLT_REDBACK_SMARTEDGE             = 0x20
+       DLT_RIO                           = 0x7c
+       DLT_SCCP                          = 0x8e
+       DLT_SITA                          = 0xc4
+       DLT_SLIP                          = 0x8
+       DLT_SLIP_BSDOS                    = 0xf
+       DLT_SUNATM                        = 0x7b
+       DLT_SYMANTEC_FIREWALL             = 0x63
+       DLT_TZSP                          = 0x80
+       DLT_USB                           = 0xba
+       DLT_USB_LINUX                     = 0xbd
+       DLT_X2E_SERIAL                    = 0xd5
+       DLT_X2E_XORAYA                    = 0xd6
+       DT_BLK                            = 0x6
+       DT_CHR                            = 0x2
+       DT_DBF                            = 0xf
+       DT_DIR                            = 0x4
+       DT_FIFO                           = 0x1
+       DT_LNK                            = 0xa
+       DT_REG                            = 0x8
+       DT_SOCK                           = 0xc
+       DT_UNKNOWN                        = 0x0
+       DT_WHT                            = 0xe
+       ECHO                              = 0x8
+       ECHOCTL                           = 0x40
+       ECHOE                             = 0x2
+       ECHOK                             = 0x4
+       ECHOKE                            = 0x1
+       ECHONL                            = 0x10
+       ECHOPRT                           = 0x20
+       EVFILT_AIO                        = -0x3
+       EVFILT_EXCEPT                     = -0x8
+       EVFILT_MARKER                     = 0xf
+       EVFILT_PROC                       = -0x5
+       EVFILT_READ                       = -0x1
+       EVFILT_SIGNAL                     = -0x6
+       EVFILT_SYSCOUNT                   = 0x8
+       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_NODATA                         = 0x1000
+       EV_ONESHOT                        = 0x10
+       EV_SYSFLAGS                       = 0xf000
+       EXTA                              = 0x4b00
+       EXTB                              = 0x9600
+       EXTEXIT_LWP                       = 0x10000
+       EXTEXIT_PROC                      = 0x0
+       EXTEXIT_SETINT                    = 0x1
+       EXTEXIT_SIMPLE                    = 0x0
+       EXTPROC                           = 0x800
+       FD_CLOEXEC                        = 0x1
+       FD_SETSIZE                        = 0x400
+       FLUSHO                            = 0x800000
+       F_DUP2FD                          = 0xa
+       F_DUP2FD_CLOEXEC                  = 0x12
+       F_DUPFD                           = 0x0
+       F_DUPFD_CLOEXEC                   = 0x11
+       F_GETFD                           = 0x1
+       F_GETFL                           = 0x3
+       F_GETLK                           = 0x7
+       F_GETOWN                          = 0x5
+       F_OK                              = 0x0
+       F_RDLCK                           = 0x1
+       F_SETFD                           = 0x2
+       F_SETFL                           = 0x4
+       F_SETLK                           = 0x8
+       F_SETLKW                          = 0x9
+       F_SETOWN                          = 0x6
+       F_UNLCK                           = 0x2
+       F_WRLCK                           = 0x3
+       HUPCL                             = 0x4000
+       ICANON                            = 0x100
+       ICMP6_FILTER                      = 0x12
+       ICRNL                             = 0x100
+       IEXTEN                            = 0x400
+       IFAN_ARRIVAL                      = 0x0
+       IFAN_DEPARTURE                    = 0x1
+       IFF_ALLMULTI                      = 0x200
+       IFF_ALTPHYS                       = 0x4000
+       IFF_BROADCAST                     = 0x2
+       IFF_CANTCHANGE                    = 0x118e72
+       IFF_DEBUG                         = 0x4
+       IFF_LINK0                         = 0x1000
+       IFF_LINK1                         = 0x2000
+       IFF_LINK2                         = 0x4000
+       IFF_LOOPBACK                      = 0x8
+       IFF_MONITOR                       = 0x40000
+       IFF_MULTICAST                     = 0x8000
+       IFF_NOARP                         = 0x80
+       IFF_NPOLLING                      = 0x100000
+       IFF_OACTIVE                       = 0x400
+       IFF_OACTIVE_COMPAT                = 0x400
+       IFF_POINTOPOINT                   = 0x10
+       IFF_POLLING                       = 0x10000
+       IFF_POLLING_COMPAT                = 0x10000
+       IFF_PPROMISC                      = 0x20000
+       IFF_PROMISC                       = 0x100
+       IFF_RUNNING                       = 0x40
+       IFF_SIMPLEX                       = 0x800
+       IFF_SMART                         = 0x20
+       IFF_STATICARP                     = 0x80000
+       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_BRIDGE                        = 0xd1
+       IFT_BSC                           = 0x53
+       IFT_CARP                          = 0xf8
+       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_DS0                           = 0x51
+       IFT_DS0BUNDLE                     = 0x52
+       IFT_DS1FDL                        = 0xaa
+       IFT_DS3                           = 0x1e
+       IFT_DTM                           = 0x8c
+       IFT_DVBASILN                      = 0xac
+       IFT_DVBASIOUT                     = 0xad
+       IFT_DVBRCCDOWNSTREAM              = 0x93
+       IFT_DVBRCCMACLAYER                = 0x92
+       IFT_DVBRCCUPSTREAM                = 0x94
+       IFT_ENC                           = 0xf4
+       IFT_EON                           = 0x19
+       IFT_EPLRS                         = 0x57
+       IFT_ESCON                         = 0x49
+       IFT_ETHER                         = 0x6
+       IFT_FAITH                         = 0xf2
+       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_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_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_PFSYNC                        = 0xf6
+       IFT_PLC                           = 0xae
+       IFT_POS                           = 0xab
+       IFT_PPP                           = 0x17
+       IFT_PPPMULTILINKBUNDLE            = 0x6c
+       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                           = 0xf1
+       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_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_STF                           = 0xf3
+       IFT_T1                            = 0x12
+       IFT_TDLC                          = 0x74
+       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_VOICEEM                       = 0x64
+       IFT_VOICEENCAP                    = 0x67
+       IFT_VOICEFXO                      = 0x65
+       IFT_VOICEFXS                      = 0x66
+       IFT_VOICEOVERATM                  = 0x98
+       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
+       IGNBRK                            = 0x1
+       IGNCR                             = 0x80
+       IGNPAR                            = 0x4
+       IMAXBEL                           = 0x2000
+       INLCR                             = 0x40
+       INPCK                             = 0x10
+       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
+       IPPROTO_3PC                       = 0x22
+       IPPROTO_ADFS                      = 0x44
+       IPPROTO_AH                        = 0x33
+       IPPROTO_AHIP                      = 0x3d
+       IPPROTO_APES                      = 0x63
+       IPPROTO_ARGUS                     = 0xd
+       IPPROTO_AX25                      = 0x5d
+       IPPROTO_BHA                       = 0x31
+       IPPROTO_BLT                       = 0x1e
+       IPPROTO_BRSATMON                  = 0x4c
+       IPPROTO_CARP                      = 0x70
+       IPPROTO_CFTP                      = 0x3e
+       IPPROTO_CHAOS                     = 0x10
+       IPPROTO_CMTP                      = 0x26
+       IPPROTO_CPHB                      = 0x49
+       IPPROTO_CPNX                      = 0x48
+       IPPROTO_DDP                       = 0x25
+       IPPROTO_DGP                       = 0x56
+       IPPROTO_DIVERT                    = 0xfe
+       IPPROTO_DONE                      = 0x101
+       IPPROTO_DSTOPTS                   = 0x3c
+       IPPROTO_EGP                       = 0x8
+       IPPROTO_EMCON                     = 0xe
+       IPPROTO_ENCAP                     = 0x62
+       IPPROTO_EON                       = 0x50
+       IPPROTO_ESP                       = 0x32
+       IPPROTO_ETHERIP                   = 0x61
+       IPPROTO_FRAGMENT                  = 0x2c
+       IPPROTO_GGP                       = 0x3
+       IPPROTO_GMTP                      = 0x64
+       IPPROTO_GRE                       = 0x2f
+       IPPROTO_HELLO                     = 0x3f
+       IPPROTO_HMP                       = 0x14
+       IPPROTO_HOPOPTS                   = 0x0
+       IPPROTO_ICMP                      = 0x1
+       IPPROTO_ICMPV6                    = 0x3a
+       IPPROTO_IDP                       = 0x16
+       IPPROTO_IDPR                      = 0x23
+       IPPROTO_IDRP                      = 0x2d
+       IPPROTO_IGMP                      = 0x2
+       IPPROTO_IGP                       = 0x55
+       IPPROTO_IGRP                      = 0x58
+       IPPROTO_IL                        = 0x28
+       IPPROTO_INLSP                     = 0x34
+       IPPROTO_INP                       = 0x20
+       IPPROTO_IP                        = 0x0
+       IPPROTO_IPCOMP                    = 0x6c
+       IPPROTO_IPCV                      = 0x47
+       IPPROTO_IPEIP                     = 0x5e
+       IPPROTO_IPIP                      = 0x4
+       IPPROTO_IPPC                      = 0x43
+       IPPROTO_IPV4                      = 0x4
+       IPPROTO_IPV6                      = 0x29
+       IPPROTO_IRTP                      = 0x1c
+       IPPROTO_KRYPTOLAN                 = 0x41
+       IPPROTO_LARP                      = 0x5b
+       IPPROTO_LEAF1                     = 0x19
+       IPPROTO_LEAF2                     = 0x1a
+       IPPROTO_MAX                       = 0x100
+       IPPROTO_MAXID                     = 0x34
+       IPPROTO_MEAS                      = 0x13
+       IPPROTO_MHRP                      = 0x30
+       IPPROTO_MICP                      = 0x5f
+       IPPROTO_MOBILE                    = 0x37
+       IPPROTO_MTP                       = 0x5c
+       IPPROTO_MUX                       = 0x12
+       IPPROTO_ND                        = 0x4d
+       IPPROTO_NHRP                      = 0x36
+       IPPROTO_NONE                      = 0x3b
+       IPPROTO_NSP                       = 0x1f
+       IPPROTO_NVPII                     = 0xb
+       IPPROTO_OSPFIGP                   = 0x59
+       IPPROTO_PFSYNC                    = 0xf0
+       IPPROTO_PGM                       = 0x71
+       IPPROTO_PIGP                      = 0x9
+       IPPROTO_PIM                       = 0x67
+       IPPROTO_PRM                       = 0x15
+       IPPROTO_PUP                       = 0xc
+       IPPROTO_PVP                       = 0x4b
+       IPPROTO_RAW                       = 0xff
+       IPPROTO_RCCMON                    = 0xa
+       IPPROTO_RDP                       = 0x1b
+       IPPROTO_ROUTING                   = 0x2b
+       IPPROTO_RSVP                      = 0x2e
+       IPPROTO_RVD                       = 0x42
+       IPPROTO_SATEXPAK                  = 0x40
+       IPPROTO_SATMON                    = 0x45
+       IPPROTO_SCCSP                     = 0x60
+       IPPROTO_SCTP                      = 0x84
+       IPPROTO_SDRP                      = 0x2a
+       IPPROTO_SEP                       = 0x21
+       IPPROTO_SKIP                      = 0x39
+       IPPROTO_SRPC                      = 0x5a
+       IPPROTO_ST                        = 0x7
+       IPPROTO_SVMTP                     = 0x52
+       IPPROTO_SWIPE                     = 0x35
+       IPPROTO_TCF                       = 0x57
+       IPPROTO_TCP                       = 0x6
+       IPPROTO_TLSP                      = 0x38
+       IPPROTO_TP                        = 0x1d
+       IPPROTO_TPXX                      = 0x27
+       IPPROTO_TRUNK1                    = 0x17
+       IPPROTO_TRUNK2                    = 0x18
+       IPPROTO_TTP                       = 0x54
+       IPPROTO_UDP                       = 0x11
+       IPPROTO_UNKNOWN                   = 0x102
+       IPPROTO_VINES                     = 0x53
+       IPPROTO_VISA                      = 0x46
+       IPPROTO_VMTP                      = 0x51
+       IPPROTO_WBEXPAK                   = 0x4f
+       IPPROTO_WBMON                     = 0x4e
+       IPPROTO_WSN                       = 0x4a
+       IPPROTO_XNET                      = 0xf
+       IPPROTO_XTP                       = 0x24
+       IPV6_AUTOFLOWLABEL                = 0x3b
+       IPV6_BINDV6ONLY                   = 0x1b
+       IPV6_CHECKSUM                     = 0x1a
+       IPV6_DEFAULT_MULTICAST_HOPS       = 0x1
+       IPV6_DEFAULT_MULTICAST_LOOP       = 0x1
+       IPV6_DEFHLIM                      = 0x40
+       IPV6_DONTFRAG                     = 0x3e
+       IPV6_DSTOPTS                      = 0x32
+       IPV6_FAITH                        = 0x1d
+       IPV6_FLOWINFO_MASK                = 0xffffff0f
+       IPV6_FLOWLABEL_MASK               = 0xffff0f00
+       IPV6_FRAGTTL                      = 0x78
+       IPV6_FW_ADD                       = 0x1e
+       IPV6_FW_DEL                       = 0x1f
+       IPV6_FW_FLUSH                     = 0x20
+       IPV6_FW_GET                       = 0x22
+       IPV6_FW_ZERO                      = 0x21
+       IPV6_HLIMDEC                      = 0x1
+       IPV6_HOPLIMIT                     = 0x2f
+       IPV6_HOPOPTS                      = 0x31
+       IPV6_IPSEC_POLICY                 = 0x1c
+       IPV6_JOIN_GROUP                   = 0xc
+       IPV6_LEAVE_GROUP                  = 0xd
+       IPV6_MAXHLIM                      = 0xff
+       IPV6_MAXPACKET                    = 0xffff
+       IPV6_MMTU                         = 0x500
+       IPV6_MSFILTER                     = 0x4a
+       IPV6_MULTICAST_HOPS               = 0xa
+       IPV6_MULTICAST_IF                 = 0x9
+       IPV6_MULTICAST_LOOP               = 0xb
+       IPV6_NEXTHOP                      = 0x30
+       IPV6_PATHMTU                      = 0x2c
+       IPV6_PKTINFO                      = 0x2e
+       IPV6_PKTOPTIONS                   = 0x34
+       IPV6_PORTRANGE                    = 0xe
+       IPV6_PORTRANGE_DEFAULT            = 0x0
+       IPV6_PORTRANGE_HIGH               = 0x1
+       IPV6_PORTRANGE_LOW                = 0x2
+       IPV6_PREFER_TEMPADDR              = 0x3f
+       IPV6_RECVDSTOPTS                  = 0x28
+       IPV6_RECVHOPLIMIT                 = 0x25
+       IPV6_RECVHOPOPTS                  = 0x27
+       IPV6_RECVPATHMTU                  = 0x2b
+       IPV6_RECVPKTINFO                  = 0x24
+       IPV6_RECVRTHDR                    = 0x26
+       IPV6_RECVTCLASS                   = 0x39
+       IPV6_RTHDR                        = 0x33
+       IPV6_RTHDRDSTOPTS                 = 0x23
+       IPV6_RTHDR_LOOSE                  = 0x0
+       IPV6_RTHDR_STRICT                 = 0x1
+       IPV6_RTHDR_TYPE_0                 = 0x0
+       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_DEFAULT_MULTICAST_LOOP         = 0x1
+       IP_DEFAULT_MULTICAST_TTL          = 0x1
+       IP_DF                             = 0x4000
+       IP_DROP_MEMBERSHIP                = 0xd
+       IP_DUMMYNET_CONFIGURE             = 0x3c
+       IP_DUMMYNET_DEL                   = 0x3d
+       IP_DUMMYNET_FLUSH                 = 0x3e
+       IP_DUMMYNET_GET                   = 0x40
+       IP_FAITH                          = 0x16
+       IP_FW_ADD                         = 0x32
+       IP_FW_DEL                         = 0x33
+       IP_FW_FLUSH                       = 0x34
+       IP_FW_GET                         = 0x36
+       IP_FW_RESETLOG                    = 0x37
+       IP_FW_ZERO                        = 0x35
+       IP_HDRINCL                        = 0x2
+       IP_IPSEC_POLICY                   = 0x15
+       IP_MAXPACKET                      = 0xffff
+       IP_MAX_MEMBERSHIPS                = 0x14
+       IP_MF                             = 0x2000
+       IP_MINTTL                         = 0x42
+       IP_MSS                            = 0x240
+       IP_MULTICAST_IF                   = 0x9
+       IP_MULTICAST_LOOP                 = 0xb
+       IP_MULTICAST_TTL                  = 0xa
+       IP_MULTICAST_VIF                  = 0xe
+       IP_OFFMASK                        = 0x1fff
+       IP_OPTIONS                        = 0x1
+       IP_PORTRANGE                      = 0x13
+       IP_PORTRANGE_DEFAULT              = 0x0
+       IP_PORTRANGE_HIGH                 = 0x1
+       IP_PORTRANGE_LOW                  = 0x2
+       IP_RECVDSTADDR                    = 0x7
+       IP_RECVIF                         = 0x14
+       IP_RECVOPTS                       = 0x5
+       IP_RECVRETOPTS                    = 0x6
+       IP_RECVTTL                        = 0x41
+       IP_RETOPTS                        = 0x8
+       IP_RF                             = 0x8000
+       IP_RSVP_OFF                       = 0x10
+       IP_RSVP_ON                        = 0xf
+       IP_RSVP_VIF_OFF                   = 0x12
+       IP_RSVP_VIF_ON                    = 0x11
+       IP_TOS                            = 0x3
+       IP_TTL                            = 0x4
+       ISIG                              = 0x80
+       ISTRIP                            = 0x20
+       IXANY                             = 0x800
+       IXOFF                             = 0x400
+       IXON                              = 0x200
+       LOCK_EX                           = 0x2
+       LOCK_NB                           = 0x4
+       LOCK_SH                           = 0x1
+       LOCK_UN                           = 0x8
+       MADV_AUTOSYNC                     = 0x7
+       MADV_CONTROL_END                  = 0xb
+       MADV_CONTROL_START                = 0xa
+       MADV_CORE                         = 0x9
+       MADV_DONTNEED                     = 0x4
+       MADV_FREE                         = 0x5
+       MADV_INVAL                        = 0xa
+       MADV_NOCORE                       = 0x8
+       MADV_NORMAL                       = 0x0
+       MADV_NOSYNC                       = 0x6
+       MADV_RANDOM                       = 0x1
+       MADV_SEQUENTIAL                   = 0x2
+       MADV_SETMAP                       = 0xb
+       MADV_WILLNEED                     = 0x3
+       MAP_ANON                          = 0x1000
+       MAP_COPY                          = 0x2
+       MAP_FILE                          = 0x0
+       MAP_FIXED                         = 0x10
+       MAP_HASSEMAPHORE                  = 0x200
+       MAP_INHERIT                       = 0x80
+       MAP_NOCORE                        = 0x20000
+       MAP_NOEXTEND                      = 0x100
+       MAP_NORESERVE                     = 0x40
+       MAP_NOSYNC                        = 0x800
+       MAP_PRIVATE                       = 0x2
+       MAP_RENAME                        = 0x20
+       MAP_SHARED                        = 0x1
+       MAP_SIZEALIGN                     = 0x40000
+       MAP_STACK                         = 0x400
+       MAP_TRYFIXED                      = 0x10000
+       MAP_VPAGETABLE                    = 0x2000
+       MCL_CURRENT                       = 0x1
+       MCL_FUTURE                        = 0x2
+       MSG_CTRUNC                        = 0x20
+       MSG_DONTROUTE                     = 0x4
+       MSG_DONTWAIT                      = 0x80
+       MSG_EOF                           = 0x100
+       MSG_EOR                           = 0x8
+       MSG_FBLOCKING                     = 0x10000
+       MSG_FMASK                         = 0xffff0000
+       MSG_FNONBLOCKING                  = 0x20000
+       MSG_NOSIGNAL                      = 0x400
+       MSG_NOTIFICATION                  = 0x200
+       MSG_OOB                           = 0x1
+       MSG_PEEK                          = 0x2
+       MSG_SYNC                          = 0x800
+       MSG_TRUNC                         = 0x10
+       MSG_WAITALL                       = 0x40
+       MS_ASYNC                          = 0x1
+       MS_INVALIDATE                     = 0x2
+       MS_SYNC                           = 0x0
+       NAME_MAX                          = 0xff
+       NET_RT_DUMP                       = 0x1
+       NET_RT_FLAGS                      = 0x2
+       NET_RT_IFLIST                     = 0x3
+       NET_RT_MAXID                      = 0x4
+       NOFLSH                            = 0x80000000
+       NOTE_ATTRIB                       = 0x8
+       NOTE_CHILD                        = 0x4
+       NOTE_DELETE                       = 0x1
+       NOTE_EXEC                         = 0x20000000
+       NOTE_EXIT                         = 0x80000000
+       NOTE_EXTEND                       = 0x4
+       NOTE_FORK                         = 0x40000000
+       NOTE_LINK                         = 0x10
+       NOTE_LOWAT                        = 0x1
+       NOTE_OOB                          = 0x2
+       NOTE_PCTRLMASK                    = 0xf0000000
+       NOTE_PDATAMASK                    = 0xfffff
+       NOTE_RENAME                       = 0x20
+       NOTE_REVOKE                       = 0x40
+       NOTE_TRACK                        = 0x1
+       NOTE_TRACKERR                     = 0x2
+       NOTE_WRITE                        = 0x2
+       OCRNL                             = 0x10
+       ONLCR                             = 0x2
+       ONLRET                            = 0x40
+       ONOCR                             = 0x20
+       ONOEOT                            = 0x8
+       OPOST                             = 0x1
+       O_ACCMODE                         = 0x3
+       O_APPEND                          = 0x8
+       O_ASYNC                           = 0x40
+       O_CLOEXEC                         = 0x20000
+       O_CREAT                           = 0x200
+       O_DIRECT                          = 0x10000
+       O_DIRECTORY                       = 0x8000000
+       O_EXCL                            = 0x800
+       O_EXLOCK                          = 0x20
+       O_FAPPEND                         = 0x100000
+       O_FASYNCWRITE                     = 0x800000
+       O_FBLOCKING                       = 0x40000
+       O_FBUFFERED                       = 0x2000000
+       O_FMASK                           = 0x7fc0000
+       O_FNONBLOCKING                    = 0x80000
+       O_FOFFSET                         = 0x200000
+       O_FSYNC                           = 0x80
+       O_FSYNCWRITE                      = 0x400000
+       O_FUNBUFFERED                     = 0x1000000
+       O_MAPONREAD                       = 0x4000000
+       O_NDELAY                          = 0x4
+       O_NOCTTY                          = 0x8000
+       O_NOFOLLOW                        = 0x100
+       O_NONBLOCK                        = 0x4
+       O_RDONLY                          = 0x0
+       O_RDWR                            = 0x2
+       O_SHLOCK                          = 0x10
+       O_SYNC                            = 0x80
+       O_TRUNC                           = 0x400
+       O_WRONLY                          = 0x1
+       PARENB                            = 0x1000
+       PARMRK                            = 0x8
+       PARODD                            = 0x2000
+       PENDIN                            = 0x20000000
+       PRIO_PGRP                         = 0x1
+       PRIO_PROCESS                      = 0x0
+       PRIO_USER                         = 0x2
+       PROT_EXEC                         = 0x4
+       PROT_NONE                         = 0x0
+       PROT_READ                         = 0x1
+       PROT_WRITE                        = 0x2
+       RLIMIT_AS                         = 0xa
+       RLIMIT_CORE                       = 0x4
+       RLIMIT_CPU                        = 0x0
+       RLIMIT_DATA                       = 0x2
+       RLIMIT_FSIZE                      = 0x1
+       RLIMIT_NOFILE                     = 0x8
+       RLIMIT_STACK                      = 0x3
+       RLIM_INFINITY                     = 0x7fffffffffffffff
+       RTAX_AUTHOR                       = 0x6
+       RTAX_BRD                          = 0x7
+       RTAX_DST                          = 0x0
+       RTAX_GATEWAY                      = 0x1
+       RTAX_GENMASK                      = 0x3
+       RTAX_IFA                          = 0x5
+       RTAX_IFP                          = 0x4
+       RTAX_MAX                          = 0xb
+       RTAX_MPLS1                        = 0x8
+       RTAX_MPLS2                        = 0x9
+       RTAX_MPLS3                        = 0xa
+       RTAX_NETMASK                      = 0x2
+       RTA_AUTHOR                        = 0x40
+       RTA_BRD                           = 0x80
+       RTA_DST                           = 0x1
+       RTA_GATEWAY                       = 0x2
+       RTA_GENMASK                       = 0x8
+       RTA_IFA                           = 0x20
+       RTA_IFP                           = 0x10
+       RTA_MPLS1                         = 0x100
+       RTA_MPLS2                         = 0x200
+       RTA_MPLS3                         = 0x400
+       RTA_NETMASK                       = 0x4
+       RTF_BLACKHOLE                     = 0x1000
+       RTF_BROADCAST                     = 0x400000
+       RTF_CLONING                       = 0x100
+       RTF_DONE                          = 0x40
+       RTF_DYNAMIC                       = 0x10
+       RTF_GATEWAY                       = 0x2
+       RTF_HOST                          = 0x4
+       RTF_LLINFO                        = 0x400
+       RTF_LOCAL                         = 0x200000
+       RTF_MODIFIED                      = 0x20
+       RTF_MPLSOPS                       = 0x1000000
+       RTF_MULTICAST                     = 0x800000
+       RTF_PINNED                        = 0x100000
+       RTF_PRCLONING                     = 0x10000
+       RTF_PROTO1                        = 0x8000
+       RTF_PROTO2                        = 0x4000
+       RTF_PROTO3                        = 0x40000
+       RTF_REJECT                        = 0x8
+       RTF_STATIC                        = 0x800
+       RTF_UP                            = 0x1
+       RTF_WASCLONED                     = 0x20000
+       RTF_XRESOLVE                      = 0x200
+       RTM_ADD                           = 0x1
+       RTM_CHANGE                        = 0x3
+       RTM_DELADDR                       = 0xd
+       RTM_DELETE                        = 0x2
+       RTM_DELMADDR                      = 0x10
+       RTM_GET                           = 0x4
+       RTM_IEEE80211                     = 0x12
+       RTM_IFANNOUNCE                    = 0x11
+       RTM_IFINFO                        = 0xe
+       RTM_LOCK                          = 0x8
+       RTM_LOSING                        = 0x5
+       RTM_MISS                          = 0x7
+       RTM_NEWADDR                       = 0xc
+       RTM_NEWMADDR                      = 0xf
+       RTM_OLDADD                        = 0x9
+       RTM_OLDDEL                        = 0xa
+       RTM_REDIRECT                      = 0x6
+       RTM_RESOLVE                       = 0xb
+       RTM_RTTUNIT                       = 0xf4240
+       RTM_VERSION                       = 0x6
+       RTV_EXPIRE                        = 0x4
+       RTV_HOPCOUNT                      = 0x2
+       RTV_IWCAPSEGS                     = 0x400
+       RTV_IWMAXSEGS                     = 0x200
+       RTV_MSL                           = 0x100
+       RTV_MTU                           = 0x1
+       RTV_RPIPE                         = 0x8
+       RTV_RTT                           = 0x40
+       RTV_RTTVAR                        = 0x80
+       RTV_SPIPE                         = 0x10
+       RTV_SSTHRESH                      = 0x20
+       RUSAGE_CHILDREN                   = -0x1
+       RUSAGE_SELF                       = 0x0
+       SCM_CREDS                         = 0x3
+       SCM_RIGHTS                        = 0x1
+       SCM_TIMESTAMP                     = 0x2
+       SHUT_RD                           = 0x0
+       SHUT_RDWR                         = 0x2
+       SHUT_WR                           = 0x1
+       SIOCADDMULTI                      = 0x80206931
+       SIOCADDRT                         = 0x8040720a
+       SIOCAIFADDR                       = 0x8040691a
+       SIOCALIFADDR                      = 0x8118691b
+       SIOCATMARK                        = 0x40047307
+       SIOCDELMULTI                      = 0x80206932
+       SIOCDELRT                         = 0x8040720b
+       SIOCDIFADDR                       = 0x80206919
+       SIOCDIFPHYADDR                    = 0x80206949
+       SIOCDLIFADDR                      = 0x8118691d
+       SIOCGDRVSPEC                      = 0xc028697b
+       SIOCGETSGCNT                      = 0xc0207210
+       SIOCGETVIFCNT                     = 0xc028720f
+       SIOCGHIWAT                        = 0x40047301
+       SIOCGIFADDR                       = 0xc0206921
+       SIOCGIFBRDADDR                    = 0xc0206923
+       SIOCGIFCAP                        = 0xc020691f
+       SIOCGIFCONF                       = 0xc0106924
+       SIOCGIFDATA                       = 0xc0206926
+       SIOCGIFDSTADDR                    = 0xc0206922
+       SIOCGIFFLAGS                      = 0xc0206911
+       SIOCGIFGENERIC                    = 0xc020693a
+       SIOCGIFGMEMB                      = 0xc028698a
+       SIOCGIFINDEX                      = 0xc0206920
+       SIOCGIFMEDIA                      = 0xc0306938
+       SIOCGIFMETRIC                     = 0xc0206917
+       SIOCGIFMTU                        = 0xc0206933
+       SIOCGIFNETMASK                    = 0xc0206925
+       SIOCGIFPDSTADDR                   = 0xc0206948
+       SIOCGIFPHYS                       = 0xc0206935
+       SIOCGIFPOLLCPU                    = 0xc020697e
+       SIOCGIFPSRCADDR                   = 0xc0206947
+       SIOCGIFSTATUS                     = 0xc331693b
+       SIOCGIFTSOLEN                     = 0xc0206980
+       SIOCGLIFADDR                      = 0xc118691c
+       SIOCGLIFPHYADDR                   = 0xc118694b
+       SIOCGLOWAT                        = 0x40047303
+       SIOCGPGRP                         = 0x40047309
+       SIOCGPRIVATE_0                    = 0xc0206950
+       SIOCGPRIVATE_1                    = 0xc0206951
+       SIOCIFCREATE                      = 0xc020697a
+       SIOCIFCREATE2                     = 0xc020697c
+       SIOCIFDESTROY                     = 0x80206979
+       SIOCIFGCLONERS                    = 0xc0106978
+       SIOCSDRVSPEC                      = 0x8028697b
+       SIOCSHIWAT                        = 0x80047300
+       SIOCSIFADDR                       = 0x8020690c
+       SIOCSIFBRDADDR                    = 0x80206913
+       SIOCSIFCAP                        = 0x8020691e
+       SIOCSIFDSTADDR                    = 0x8020690e
+       SIOCSIFFLAGS                      = 0x80206910
+       SIOCSIFGENERIC                    = 0x80206939
+       SIOCSIFLLADDR                     = 0x8020693c
+       SIOCSIFMEDIA                      = 0xc0206937
+       SIOCSIFMETRIC                     = 0x80206918
+       SIOCSIFMTU                        = 0x80206934
+       SIOCSIFNAME                       = 0x80206928
+       SIOCSIFNETMASK                    = 0x80206916
+       SIOCSIFPHYADDR                    = 0x80406946
+       SIOCSIFPHYS                       = 0x80206936
+       SIOCSIFPOLLCPU                    = 0x8020697d
+       SIOCSIFTSOLEN                     = 0x8020697f
+       SIOCSLIFPHYADDR                   = 0x8118694a
+       SIOCSLOWAT                        = 0x80047302
+       SIOCSPGRP                         = 0x80047308
+       SOCK_DGRAM                        = 0x2
+       SOCK_MAXADDRLEN                   = 0xff
+       SOCK_RAW                          = 0x3
+       SOCK_RDM                          = 0x4
+       SOCK_SEQPACKET                    = 0x5
+       SOCK_STREAM                       = 0x1
+       SOL_SOCKET                        = 0xffff
+       SOMAXCONN                         = 0x80
+       SO_ACCEPTCONN                     = 0x2
+       SO_ACCEPTFILTER                   = 0x1000
+       SO_BROADCAST                      = 0x20
+       SO_DEBUG                          = 0x1
+       SO_DONTROUTE                      = 0x10
+       SO_ERROR                          = 0x1007
+       SO_KEEPALIVE                      = 0x8
+       SO_LINGER                         = 0x80
+       SO_NOSIGPIPE                      = 0x800
+       SO_OOBINLINE                      = 0x100
+       SO_RCVBUF                         = 0x1002
+       SO_RCVLOWAT                       = 0x1004
+       SO_RCVTIMEO                       = 0x1006
+       SO_REUSEADDR                      = 0x4
+       SO_REUSEPORT                      = 0x200
+       SO_SNDBUF                         = 0x1001
+       SO_SNDLOWAT                       = 0x1003
+       SO_SNDSPACE                       = 0x100a
+       SO_SNDTIMEO                       = 0x1005
+       SO_TIMESTAMP                      = 0x400
+       SO_TYPE                           = 0x1008
+       SO_USELOOPBACK                    = 0x40
+       TCIFLUSH                          = 0x1
+       TCIOFLUSH                         = 0x3
+       TCOFLUSH                          = 0x2
+       TCP_FASTKEEP                      = 0x80
+       TCP_KEEPCNT                       = 0x400
+       TCP_KEEPIDLE                      = 0x100
+       TCP_KEEPINIT                      = 0x20
+       TCP_KEEPINTVL                     = 0x200
+       TCP_MAXBURST                      = 0x4
+       TCP_MAXHLEN                       = 0x3c
+       TCP_MAXOLEN                       = 0x28
+       TCP_MAXSEG                        = 0x2
+       TCP_MAXWIN                        = 0xffff
+       TCP_MAX_WINSHIFT                  = 0xe
+       TCP_MINMSS                        = 0x100
+       TCP_MIN_WINSHIFT                  = 0x5
+       TCP_MSS                           = 0x200
+       TCP_NODELAY                       = 0x1
+       TCP_NOOPT                         = 0x8
+       TCP_NOPUSH                        = 0x4
+       TCP_SIGNATURE_ENABLE              = 0x10
+       TCSAFLUSH                         = 0x2
+       TIOCCBRK                          = 0x2000747a
+       TIOCCDTR                          = 0x20007478
+       TIOCCONS                          = 0x80047462
+       TIOCDCDTIMESTAMP                  = 0x40107458
+       TIOCDRAIN                         = 0x2000745e
+       TIOCEXCL                          = 0x2000740d
+       TIOCEXT                           = 0x80047460
+       TIOCFLUSH                         = 0x80047410
+       TIOCGDRAINWAIT                    = 0x40047456
+       TIOCGETA                          = 0x402c7413
+       TIOCGETD                          = 0x4004741a
+       TIOCGPGRP                         = 0x40047477
+       TIOCGSID                          = 0x40047463
+       TIOCGSIZE                         = 0x40087468
+       TIOCGWINSZ                        = 0x40087468
+       TIOCISPTMASTER                    = 0x20007455
+       TIOCMBIC                          = 0x8004746b
+       TIOCMBIS                          = 0x8004746c
+       TIOCMGDTRWAIT                     = 0x4004745a
+       TIOCMGET                          = 0x4004746a
+       TIOCMODG                          = 0x40047403
+       TIOCMODS                          = 0x80047404
+       TIOCMSDTRWAIT                     = 0x8004745b
+       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                      = 0x0
+       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
+       TIOCSDRAINWAIT                    = 0x80047457
+       TIOCSDTR                          = 0x20007479
+       TIOCSETA                          = 0x802c7414
+       TIOCSETAF                         = 0x802c7416
+       TIOCSETAW                         = 0x802c7415
+       TIOCSETD                          = 0x8004741b
+       TIOCSIG                           = 0x2000745f
+       TIOCSPGRP                         = 0x80047476
+       TIOCSSIZE                         = 0x80087467
+       TIOCSTART                         = 0x2000746e
+       TIOCSTAT                          = 0x20007465
+       TIOCSTI                           = 0x80017472
+       TIOCSTOP                          = 0x2000746f
+       TIOCSWINSZ                        = 0x80087467
+       TIOCTIMESTAMP                     = 0x40107459
+       TIOCUCNTL                         = 0x80047466
+       TOSTOP                            = 0x400000
+       VCHECKPT                          = 0x13
+       VDISCARD                          = 0xf
+       VDSUSP                            = 0xb
+       VEOF                              = 0x0
+       VEOL                              = 0x1
+       VEOL2                             = 0x2
+       VERASE                            = 0x3
+       VERASE2                           = 0x7
+       VINTR                             = 0x8
+       VKILL                             = 0x5
+       VLNEXT                            = 0xe
+       VMIN                              = 0x10
+       VQUIT                             = 0x9
+       VREPRINT                          = 0x6
+       VSTART                            = 0xc
+       VSTATUS                           = 0x12
+       VSTOP                             = 0xd
+       VSUSP                             = 0xa
+       VTIME                             = 0x11
+       VWERASE                           = 0x4
+       WCONTINUED                        = 0x4
+       WCOREFLAG                         = 0x80
+       WLINUXCLONE                       = 0x80000000
+       WNOHANG                           = 0x1
+       WSTOPPED                          = 0x7f
+       WUNTRACED                         = 0x2
+)
+
+// Errors
+const (
+       E2BIG           = syscall.Errno(0x7)
+       EACCES          = syscall.Errno(0xd)
+       EADDRINUSE      = syscall.Errno(0x30)
+       EADDRNOTAVAIL   = syscall.Errno(0x31)
+       EAFNOSUPPORT    = syscall.Errno(0x2f)
+       EAGAIN          = syscall.Errno(0x23)
+       EALREADY        = syscall.Errno(0x25)
+       EASYNC          = syscall.Errno(0x63)
+       EAUTH           = syscall.Errno(0x50)
+       EBADF           = syscall.Errno(0x9)
+       EBADMSG         = syscall.Errno(0x59)
+       EBADRPC         = syscall.Errno(0x48)
+       EBUSY           = syscall.Errno(0x10)
+       ECANCELED       = syscall.Errno(0x55)
+       ECHILD          = syscall.Errno(0xa)
+       ECONNABORTED    = syscall.Errno(0x35)
+       ECONNREFUSED    = syscall.Errno(0x3d)
+       ECONNRESET      = syscall.Errno(0x36)
+       EDEADLK         = syscall.Errno(0xb)
+       EDESTADDRREQ    = syscall.Errno(0x27)
+       EDOM            = syscall.Errno(0x21)
+       EDOOFUS         = syscall.Errno(0x58)
+       EDQUOT          = syscall.Errno(0x45)
+       EEXIST          = syscall.Errno(0x11)
+       EFAULT          = syscall.Errno(0xe)
+       EFBIG           = syscall.Errno(0x1b)
+       EFTYPE          = syscall.Errno(0x4f)
+       EHOSTDOWN       = syscall.Errno(0x40)
+       EHOSTUNREACH    = syscall.Errno(0x41)
+       EIDRM           = syscall.Errno(0x52)
+       EILSEQ          = syscall.Errno(0x56)
+       EINPROGRESS     = syscall.Errno(0x24)
+       EINTR           = syscall.Errno(0x4)
+       EINVAL          = syscall.Errno(0x16)
+       EIO             = syscall.Errno(0x5)
+       EISCONN         = syscall.Errno(0x38)
+       EISDIR          = syscall.Errno(0x15)
+       ELAST           = syscall.Errno(0x63)
+       ELOOP           = syscall.Errno(0x3e)
+       EMFILE          = syscall.Errno(0x18)
+       EMLINK          = syscall.Errno(0x1f)
+       EMSGSIZE        = syscall.Errno(0x28)
+       EMULTIHOP       = syscall.Errno(0x5a)
+       ENAMETOOLONG    = syscall.Errno(0x3f)
+       ENEEDAUTH       = syscall.Errno(0x51)
+       ENETDOWN        = syscall.Errno(0x32)
+       ENETRESET       = syscall.Errno(0x34)
+       ENETUNREACH     = syscall.Errno(0x33)
+       ENFILE          = syscall.Errno(0x17)
+       ENOATTR         = syscall.Errno(0x57)
+       ENOBUFS         = syscall.Errno(0x37)
+       ENODEV          = syscall.Errno(0x13)
+       ENOENT          = syscall.Errno(0x2)
+       ENOEXEC         = syscall.Errno(0x8)
+       ENOLCK          = syscall.Errno(0x4d)
+       ENOLINK         = syscall.Errno(0x5b)
+       ENOMEDIUM       = syscall.Errno(0x5d)
+       ENOMEM          = syscall.Errno(0xc)
+       ENOMSG          = syscall.Errno(0x53)
+       ENOPROTOOPT     = syscall.Errno(0x2a)
+       ENOSPC          = syscall.Errno(0x1c)
+       ENOSYS          = syscall.Errno(0x4e)
+       ENOTBLK         = syscall.Errno(0xf)
+       ENOTCONN        = syscall.Errno(0x39)
+       ENOTDIR         = syscall.Errno(0x14)
+       ENOTEMPTY       = syscall.Errno(0x42)
+       ENOTSOCK        = syscall.Errno(0x26)
+       ENOTSUP         = syscall.Errno(0x2d)
+       ENOTTY          = syscall.Errno(0x19)
+       ENXIO           = syscall.Errno(0x6)
+       EOPNOTSUPP      = syscall.Errno(0x2d)
+       EOVERFLOW       = syscall.Errno(0x54)
+       EPERM           = syscall.Errno(0x1)
+       EPFNOSUPPORT    = syscall.Errno(0x2e)
+       EPIPE           = syscall.Errno(0x20)
+       EPROCLIM        = syscall.Errno(0x43)
+       EPROCUNAVAIL    = syscall.Errno(0x4c)
+       EPROGMISMATCH   = syscall.Errno(0x4b)
+       EPROGUNAVAIL    = syscall.Errno(0x4a)
+       EPROTO          = syscall.Errno(0x5c)
+       EPROTONOSUPPORT = syscall.Errno(0x2b)
+       EPROTOTYPE      = syscall.Errno(0x29)
+       ERANGE          = syscall.Errno(0x22)
+       EREMOTE         = syscall.Errno(0x47)
+       EROFS           = syscall.Errno(0x1e)
+       ERPCMISMATCH    = syscall.Errno(0x49)
+       ESHUTDOWN       = syscall.Errno(0x3a)
+       ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+       ESPIPE          = syscall.Errno(0x1d)
+       ESRCH           = syscall.Errno(0x3)
+       ESTALE          = syscall.Errno(0x46)
+       ETIMEDOUT       = syscall.Errno(0x3c)
+       ETOOMANYREFS    = syscall.Errno(0x3b)
+       ETXTBSY         = syscall.Errno(0x1a)
+       EUNUSED94       = syscall.Errno(0x5e)
+       EUNUSED95       = syscall.Errno(0x5f)
+       EUNUSED96       = syscall.Errno(0x60)
+       EUNUSED97       = syscall.Errno(0x61)
+       EUNUSED98       = syscall.Errno(0x62)
+       EUSERS          = syscall.Errno(0x44)
+       EWOULDBLOCK     = syscall.Errno(0x23)
+       EXDEV           = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+       SIGABRT     = syscall.Signal(0x6)
+       SIGALRM     = syscall.Signal(0xe)
+       SIGBUS      = syscall.Signal(0xa)
+       SIGCHLD     = syscall.Signal(0x14)
+       SIGCKPT     = syscall.Signal(0x21)
+       SIGCKPTEXIT = syscall.Signal(0x22)
+       SIGCONT     = syscall.Signal(0x13)
+       SIGEMT      = syscall.Signal(0x7)
+       SIGFPE      = syscall.Signal(0x8)
+       SIGHUP      = syscall.Signal(0x1)
+       SIGILL      = syscall.Signal(0x4)
+       SIGINFO     = syscall.Signal(0x1d)
+       SIGINT      = syscall.Signal(0x2)
+       SIGIO       = syscall.Signal(0x17)
+       SIGIOT      = syscall.Signal(0x6)
+       SIGKILL     = syscall.Signal(0x9)
+       SIGPIPE     = syscall.Signal(0xd)
+       SIGPROF     = syscall.Signal(0x1b)
+       SIGQUIT     = syscall.Signal(0x3)
+       SIGSEGV     = syscall.Signal(0xb)
+       SIGSTOP     = syscall.Signal(0x11)
+       SIGSYS      = syscall.Signal(0xc)
+       SIGTERM     = syscall.Signal(0xf)
+       SIGTHR      = syscall.Signal(0x20)
+       SIGTRAP     = syscall.Signal(0x5)
+       SIGTSTP     = syscall.Signal(0x12)
+       SIGTTIN     = syscall.Signal(0x15)
+       SIGTTOU     = syscall.Signal(0x16)
+       SIGURG      = syscall.Signal(0x10)
+       SIGUSR1     = syscall.Signal(0x1e)
+       SIGUSR2     = syscall.Signal(0x1f)
+       SIGVTALRM   = syscall.Signal(0x1a)
+       SIGWINCH    = syscall.Signal(0x1c)
+       SIGXCPU     = syscall.Signal(0x18)
+       SIGXFSZ     = syscall.Signal(0x19)
+)
+
+// 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: "operation 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: "identifier removed",
+       83: "no message of desired type",
+       84: "value too large to be stored in data type",
+       85: "operation canceled",
+       86: "illegal byte sequence",
+       87: "attribute not found",
+       88: "programming error",
+       89: "bad message",
+       90: "multihop attempted",
+       91: "link has been severed",
+       92: "protocol error",
+       93: "no medium found",
+       94: "unknown error: 94",
+       95: "unknown error: 95",
+       96: "unknown error: 96",
+       97: "unknown error: 97",
+       98: "unknown error: 98",
+       99: "unknown error: 99",
+}
+
+// Signal table
+var signals = [...]string{
+       1:  "hangup",
+       2:  "interrupt",
+       3:  "quit",
+       4:  "illegal instruction",
+       5:  "trace/BPT trap",
+       6:  "abort trap",
+       7:  "EMT trap",
+       8:  "floating point exception",
+       9:  "killed",
+       10: "bus error",
+       11: "segmentation fault",
+       12: "bad system call",
+       13: "broken pipe",
+       14: "alarm clock",
+       15: "terminated",
+       16: "urgent I/O condition",
+       17: "suspended (signal)",
+       18: "suspended",
+       19: "continued",
+       20: "child exited",
+       21: "stopped (tty input)",
+       22: "stopped (tty output)",
+       23: "I/O possible",
+       24: "cputime limit exceeded",
+       25: "filesize limit exceeded",
+       26: "virtual timer expired",
+       27: "profiling timer expired",
+       28: "window size changes",
+       29: "information request",
+       30: "user defined signal 1",
+       31: "user defined signal 2",
+       32: "thread Scheduler",
+       33: "checkPoint",
+       34: "checkPointExit",
+}
diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go
new file mode 100644 (file)
index 0000000..7b95751
--- /dev/null
@@ -0,0 +1,1743 @@
+// mkerrors.sh -m32
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build 386,freebsd
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m32 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+       AF_APPLETALK                      = 0x10
+       AF_ARP                            = 0x23
+       AF_ATM                            = 0x1e
+       AF_BLUETOOTH                      = 0x24
+       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_HYLINK                         = 0xf
+       AF_IEEE80211                      = 0x25
+       AF_IMPLINK                        = 0x3
+       AF_INET                           = 0x2
+       AF_INET6                          = 0x1c
+       AF_INET6_SDP                      = 0x2a
+       AF_INET_SDP                       = 0x28
+       AF_IPX                            = 0x17
+       AF_ISDN                           = 0x1a
+       AF_ISO                            = 0x7
+       AF_LAT                            = 0xe
+       AF_LINK                           = 0x12
+       AF_LOCAL                          = 0x1
+       AF_MAX                            = 0x2a
+       AF_NATM                           = 0x1d
+       AF_NETBIOS                        = 0x6
+       AF_NETGRAPH                       = 0x20
+       AF_OSI                            = 0x7
+       AF_PUP                            = 0x4
+       AF_ROUTE                          = 0x11
+       AF_SCLUSTER                       = 0x22
+       AF_SIP                            = 0x18
+       AF_SLOW                           = 0x21
+       AF_SNA                            = 0xb
+       AF_UNIX                           = 0x1
+       AF_UNSPEC                         = 0x0
+       AF_VENDOR00                       = 0x27
+       AF_VENDOR01                       = 0x29
+       AF_VENDOR02                       = 0x2b
+       AF_VENDOR03                       = 0x2d
+       AF_VENDOR04                       = 0x2f
+       AF_VENDOR05                       = 0x31
+       AF_VENDOR06                       = 0x33
+       AF_VENDOR07                       = 0x35
+       AF_VENDOR08                       = 0x37
+       AF_VENDOR09                       = 0x39
+       AF_VENDOR10                       = 0x3b
+       AF_VENDOR11                       = 0x3d
+       AF_VENDOR12                       = 0x3f
+       AF_VENDOR13                       = 0x41
+       AF_VENDOR14                       = 0x43
+       AF_VENDOR15                       = 0x45
+       AF_VENDOR16                       = 0x47
+       AF_VENDOR17                       = 0x49
+       AF_VENDOR18                       = 0x4b
+       AF_VENDOR19                       = 0x4d
+       AF_VENDOR20                       = 0x4f
+       AF_VENDOR21                       = 0x51
+       AF_VENDOR22                       = 0x53
+       AF_VENDOR23                       = 0x55
+       AF_VENDOR24                       = 0x57
+       AF_VENDOR25                       = 0x59
+       AF_VENDOR26                       = 0x5b
+       AF_VENDOR27                       = 0x5d
+       AF_VENDOR28                       = 0x5f
+       AF_VENDOR29                       = 0x61
+       AF_VENDOR30                       = 0x63
+       AF_VENDOR31                       = 0x65
+       AF_VENDOR32                       = 0x67
+       AF_VENDOR33                       = 0x69
+       AF_VENDOR34                       = 0x6b
+       AF_VENDOR35                       = 0x6d
+       AF_VENDOR36                       = 0x6f
+       AF_VENDOR37                       = 0x71
+       AF_VENDOR38                       = 0x73
+       AF_VENDOR39                       = 0x75
+       AF_VENDOR40                       = 0x77
+       AF_VENDOR41                       = 0x79
+       AF_VENDOR42                       = 0x7b
+       AF_VENDOR43                       = 0x7d
+       AF_VENDOR44                       = 0x7f
+       AF_VENDOR45                       = 0x81
+       AF_VENDOR46                       = 0x83
+       AF_VENDOR47                       = 0x85
+       B0                                = 0x0
+       B110                              = 0x6e
+       B115200                           = 0x1c200
+       B1200                             = 0x4b0
+       B134                              = 0x86
+       B14400                            = 0x3840
+       B150                              = 0x96
+       B1800                             = 0x708
+       B19200                            = 0x4b00
+       B200                              = 0xc8
+       B230400                           = 0x38400
+       B2400                             = 0x960
+       B28800                            = 0x7080
+       B300                              = 0x12c
+       B38400                            = 0x9600
+       B460800                           = 0x70800
+       B4800                             = 0x12c0
+       B50                               = 0x32
+       B57600                            = 0xe100
+       B600                              = 0x258
+       B7200                             = 0x1c20
+       B75                               = 0x4b
+       B76800                            = 0x12c00
+       B921600                           = 0xe1000
+       B9600                             = 0x2580
+       BIOCFEEDBACK                      = 0x8004427c
+       BIOCFLUSH                         = 0x20004268
+       BIOCGBLEN                         = 0x40044266
+       BIOCGDIRECTION                    = 0x40044276
+       BIOCGDLT                          = 0x4004426a
+       BIOCGDLTLIST                      = 0xc0084279
+       BIOCGETBUFMODE                    = 0x4004427d
+       BIOCGETIF                         = 0x4020426b
+       BIOCGETZMAX                       = 0x4004427f
+       BIOCGHDRCMPLT                     = 0x40044274
+       BIOCGRSIG                         = 0x40044272
+       BIOCGRTIMEOUT                     = 0x4008426e
+       BIOCGSEESENT                      = 0x40044276
+       BIOCGSTATS                        = 0x4008426f
+       BIOCGTSTAMP                       = 0x40044283
+       BIOCIMMEDIATE                     = 0x80044270
+       BIOCLOCK                          = 0x2000427a
+       BIOCPROMISC                       = 0x20004269
+       BIOCROTZBUF                       = 0x400c4280
+       BIOCSBLEN                         = 0xc0044266
+       BIOCSDIRECTION                    = 0x80044277
+       BIOCSDLT                          = 0x80044278
+       BIOCSETBUFMODE                    = 0x8004427e
+       BIOCSETF                          = 0x80084267
+       BIOCSETFNR                        = 0x80084282
+       BIOCSETIF                         = 0x8020426c
+       BIOCSETWF                         = 0x8008427b
+       BIOCSETZBUF                       = 0x800c4281
+       BIOCSHDRCMPLT                     = 0x80044275
+       BIOCSRSIG                         = 0x80044273
+       BIOCSRTIMEOUT                     = 0x8008426d
+       BIOCSSEESENT                      = 0x80044277
+       BIOCSTSTAMP                       = 0x80044284
+       BIOCVERSION                       = 0x40044271
+       BPF_A                             = 0x10
+       BPF_ABS                           = 0x20
+       BPF_ADD                           = 0x0
+       BPF_ALIGNMENT                     = 0x4
+       BPF_ALU                           = 0x4
+       BPF_AND                           = 0x50
+       BPF_B                             = 0x10
+       BPF_BUFMODE_BUFFER                = 0x1
+       BPF_BUFMODE_ZBUF                  = 0x2
+       BPF_DIV                           = 0x30
+       BPF_H                             = 0x8
+       BPF_IMM                           = 0x0
+       BPF_IND                           = 0x40
+       BPF_JA                            = 0x0
+       BPF_JEQ                           = 0x10
+       BPF_JGE                           = 0x30
+       BPF_JGT                           = 0x20
+       BPF_JMP                           = 0x5
+       BPF_JSET                          = 0x40
+       BPF_K                             = 0x0
+       BPF_LD                            = 0x0
+       BPF_LDX                           = 0x1
+       BPF_LEN                           = 0x80
+       BPF_LSH                           = 0x60
+       BPF_MAJOR_VERSION                 = 0x1
+       BPF_MAXBUFSIZE                    = 0x80000
+       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                           = 0x0
+       BPF_TXA                           = 0x80
+       BPF_T_BINTIME                     = 0x2
+       BPF_T_BINTIME_FAST                = 0x102
+       BPF_T_BINTIME_MONOTONIC           = 0x202
+       BPF_T_BINTIME_MONOTONIC_FAST      = 0x302
+       BPF_T_FAST                        = 0x100
+       BPF_T_FLAG_MASK                   = 0x300
+       BPF_T_FORMAT_MASK                 = 0x3
+       BPF_T_MICROTIME                   = 0x0
+       BPF_T_MICROTIME_FAST              = 0x100
+       BPF_T_MICROTIME_MONOTONIC         = 0x200
+       BPF_T_MICROTIME_MONOTONIC_FAST    = 0x300
+       BPF_T_MONOTONIC                   = 0x200
+       BPF_T_MONOTONIC_FAST              = 0x300
+       BPF_T_NANOTIME                    = 0x1
+       BPF_T_NANOTIME_FAST               = 0x101
+       BPF_T_NANOTIME_MONOTONIC          = 0x201
+       BPF_T_NANOTIME_MONOTONIC_FAST     = 0x301
+       BPF_T_NONE                        = 0x3
+       BPF_T_NORMAL                      = 0x0
+       BPF_W                             = 0x0
+       BPF_X                             = 0x8
+       BRKINT                            = 0x2
+       CFLUSH                            = 0xf
+       CLOCAL                            = 0x8000
+       CLOCK_MONOTONIC                   = 0x4
+       CLOCK_MONOTONIC_FAST              = 0xc
+       CLOCK_MONOTONIC_PRECISE           = 0xb
+       CLOCK_PROCESS_CPUTIME_ID          = 0xf
+       CLOCK_PROF                        = 0x2
+       CLOCK_REALTIME                    = 0x0
+       CLOCK_REALTIME_FAST               = 0xa
+       CLOCK_REALTIME_PRECISE            = 0x9
+       CLOCK_SECOND                      = 0xd
+       CLOCK_THREAD_CPUTIME_ID           = 0xe
+       CLOCK_UPTIME                      = 0x5
+       CLOCK_UPTIME_FAST                 = 0x8
+       CLOCK_UPTIME_PRECISE              = 0x7
+       CLOCK_VIRTUAL                     = 0x1
+       CREAD                             = 0x800
+       CS5                               = 0x0
+       CS6                               = 0x100
+       CS7                               = 0x200
+       CS8                               = 0x300
+       CSIZE                             = 0x300
+       CSTART                            = 0x11
+       CSTATUS                           = 0x14
+       CSTOP                             = 0x13
+       CSTOPB                            = 0x400
+       CSUSP                             = 0x1a
+       CTL_MAXNAME                       = 0x18
+       CTL_NET                           = 0x4
+       DLT_A429                          = 0xb8
+       DLT_A653_ICM                      = 0xb9
+       DLT_AIRONET_HEADER                = 0x78
+       DLT_AOS                           = 0xde
+       DLT_APPLE_IP_OVER_IEEE1394        = 0x8a
+       DLT_ARCNET                        = 0x7
+       DLT_ARCNET_LINUX                  = 0x81
+       DLT_ATM_CLIP                      = 0x13
+       DLT_ATM_RFC1483                   = 0xb
+       DLT_AURORA                        = 0x7e
+       DLT_AX25                          = 0x3
+       DLT_AX25_KISS                     = 0xca
+       DLT_BACNET_MS_TP                  = 0xa5
+       DLT_BLUETOOTH_HCI_H4              = 0xbb
+       DLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9
+       DLT_CAN20B                        = 0xbe
+       DLT_CAN_SOCKETCAN                 = 0xe3
+       DLT_CHAOS                         = 0x5
+       DLT_CHDLC                         = 0x68
+       DLT_CISCO_IOS                     = 0x76
+       DLT_C_HDLC                        = 0x68
+       DLT_C_HDLC_WITH_DIR               = 0xcd
+       DLT_DBUS                          = 0xe7
+       DLT_DECT                          = 0xdd
+       DLT_DOCSIS                        = 0x8f
+       DLT_DVB_CI                        = 0xeb
+       DLT_ECONET                        = 0x73
+       DLT_EN10MB                        = 0x1
+       DLT_EN3MB                         = 0x2
+       DLT_ENC                           = 0x6d
+       DLT_ERF                           = 0xc5
+       DLT_ERF_ETH                       = 0xaf
+       DLT_ERF_POS                       = 0xb0
+       DLT_FC_2                          = 0xe0
+       DLT_FC_2_WITH_FRAME_DELIMS        = 0xe1
+       DLT_FDDI                          = 0xa
+       DLT_FLEXRAY                       = 0xd2
+       DLT_FRELAY                        = 0x6b
+       DLT_FRELAY_WITH_DIR               = 0xce
+       DLT_GCOM_SERIAL                   = 0xad
+       DLT_GCOM_T1E1                     = 0xac
+       DLT_GPF_F                         = 0xab
+       DLT_GPF_T                         = 0xaa
+       DLT_GPRS_LLC                      = 0xa9
+       DLT_GSMTAP_ABIS                   = 0xda
+       DLT_GSMTAP_UM                     = 0xd9
+       DLT_HHDLC                         = 0x79
+       DLT_IBM_SN                        = 0x92
+       DLT_IBM_SP                        = 0x91
+       DLT_IEEE802                       = 0x6
+       DLT_IEEE802_11                    = 0x69
+       DLT_IEEE802_11_RADIO              = 0x7f
+       DLT_IEEE802_11_RADIO_AVS          = 0xa3
+       DLT_IEEE802_15_4                  = 0xc3
+       DLT_IEEE802_15_4_LINUX            = 0xbf
+       DLT_IEEE802_15_4_NOFCS            = 0xe6
+       DLT_IEEE802_15_4_NONASK_PHY       = 0xd7
+       DLT_IEEE802_16_MAC_CPS            = 0xbc
+       DLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1
+       DLT_IPFILTER                      = 0x74
+       DLT_IPMB                          = 0xc7
+       DLT_IPMB_LINUX                    = 0xd1
+       DLT_IPNET                         = 0xe2
+       DLT_IPOIB                         = 0xf2
+       DLT_IPV4                          = 0xe4
+       DLT_IPV6                          = 0xe5
+       DLT_IP_OVER_FC                    = 0x7a
+       DLT_JUNIPER_ATM1                  = 0x89
+       DLT_JUNIPER_ATM2                  = 0x87
+       DLT_JUNIPER_ATM_CEMIC             = 0xee
+       DLT_JUNIPER_CHDLC                 = 0xb5
+       DLT_JUNIPER_ES                    = 0x84
+       DLT_JUNIPER_ETHER                 = 0xb2
+       DLT_JUNIPER_FIBRECHANNEL          = 0xea
+       DLT_JUNIPER_FRELAY                = 0xb4
+       DLT_JUNIPER_GGSN                  = 0x85
+       DLT_JUNIPER_ISM                   = 0xc2
+       DLT_JUNIPER_MFR                   = 0x86
+       DLT_JUNIPER_MLFR                  = 0x83
+       DLT_JUNIPER_MLPPP                 = 0x82
+       DLT_JUNIPER_MONITOR               = 0xa4
+       DLT_JUNIPER_PIC_PEER              = 0xae
+       DLT_JUNIPER_PPP                   = 0xb3
+       DLT_JUNIPER_PPPOE                 = 0xa7
+       DLT_JUNIPER_PPPOE_ATM             = 0xa8
+       DLT_JUNIPER_SERVICES              = 0x88
+       DLT_JUNIPER_SRX_E2E               = 0xe9
+       DLT_JUNIPER_ST                    = 0xc8
+       DLT_JUNIPER_VP                    = 0xb7
+       DLT_JUNIPER_VS                    = 0xe8
+       DLT_LAPB_WITH_DIR                 = 0xcf
+       DLT_LAPD                          = 0xcb
+       DLT_LIN                           = 0xd4
+       DLT_LINUX_EVDEV                   = 0xd8
+       DLT_LINUX_IRDA                    = 0x90
+       DLT_LINUX_LAPD                    = 0xb1
+       DLT_LINUX_PPP_WITHDIRECTION       = 0xa6
+       DLT_LINUX_SLL                     = 0x71
+       DLT_LOOP                          = 0x6c
+       DLT_LTALK                         = 0x72
+       DLT_MATCHING_MAX                  = 0xf6
+       DLT_MATCHING_MIN                  = 0x68
+       DLT_MFR                           = 0xb6
+       DLT_MOST                          = 0xd3
+       DLT_MPEG_2_TS                     = 0xf3
+       DLT_MPLS                          = 0xdb
+       DLT_MTP2                          = 0x8c
+       DLT_MTP2_WITH_PHDR                = 0x8b
+       DLT_MTP3                          = 0x8d
+       DLT_MUX27010                      = 0xec
+       DLT_NETANALYZER                   = 0xf0
+       DLT_NETANALYZER_TRANSPARENT       = 0xf1
+       DLT_NFC_LLCP                      = 0xf5
+       DLT_NFLOG                         = 0xef
+       DLT_NG40                          = 0xf4
+       DLT_NULL                          = 0x0
+       DLT_PCI_EXP                       = 0x7d
+       DLT_PFLOG                         = 0x75
+       DLT_PFSYNC                        = 0x79
+       DLT_PPI                           = 0xc0
+       DLT_PPP                           = 0x9
+       DLT_PPP_BSDOS                     = 0x10
+       DLT_PPP_ETHER                     = 0x33
+       DLT_PPP_PPPD                      = 0xa6
+       DLT_PPP_SERIAL                    = 0x32
+       DLT_PPP_WITH_DIR                  = 0xcc
+       DLT_PPP_WITH_DIRECTION            = 0xa6
+       DLT_PRISM_HEADER                  = 0x77
+       DLT_PRONET                        = 0x4
+       DLT_RAIF1                         = 0xc6
+       DLT_RAW                           = 0xc
+       DLT_RIO                           = 0x7c
+       DLT_SCCP                          = 0x8e
+       DLT_SITA                          = 0xc4
+       DLT_SLIP                          = 0x8
+       DLT_SLIP_BSDOS                    = 0xf
+       DLT_STANAG_5066_D_PDU             = 0xed
+       DLT_SUNATM                        = 0x7b
+       DLT_SYMANTEC_FIREWALL             = 0x63
+       DLT_TZSP                          = 0x80
+       DLT_USB                           = 0xba
+       DLT_USB_LINUX                     = 0xbd
+       DLT_USB_LINUX_MMAPPED             = 0xdc
+       DLT_USER0                         = 0x93
+       DLT_USER1                         = 0x94
+       DLT_USER10                        = 0x9d
+       DLT_USER11                        = 0x9e
+       DLT_USER12                        = 0x9f
+       DLT_USER13                        = 0xa0
+       DLT_USER14                        = 0xa1
+       DLT_USER15                        = 0xa2
+       DLT_USER2                         = 0x95
+       DLT_USER3                         = 0x96
+       DLT_USER4                         = 0x97
+       DLT_USER5                         = 0x98
+       DLT_USER6                         = 0x99
+       DLT_USER7                         = 0x9a
+       DLT_USER8                         = 0x9b
+       DLT_USER9                         = 0x9c
+       DLT_WIHART                        = 0xdf
+       DLT_X2E_SERIAL                    = 0xd5
+       DLT_X2E_XORAYA                    = 0xd6
+       DT_BLK                            = 0x6
+       DT_CHR                            = 0x2
+       DT_DIR                            = 0x4
+       DT_FIFO                           = 0x1
+       DT_LNK                            = 0xa
+       DT_REG                            = 0x8
+       DT_SOCK                           = 0xc
+       DT_UNKNOWN                        = 0x0
+       DT_WHT                            = 0xe
+       ECHO                              = 0x8
+       ECHOCTL                           = 0x40
+       ECHOE                             = 0x2
+       ECHOK                             = 0x4
+       ECHOKE                            = 0x1
+       ECHONL                            = 0x10
+       ECHOPRT                           = 0x20
+       EVFILT_AIO                        = -0x3
+       EVFILT_FS                         = -0x9
+       EVFILT_LIO                        = -0xa
+       EVFILT_PROC                       = -0x5
+       EVFILT_READ                       = -0x1
+       EVFILT_SIGNAL                     = -0x6
+       EVFILT_SYSCOUNT                   = 0xb
+       EVFILT_TIMER                      = -0x7
+       EVFILT_USER                       = -0xb
+       EVFILT_VNODE                      = -0x4
+       EVFILT_WRITE                      = -0x2
+       EV_ADD                            = 0x1
+       EV_CLEAR                          = 0x20
+       EV_DELETE                         = 0x2
+       EV_DISABLE                        = 0x8
+       EV_DISPATCH                       = 0x80
+       EV_DROP                           = 0x1000
+       EV_ENABLE                         = 0x4
+       EV_EOF                            = 0x8000
+       EV_ERROR                          = 0x4000
+       EV_FLAG1                          = 0x2000
+       EV_ONESHOT                        = 0x10
+       EV_RECEIPT                        = 0x40
+       EV_SYSFLAGS                       = 0xf000
+       EXTA                              = 0x4b00
+       EXTATTR_NAMESPACE_EMPTY           = 0x0
+       EXTATTR_NAMESPACE_SYSTEM          = 0x2
+       EXTATTR_NAMESPACE_USER            = 0x1
+       EXTB                              = 0x9600
+       EXTPROC                           = 0x800
+       FD_CLOEXEC                        = 0x1
+       FD_SETSIZE                        = 0x400
+       FLUSHO                            = 0x800000
+       F_CANCEL                          = 0x5
+       F_DUP2FD                          = 0xa
+       F_DUP2FD_CLOEXEC                  = 0x12
+       F_DUPFD                           = 0x0
+       F_DUPFD_CLOEXEC                   = 0x11
+       F_GETFD                           = 0x1
+       F_GETFL                           = 0x3
+       F_GETLK                           = 0xb
+       F_GETOWN                          = 0x5
+       F_OGETLK                          = 0x7
+       F_OK                              = 0x0
+       F_OSETLK                          = 0x8
+       F_OSETLKW                         = 0x9
+       F_RDAHEAD                         = 0x10
+       F_RDLCK                           = 0x1
+       F_READAHEAD                       = 0xf
+       F_SETFD                           = 0x2
+       F_SETFL                           = 0x4
+       F_SETLK                           = 0xc
+       F_SETLKW                          = 0xd
+       F_SETLK_REMOTE                    = 0xe
+       F_SETOWN                          = 0x6
+       F_UNLCK                           = 0x2
+       F_UNLCKSYS                        = 0x4
+       F_WRLCK                           = 0x3
+       HUPCL                             = 0x4000
+       ICANON                            = 0x100
+       ICMP6_FILTER                      = 0x12
+       ICRNL                             = 0x100
+       IEXTEN                            = 0x400
+       IFAN_ARRIVAL                      = 0x0
+       IFAN_DEPARTURE                    = 0x1
+       IFF_ALLMULTI                      = 0x200
+       IFF_ALTPHYS                       = 0x4000
+       IFF_BROADCAST                     = 0x2
+       IFF_CANTCHANGE                    = 0x218f72
+       IFF_CANTCONFIG                    = 0x10000
+       IFF_DEBUG                         = 0x4
+       IFF_DRV_OACTIVE                   = 0x400
+       IFF_DRV_RUNNING                   = 0x40
+       IFF_DYING                         = 0x200000
+       IFF_LINK0                         = 0x1000
+       IFF_LINK1                         = 0x2000
+       IFF_LINK2                         = 0x4000
+       IFF_LOOPBACK                      = 0x8
+       IFF_MONITOR                       = 0x40000
+       IFF_MULTICAST                     = 0x8000
+       IFF_NOARP                         = 0x80
+       IFF_OACTIVE                       = 0x400
+       IFF_POINTOPOINT                   = 0x10
+       IFF_PPROMISC                      = 0x20000
+       IFF_PROMISC                       = 0x100
+       IFF_RENAMING                      = 0x400000
+       IFF_RUNNING                       = 0x40
+       IFF_SIMPLEX                       = 0x800
+       IFF_SMART                         = 0x20
+       IFF_STATICARP                     = 0x80000
+       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_BRIDGE                        = 0xd1
+       IFT_BSC                           = 0x53
+       IFT_CARP                          = 0xf8
+       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_DS0                           = 0x51
+       IFT_DS0BUNDLE                     = 0x52
+       IFT_DS1FDL                        = 0xaa
+       IFT_DS3                           = 0x1e
+       IFT_DTM                           = 0x8c
+       IFT_DVBASILN                      = 0xac
+       IFT_DVBASIOUT                     = 0xad
+       IFT_DVBRCCDOWNSTREAM              = 0x93
+       IFT_DVBRCCMACLAYER                = 0x92
+       IFT_DVBRCCUPSTREAM                = 0x94
+       IFT_ENC                           = 0xf4
+       IFT_EON                           = 0x19
+       IFT_EPLRS                         = 0x57
+       IFT_ESCON                         = 0x49
+       IFT_ETHER                         = 0x6
+       IFT_FAITH                         = 0xf2
+       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_IPXIP                         = 0xf9
+       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_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                         = 0xf6
+       IFT_PFSYNC                        = 0xf7
+       IFT_PLC                           = 0xae
+       IFT_POS                           = 0xab
+       IFT_PPP                           = 0x17
+       IFT_PPPMULTILINKBUNDLE            = 0x6c
+       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                           = 0xf1
+       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_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_STF                           = 0xd7
+       IFT_T1                            = 0x12
+       IFT_TDLC                          = 0x74
+       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_VOICEEM                       = 0x64
+       IFT_VOICEENCAP                    = 0x67
+       IFT_VOICEFXO                      = 0x65
+       IFT_VOICEFXS                      = 0x66
+       IFT_VOICEOVERATM                  = 0x98
+       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
+       IGNBRK                            = 0x1
+       IGNCR                             = 0x80
+       IGNPAR                            = 0x4
+       IMAXBEL                           = 0x2000
+       INLCR                             = 0x40
+       INPCK                             = 0x10
+       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_MASK                   = 0xfffffffe
+       IPPROTO_3PC                       = 0x22
+       IPPROTO_ADFS                      = 0x44
+       IPPROTO_AH                        = 0x33
+       IPPROTO_AHIP                      = 0x3d
+       IPPROTO_APES                      = 0x63
+       IPPROTO_ARGUS                     = 0xd
+       IPPROTO_AX25                      = 0x5d
+       IPPROTO_BHA                       = 0x31
+       IPPROTO_BLT                       = 0x1e
+       IPPROTO_BRSATMON                  = 0x4c
+       IPPROTO_CARP                      = 0x70
+       IPPROTO_CFTP                      = 0x3e
+       IPPROTO_CHAOS                     = 0x10
+       IPPROTO_CMTP                      = 0x26
+       IPPROTO_CPHB                      = 0x49
+       IPPROTO_CPNX                      = 0x48
+       IPPROTO_DDP                       = 0x25
+       IPPROTO_DGP                       = 0x56
+       IPPROTO_DIVERT                    = 0x102
+       IPPROTO_DONE                      = 0x101
+       IPPROTO_DSTOPTS                   = 0x3c
+       IPPROTO_EGP                       = 0x8
+       IPPROTO_EMCON                     = 0xe
+       IPPROTO_ENCAP                     = 0x62
+       IPPROTO_EON                       = 0x50
+       IPPROTO_ESP                       = 0x32
+       IPPROTO_ETHERIP                   = 0x61
+       IPPROTO_FRAGMENT                  = 0x2c
+       IPPROTO_GGP                       = 0x3
+       IPPROTO_GMTP                      = 0x64
+       IPPROTO_GRE                       = 0x2f
+       IPPROTO_HELLO                     = 0x3f
+       IPPROTO_HIP                       = 0x8b
+       IPPROTO_HMP                       = 0x14
+       IPPROTO_HOPOPTS                   = 0x0
+       IPPROTO_ICMP                      = 0x1
+       IPPROTO_ICMPV6                    = 0x3a
+       IPPROTO_IDP                       = 0x16
+       IPPROTO_IDPR                      = 0x23
+       IPPROTO_IDRP                      = 0x2d
+       IPPROTO_IGMP                      = 0x2
+       IPPROTO_IGP                       = 0x55
+       IPPROTO_IGRP                      = 0x58
+       IPPROTO_IL                        = 0x28
+       IPPROTO_INLSP                     = 0x34
+       IPPROTO_INP                       = 0x20
+       IPPROTO_IP                        = 0x0
+       IPPROTO_IPCOMP                    = 0x6c
+       IPPROTO_IPCV                      = 0x47
+       IPPROTO_IPEIP                     = 0x5e
+       IPPROTO_IPIP                      = 0x4
+       IPPROTO_IPPC                      = 0x43
+       IPPROTO_IPV4                      = 0x4
+       IPPROTO_IPV6                      = 0x29
+       IPPROTO_IRTP                      = 0x1c
+       IPPROTO_KRYPTOLAN                 = 0x41
+       IPPROTO_LARP                      = 0x5b
+       IPPROTO_LEAF1                     = 0x19
+       IPPROTO_LEAF2                     = 0x1a
+       IPPROTO_MAX                       = 0x100
+       IPPROTO_MAXID                     = 0x34
+       IPPROTO_MEAS                      = 0x13
+       IPPROTO_MH                        = 0x87
+       IPPROTO_MHRP                      = 0x30
+       IPPROTO_MICP                      = 0x5f
+       IPPROTO_MOBILE                    = 0x37
+       IPPROTO_MPLS                      = 0x89
+       IPPROTO_MTP                       = 0x5c
+       IPPROTO_MUX                       = 0x12
+       IPPROTO_ND                        = 0x4d
+       IPPROTO_NHRP                      = 0x36
+       IPPROTO_NONE                      = 0x3b
+       IPPROTO_NSP                       = 0x1f
+       IPPROTO_NVPII                     = 0xb
+       IPPROTO_OLD_DIVERT                = 0xfe
+       IPPROTO_OSPFIGP                   = 0x59
+       IPPROTO_PFSYNC                    = 0xf0
+       IPPROTO_PGM                       = 0x71
+       IPPROTO_PIGP                      = 0x9
+       IPPROTO_PIM                       = 0x67
+       IPPROTO_PRM                       = 0x15
+       IPPROTO_PUP                       = 0xc
+       IPPROTO_PVP                       = 0x4b
+       IPPROTO_RAW                       = 0xff
+       IPPROTO_RCCMON                    = 0xa
+       IPPROTO_RDP                       = 0x1b
+       IPPROTO_RESERVED_253              = 0xfd
+       IPPROTO_RESERVED_254              = 0xfe
+       IPPROTO_ROUTING                   = 0x2b
+       IPPROTO_RSVP                      = 0x2e
+       IPPROTO_RVD                       = 0x42
+       IPPROTO_SATEXPAK                  = 0x40
+       IPPROTO_SATMON                    = 0x45
+       IPPROTO_SCCSP                     = 0x60
+       IPPROTO_SCTP                      = 0x84
+       IPPROTO_SDRP                      = 0x2a
+       IPPROTO_SEND                      = 0x103
+       IPPROTO_SEP                       = 0x21
+       IPPROTO_SHIM6                     = 0x8c
+       IPPROTO_SKIP                      = 0x39
+       IPPROTO_SPACER                    = 0x7fff
+       IPPROTO_SRPC                      = 0x5a
+       IPPROTO_ST                        = 0x7
+       IPPROTO_SVMTP                     = 0x52
+       IPPROTO_SWIPE                     = 0x35
+       IPPROTO_TCF                       = 0x57
+       IPPROTO_TCP                       = 0x6
+       IPPROTO_TLSP                      = 0x38
+       IPPROTO_TP                        = 0x1d
+       IPPROTO_TPXX                      = 0x27
+       IPPROTO_TRUNK1                    = 0x17
+       IPPROTO_TRUNK2                    = 0x18
+       IPPROTO_TTP                       = 0x54
+       IPPROTO_UDP                       = 0x11
+       IPPROTO_UDPLITE                   = 0x88
+       IPPROTO_VINES                     = 0x53
+       IPPROTO_VISA                      = 0x46
+       IPPROTO_VMTP                      = 0x51
+       IPPROTO_WBEXPAK                   = 0x4f
+       IPPROTO_WBMON                     = 0x4e
+       IPPROTO_WSN                       = 0x4a
+       IPPROTO_XNET                      = 0xf
+       IPPROTO_XTP                       = 0x24
+       IPV6_AUTOFLOWLABEL                = 0x3b
+       IPV6_BINDANY                      = 0x40
+       IPV6_BINDV6ONLY                   = 0x1b
+       IPV6_CHECKSUM                     = 0x1a
+       IPV6_DEFAULT_MULTICAST_HOPS       = 0x1
+       IPV6_DEFAULT_MULTICAST_LOOP       = 0x1
+       IPV6_DEFHLIM                      = 0x40
+       IPV6_DONTFRAG                     = 0x3e
+       IPV6_DSTOPTS                      = 0x32
+       IPV6_FAITH                        = 0x1d
+       IPV6_FLOWINFO_MASK                = 0xffffff0f
+       IPV6_FLOWLABEL_MASK               = 0xffff0f00
+       IPV6_FRAGTTL                      = 0x78
+       IPV6_FW_ADD                       = 0x1e
+       IPV6_FW_DEL                       = 0x1f
+       IPV6_FW_FLUSH                     = 0x20
+       IPV6_FW_GET                       = 0x22
+       IPV6_FW_ZERO                      = 0x21
+       IPV6_HLIMDEC                      = 0x1
+       IPV6_HOPLIMIT                     = 0x2f
+       IPV6_HOPOPTS                      = 0x31
+       IPV6_IPSEC_POLICY                 = 0x1c
+       IPV6_JOIN_GROUP                   = 0xc
+       IPV6_LEAVE_GROUP                  = 0xd
+       IPV6_MAXHLIM                      = 0xff
+       IPV6_MAXOPTHDR                    = 0x800
+       IPV6_MAXPACKET                    = 0xffff
+       IPV6_MAX_GROUP_SRC_FILTER         = 0x200
+       IPV6_MAX_MEMBERSHIPS              = 0xfff
+       IPV6_MAX_SOCK_SRC_FILTER          = 0x80
+       IPV6_MIN_MEMBERSHIPS              = 0x1f
+       IPV6_MMTU                         = 0x500
+       IPV6_MSFILTER                     = 0x4a
+       IPV6_MULTICAST_HOPS               = 0xa
+       IPV6_MULTICAST_IF                 = 0x9
+       IPV6_MULTICAST_LOOP               = 0xb
+       IPV6_NEXTHOP                      = 0x30
+       IPV6_PATHMTU                      = 0x2c
+       IPV6_PKTINFO                      = 0x2e
+       IPV6_PORTRANGE                    = 0xe
+       IPV6_PORTRANGE_DEFAULT            = 0x0
+       IPV6_PORTRANGE_HIGH               = 0x1
+       IPV6_PORTRANGE_LOW                = 0x2
+       IPV6_PREFER_TEMPADDR              = 0x3f
+       IPV6_RECVDSTOPTS                  = 0x28
+       IPV6_RECVHOPLIMIT                 = 0x25
+       IPV6_RECVHOPOPTS                  = 0x27
+       IPV6_RECVPATHMTU                  = 0x2b
+       IPV6_RECVPKTINFO                  = 0x24
+       IPV6_RECVRTHDR                    = 0x26
+       IPV6_RECVTCLASS                   = 0x39
+       IPV6_RTHDR                        = 0x33
+       IPV6_RTHDRDSTOPTS                 = 0x23
+       IPV6_RTHDR_LOOSE                  = 0x0
+       IPV6_RTHDR_STRICT                 = 0x1
+       IPV6_RTHDR_TYPE_0                 = 0x0
+       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_ADD_SOURCE_MEMBERSHIP          = 0x46
+       IP_BINDANY                        = 0x18
+       IP_BLOCK_SOURCE                   = 0x48
+       IP_DEFAULT_MULTICAST_LOOP         = 0x1
+       IP_DEFAULT_MULTICAST_TTL          = 0x1
+       IP_DF                             = 0x4000
+       IP_DONTFRAG                       = 0x43
+       IP_DROP_MEMBERSHIP                = 0xd
+       IP_DROP_SOURCE_MEMBERSHIP         = 0x47
+       IP_DUMMYNET3                      = 0x31
+       IP_DUMMYNET_CONFIGURE             = 0x3c
+       IP_DUMMYNET_DEL                   = 0x3d
+       IP_DUMMYNET_FLUSH                 = 0x3e
+       IP_DUMMYNET_GET                   = 0x40
+       IP_FAITH                          = 0x16
+       IP_FW3                            = 0x30
+       IP_FW_ADD                         = 0x32
+       IP_FW_DEL                         = 0x33
+       IP_FW_FLUSH                       = 0x34
+       IP_FW_GET                         = 0x36
+       IP_FW_NAT_CFG                     = 0x38
+       IP_FW_NAT_DEL                     = 0x39
+       IP_FW_NAT_GET_CONFIG              = 0x3a
+       IP_FW_NAT_GET_LOG                 = 0x3b
+       IP_FW_RESETLOG                    = 0x37
+       IP_FW_TABLE_ADD                   = 0x28
+       IP_FW_TABLE_DEL                   = 0x29
+       IP_FW_TABLE_FLUSH                 = 0x2a
+       IP_FW_TABLE_GETSIZE               = 0x2b
+       IP_FW_TABLE_LIST                  = 0x2c
+       IP_FW_ZERO                        = 0x35
+       IP_HDRINCL                        = 0x2
+       IP_IPSEC_POLICY                   = 0x15
+       IP_MAXPACKET                      = 0xffff
+       IP_MAX_GROUP_SRC_FILTER           = 0x200
+       IP_MAX_MEMBERSHIPS                = 0xfff
+       IP_MAX_SOCK_MUTE_FILTER           = 0x80
+       IP_MAX_SOCK_SRC_FILTER            = 0x80
+       IP_MAX_SOURCE_FILTER              = 0x400
+       IP_MF                             = 0x2000
+       IP_MINTTL                         = 0x42
+       IP_MIN_MEMBERSHIPS                = 0x1f
+       IP_MSFILTER                       = 0x4a
+       IP_MSS                            = 0x240
+       IP_MULTICAST_IF                   = 0x9
+       IP_MULTICAST_LOOP                 = 0xb
+       IP_MULTICAST_TTL                  = 0xa
+       IP_MULTICAST_VIF                  = 0xe
+       IP_OFFMASK                        = 0x1fff
+       IP_ONESBCAST                      = 0x17
+       IP_OPTIONS                        = 0x1
+       IP_PORTRANGE                      = 0x13
+       IP_PORTRANGE_DEFAULT              = 0x0
+       IP_PORTRANGE_HIGH                 = 0x1
+       IP_PORTRANGE_LOW                  = 0x2
+       IP_RECVDSTADDR                    = 0x7
+       IP_RECVIF                         = 0x14
+       IP_RECVOPTS                       = 0x5
+       IP_RECVRETOPTS                    = 0x6
+       IP_RECVTOS                        = 0x44
+       IP_RECVTTL                        = 0x41
+       IP_RETOPTS                        = 0x8
+       IP_RF                             = 0x8000
+       IP_RSVP_OFF                       = 0x10
+       IP_RSVP_ON                        = 0xf
+       IP_RSVP_VIF_OFF                   = 0x12
+       IP_RSVP_VIF_ON                    = 0x11
+       IP_SENDSRCADDR                    = 0x7
+       IP_TOS                            = 0x3
+       IP_TTL                            = 0x4
+       IP_UNBLOCK_SOURCE                 = 0x49
+       ISIG                              = 0x80
+       ISTRIP                            = 0x20
+       IXANY                             = 0x800
+       IXOFF                             = 0x400
+       IXON                              = 0x200
+       LOCK_EX                           = 0x2
+       LOCK_NB                           = 0x4
+       LOCK_SH                           = 0x1
+       LOCK_UN                           = 0x8
+       MADV_AUTOSYNC                     = 0x7
+       MADV_CORE                         = 0x9
+       MADV_DONTNEED                     = 0x4
+       MADV_FREE                         = 0x5
+       MADV_NOCORE                       = 0x8
+       MADV_NORMAL                       = 0x0
+       MADV_NOSYNC                       = 0x6
+       MADV_PROTECT                      = 0xa
+       MADV_RANDOM                       = 0x1
+       MADV_SEQUENTIAL                   = 0x2
+       MADV_WILLNEED                     = 0x3
+       MAP_ALIGNED_SUPER                 = 0x1000000
+       MAP_ALIGNMENT_MASK                = -0x1000000
+       MAP_ALIGNMENT_SHIFT               = 0x18
+       MAP_ANON                          = 0x1000
+       MAP_ANONYMOUS                     = 0x1000
+       MAP_COPY                          = 0x2
+       MAP_EXCL                          = 0x4000
+       MAP_FILE                          = 0x0
+       MAP_FIXED                         = 0x10
+       MAP_HASSEMAPHORE                  = 0x200
+       MAP_NOCORE                        = 0x20000
+       MAP_NORESERVE                     = 0x40
+       MAP_NOSYNC                        = 0x800
+       MAP_PREFAULT_READ                 = 0x40000
+       MAP_PRIVATE                       = 0x2
+       MAP_RENAME                        = 0x20
+       MAP_RESERVED0080                  = 0x80
+       MAP_RESERVED0100                  = 0x100
+       MAP_SHARED                        = 0x1
+       MAP_STACK                         = 0x400
+       MCL_CURRENT                       = 0x1
+       MCL_FUTURE                        = 0x2
+       MSG_CMSG_CLOEXEC                  = 0x40000
+       MSG_COMPAT                        = 0x8000
+       MSG_CTRUNC                        = 0x20
+       MSG_DONTROUTE                     = 0x4
+       MSG_DONTWAIT                      = 0x80
+       MSG_EOF                           = 0x100
+       MSG_EOR                           = 0x8
+       MSG_NBIO                          = 0x4000
+       MSG_NOSIGNAL                      = 0x20000
+       MSG_NOTIFICATION                  = 0x2000
+       MSG_OOB                           = 0x1
+       MSG_PEEK                          = 0x2
+       MSG_TRUNC                         = 0x10
+       MSG_WAITALL                       = 0x40
+       MS_ASYNC                          = 0x1
+       MS_INVALIDATE                     = 0x2
+       MS_SYNC                           = 0x0
+       NAME_MAX                          = 0xff
+       NET_RT_DUMP                       = 0x1
+       NET_RT_FLAGS                      = 0x2
+       NET_RT_IFLIST                     = 0x3
+       NET_RT_IFLISTL                    = 0x5
+       NET_RT_IFMALIST                   = 0x4
+       NET_RT_MAXID                      = 0x6
+       NOFLSH                            = 0x80000000
+       NOTE_ATTRIB                       = 0x8
+       NOTE_CHILD                        = 0x4
+       NOTE_DELETE                       = 0x1
+       NOTE_EXEC                         = 0x20000000
+       NOTE_EXIT                         = 0x80000000
+       NOTE_EXTEND                       = 0x4
+       NOTE_FFAND                        = 0x40000000
+       NOTE_FFCOPY                       = 0xc0000000
+       NOTE_FFCTRLMASK                   = 0xc0000000
+       NOTE_FFLAGSMASK                   = 0xffffff
+       NOTE_FFNOP                        = 0x0
+       NOTE_FFOR                         = 0x80000000
+       NOTE_FORK                         = 0x40000000
+       NOTE_LINK                         = 0x10
+       NOTE_LOWAT                        = 0x1
+       NOTE_PCTRLMASK                    = 0xf0000000
+       NOTE_PDATAMASK                    = 0xfffff
+       NOTE_RENAME                       = 0x20
+       NOTE_REVOKE                       = 0x40
+       NOTE_TRACK                        = 0x1
+       NOTE_TRACKERR                     = 0x2
+       NOTE_TRIGGER                      = 0x1000000
+       NOTE_WRITE                        = 0x2
+       OCRNL                             = 0x10
+       ONLCR                             = 0x2
+       ONLRET                            = 0x40
+       ONOCR                             = 0x20
+       ONOEOT                            = 0x8
+       OPOST                             = 0x1
+       O_ACCMODE                         = 0x3
+       O_APPEND                          = 0x8
+       O_ASYNC                           = 0x40
+       O_CLOEXEC                         = 0x100000
+       O_CREAT                           = 0x200
+       O_DIRECT                          = 0x10000
+       O_DIRECTORY                       = 0x20000
+       O_EXCL                            = 0x800
+       O_EXEC                            = 0x40000
+       O_EXLOCK                          = 0x20
+       O_FSYNC                           = 0x80
+       O_NDELAY                          = 0x4
+       O_NOCTTY                          = 0x8000
+       O_NOFOLLOW                        = 0x100
+       O_NONBLOCK                        = 0x4
+       O_RDONLY                          = 0x0
+       O_RDWR                            = 0x2
+       O_SHLOCK                          = 0x10
+       O_SYNC                            = 0x80
+       O_TRUNC                           = 0x400
+       O_TTY_INIT                        = 0x80000
+       O_WRONLY                          = 0x1
+       PARENB                            = 0x1000
+       PARMRK                            = 0x8
+       PARODD                            = 0x2000
+       PENDIN                            = 0x20000000
+       PRIO_PGRP                         = 0x1
+       PRIO_PROCESS                      = 0x0
+       PRIO_USER                         = 0x2
+       PROT_EXEC                         = 0x4
+       PROT_NONE                         = 0x0
+       PROT_READ                         = 0x1
+       PROT_WRITE                        = 0x2
+       RLIMIT_AS                         = 0xa
+       RLIMIT_CORE                       = 0x4
+       RLIMIT_CPU                        = 0x0
+       RLIMIT_DATA                       = 0x2
+       RLIMIT_FSIZE                      = 0x1
+       RLIMIT_NOFILE                     = 0x8
+       RLIMIT_STACK                      = 0x3
+       RLIM_INFINITY                     = 0x7fffffffffffffff
+       RTAX_AUTHOR                       = 0x6
+       RTAX_BRD                          = 0x7
+       RTAX_DST                          = 0x0
+       RTAX_GATEWAY                      = 0x1
+       RTAX_GENMASK                      = 0x3
+       RTAX_IFA                          = 0x5
+       RTAX_IFP                          = 0x4
+       RTAX_MAX                          = 0x8
+       RTAX_NETMASK                      = 0x2
+       RTA_AUTHOR                        = 0x40
+       RTA_BRD                           = 0x80
+       RTA_DST                           = 0x1
+       RTA_GATEWAY                       = 0x2
+       RTA_GENMASK                       = 0x8
+       RTA_IFA                           = 0x20
+       RTA_IFP                           = 0x10
+       RTA_NETMASK                       = 0x4
+       RTF_BLACKHOLE                     = 0x1000
+       RTF_BROADCAST                     = 0x400000
+       RTF_DONE                          = 0x40
+       RTF_DYNAMIC                       = 0x10
+       RTF_FMASK                         = 0x1004d808
+       RTF_GATEWAY                       = 0x2
+       RTF_GWFLAG_COMPAT                 = 0x80000000
+       RTF_HOST                          = 0x4
+       RTF_LLDATA                        = 0x400
+       RTF_LLINFO                        = 0x400
+       RTF_LOCAL                         = 0x200000
+       RTF_MODIFIED                      = 0x20
+       RTF_MULTICAST                     = 0x800000
+       RTF_PINNED                        = 0x100000
+       RTF_PRCLONING                     = 0x10000
+       RTF_PROTO1                        = 0x8000
+       RTF_PROTO2                        = 0x4000
+       RTF_PROTO3                        = 0x40000
+       RTF_REJECT                        = 0x8
+       RTF_RNH_LOCKED                    = 0x40000000
+       RTF_STATIC                        = 0x800
+       RTF_STICKY                        = 0x10000000
+       RTF_UP                            = 0x1
+       RTF_XRESOLVE                      = 0x200
+       RTM_ADD                           = 0x1
+       RTM_CHANGE                        = 0x3
+       RTM_DELADDR                       = 0xd
+       RTM_DELETE                        = 0x2
+       RTM_DELMADDR                      = 0x10
+       RTM_GET                           = 0x4
+       RTM_IEEE80211                     = 0x12
+       RTM_IFANNOUNCE                    = 0x11
+       RTM_IFINFO                        = 0xe
+       RTM_LOCK                          = 0x8
+       RTM_LOSING                        = 0x5
+       RTM_MISS                          = 0x7
+       RTM_NEWADDR                       = 0xc
+       RTM_NEWMADDR                      = 0xf
+       RTM_OLDADD                        = 0x9
+       RTM_OLDDEL                        = 0xa
+       RTM_REDIRECT                      = 0x6
+       RTM_RESOLVE                       = 0xb
+       RTM_RTTUNIT                       = 0xf4240
+       RTM_VERSION                       = 0x5
+       RTV_EXPIRE                        = 0x4
+       RTV_HOPCOUNT                      = 0x2
+       RTV_MTU                           = 0x1
+       RTV_RPIPE                         = 0x8
+       RTV_RTT                           = 0x40
+       RTV_RTTVAR                        = 0x80
+       RTV_SPIPE                         = 0x10
+       RTV_SSTHRESH                      = 0x20
+       RTV_WEIGHT                        = 0x100
+       RT_ALL_FIBS                       = -0x1
+       RT_CACHING_CONTEXT                = 0x1
+       RT_DEFAULT_FIB                    = 0x0
+       RT_NORTREF                        = 0x2
+       RUSAGE_CHILDREN                   = -0x1
+       RUSAGE_SELF                       = 0x0
+       RUSAGE_THREAD                     = 0x1
+       SCM_BINTIME                       = 0x4
+       SCM_CREDS                         = 0x3
+       SCM_RIGHTS                        = 0x1
+       SCM_TIMESTAMP                     = 0x2
+       SHUT_RD                           = 0x0
+       SHUT_RDWR                         = 0x2
+       SHUT_WR                           = 0x1
+       SIOCADDMULTI                      = 0x80206931
+       SIOCADDRT                         = 0x8030720a
+       SIOCAIFADDR                       = 0x8040691a
+       SIOCAIFGROUP                      = 0x80246987
+       SIOCALIFADDR                      = 0x8118691b
+       SIOCATMARK                        = 0x40047307
+       SIOCDELMULTI                      = 0x80206932
+       SIOCDELRT                         = 0x8030720b
+       SIOCDIFADDR                       = 0x80206919
+       SIOCDIFGROUP                      = 0x80246989
+       SIOCDIFPHYADDR                    = 0x80206949
+       SIOCDLIFADDR                      = 0x8118691d
+       SIOCGDRVSPEC                      = 0xc01c697b
+       SIOCGETSGCNT                      = 0xc0147210
+       SIOCGETVIFCNT                     = 0xc014720f
+       SIOCGHIWAT                        = 0x40047301
+       SIOCGIFADDR                       = 0xc0206921
+       SIOCGIFBRDADDR                    = 0xc0206923
+       SIOCGIFCAP                        = 0xc020691f
+       SIOCGIFCONF                       = 0xc0086924
+       SIOCGIFDESCR                      = 0xc020692a
+       SIOCGIFDSTADDR                    = 0xc0206922
+       SIOCGIFFIB                        = 0xc020695c
+       SIOCGIFFLAGS                      = 0xc0206911
+       SIOCGIFGENERIC                    = 0xc020693a
+       SIOCGIFGMEMB                      = 0xc024698a
+       SIOCGIFGROUP                      = 0xc0246988
+       SIOCGIFINDEX                      = 0xc0206920
+       SIOCGIFMAC                        = 0xc0206926
+       SIOCGIFMEDIA                      = 0xc0286938
+       SIOCGIFMETRIC                     = 0xc0206917
+       SIOCGIFMTU                        = 0xc0206933
+       SIOCGIFNETMASK                    = 0xc0206925
+       SIOCGIFPDSTADDR                   = 0xc0206948
+       SIOCGIFPHYS                       = 0xc0206935
+       SIOCGIFPSRCADDR                   = 0xc0206947
+       SIOCGIFSTATUS                     = 0xc331693b
+       SIOCGLIFADDR                      = 0xc118691c
+       SIOCGLIFPHYADDR                   = 0xc118694b
+       SIOCGLOWAT                        = 0x40047303
+       SIOCGPGRP                         = 0x40047309
+       SIOCGPRIVATE_0                    = 0xc0206950
+       SIOCGPRIVATE_1                    = 0xc0206951
+       SIOCIFCREATE                      = 0xc020697a
+       SIOCIFCREATE2                     = 0xc020697c
+       SIOCIFDESTROY                     = 0x80206979
+       SIOCIFGCLONERS                    = 0xc00c6978
+       SIOCSDRVSPEC                      = 0x801c697b
+       SIOCSHIWAT                        = 0x80047300
+       SIOCSIFADDR                       = 0x8020690c
+       SIOCSIFBRDADDR                    = 0x80206913
+       SIOCSIFCAP                        = 0x8020691e
+       SIOCSIFDESCR                      = 0x80206929
+       SIOCSIFDSTADDR                    = 0x8020690e
+       SIOCSIFFIB                        = 0x8020695d
+       SIOCSIFFLAGS                      = 0x80206910
+       SIOCSIFGENERIC                    = 0x80206939
+       SIOCSIFLLADDR                     = 0x8020693c
+       SIOCSIFMAC                        = 0x80206927
+       SIOCSIFMEDIA                      = 0xc0206937
+       SIOCSIFMETRIC                     = 0x80206918
+       SIOCSIFMTU                        = 0x80206934
+       SIOCSIFNAME                       = 0x80206928
+       SIOCSIFNETMASK                    = 0x80206916
+       SIOCSIFPHYADDR                    = 0x80406946
+       SIOCSIFPHYS                       = 0x80206936
+       SIOCSIFRVNET                      = 0xc020695b
+       SIOCSIFVNET                       = 0xc020695a
+       SIOCSLIFPHYADDR                   = 0x8118694a
+       SIOCSLOWAT                        = 0x80047302
+       SIOCSPGRP                         = 0x80047308
+       SOCK_CLOEXEC                      = 0x10000000
+       SOCK_DGRAM                        = 0x2
+       SOCK_MAXADDRLEN                   = 0xff
+       SOCK_NONBLOCK                     = 0x20000000
+       SOCK_RAW                          = 0x3
+       SOCK_RDM                          = 0x4
+       SOCK_SEQPACKET                    = 0x5
+       SOCK_STREAM                       = 0x1
+       SOL_SOCKET                        = 0xffff
+       SOMAXCONN                         = 0x80
+       SO_ACCEPTCONN                     = 0x2
+       SO_ACCEPTFILTER                   = 0x1000
+       SO_BINTIME                        = 0x2000
+       SO_BROADCAST                      = 0x20
+       SO_DEBUG                          = 0x1
+       SO_DONTROUTE                      = 0x10
+       SO_ERROR                          = 0x1007
+       SO_KEEPALIVE                      = 0x8
+       SO_LABEL                          = 0x1009
+       SO_LINGER                         = 0x80
+       SO_LISTENINCQLEN                  = 0x1013
+       SO_LISTENQLEN                     = 0x1012
+       SO_LISTENQLIMIT                   = 0x1011
+       SO_NOSIGPIPE                      = 0x800
+       SO_NO_DDP                         = 0x8000
+       SO_NO_OFFLOAD                     = 0x4000
+       SO_OOBINLINE                      = 0x100
+       SO_PEERLABEL                      = 0x1010
+       SO_PROTOCOL                       = 0x1016
+       SO_PROTOTYPE                      = 0x1016
+       SO_RCVBUF                         = 0x1002
+       SO_RCVLOWAT                       = 0x1004
+       SO_RCVTIMEO                       = 0x1006
+       SO_REUSEADDR                      = 0x4
+       SO_REUSEPORT                      = 0x200
+       SO_SETFIB                         = 0x1014
+       SO_SNDBUF                         = 0x1001
+       SO_SNDLOWAT                       = 0x1003
+       SO_SNDTIMEO                       = 0x1005
+       SO_TIMESTAMP                      = 0x400
+       SO_TYPE                           = 0x1008
+       SO_USELOOPBACK                    = 0x40
+       SO_USER_COOKIE                    = 0x1015
+       SO_VENDOR                         = 0x80000000
+       TCIFLUSH                          = 0x1
+       TCIOFLUSH                         = 0x3
+       TCOFLUSH                          = 0x2
+       TCP_CA_NAME_MAX                   = 0x10
+       TCP_CONGESTION                    = 0x40
+       TCP_INFO                          = 0x20
+       TCP_KEEPCNT                       = 0x400
+       TCP_KEEPIDLE                      = 0x100
+       TCP_KEEPINIT                      = 0x80
+       TCP_KEEPINTVL                     = 0x200
+       TCP_MAXBURST                      = 0x4
+       TCP_MAXHLEN                       = 0x3c
+       TCP_MAXOLEN                       = 0x28
+       TCP_MAXSEG                        = 0x2
+       TCP_MAXWIN                        = 0xffff
+       TCP_MAX_SACK                      = 0x4
+       TCP_MAX_WINSHIFT                  = 0xe
+       TCP_MD5SIG                        = 0x10
+       TCP_MINMSS                        = 0xd8
+       TCP_MSS                           = 0x218
+       TCP_NODELAY                       = 0x1
+       TCP_NOOPT                         = 0x8
+       TCP_NOPUSH                        = 0x4
+       TCP_VENDOR                        = 0x80000000
+       TCSAFLUSH                         = 0x2
+       TIOCCBRK                          = 0x2000747a
+       TIOCCDTR                          = 0x20007478
+       TIOCCONS                          = 0x80047462
+       TIOCDRAIN                         = 0x2000745e
+       TIOCEXCL                          = 0x2000740d
+       TIOCEXT                           = 0x80047460
+       TIOCFLUSH                         = 0x80047410
+       TIOCGDRAINWAIT                    = 0x40047456
+       TIOCGETA                          = 0x402c7413
+       TIOCGETD                          = 0x4004741a
+       TIOCGPGRP                         = 0x40047477
+       TIOCGPTN                          = 0x4004740f
+       TIOCGSID                          = 0x40047463
+       TIOCGWINSZ                        = 0x40087468
+       TIOCMBIC                          = 0x8004746b
+       TIOCMBIS                          = 0x8004746c
+       TIOCMGDTRWAIT                     = 0x4004745a
+       TIOCMGET                          = 0x4004746a
+       TIOCMSDTRWAIT                     = 0x8004745b
+       TIOCMSET                          = 0x8004746d
+       TIOCM_CAR                         = 0x40
+       TIOCM_CD                          = 0x40
+       TIOCM_CTS                         = 0x20
+       TIOCM_DCD                         = 0x40
+       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                      = 0x0
+       TIOCPKT_DOSTOP                    = 0x20
+       TIOCPKT_FLUSHREAD                 = 0x1
+       TIOCPKT_FLUSHWRITE                = 0x2
+       TIOCPKT_IOCTL                     = 0x40
+       TIOCPKT_NOSTOP                    = 0x10
+       TIOCPKT_START                     = 0x8
+       TIOCPKT_STOP                      = 0x4
+       TIOCPTMASTER                      = 0x2000741c
+       TIOCSBRK                          = 0x2000747b
+       TIOCSCTTY                         = 0x20007461
+       TIOCSDRAINWAIT                    = 0x80047457
+       TIOCSDTR                          = 0x20007479
+       TIOCSETA                          = 0x802c7414
+       TIOCSETAF                         = 0x802c7416
+       TIOCSETAW                         = 0x802c7415
+       TIOCSETD                          = 0x8004741b
+       TIOCSIG                           = 0x2004745f
+       TIOCSPGRP                         = 0x80047476
+       TIOCSTART                         = 0x2000746e
+       TIOCSTAT                          = 0x20007465
+       TIOCSTI                           = 0x80017472
+       TIOCSTOP                          = 0x2000746f
+       TIOCSWINSZ                        = 0x80087467
+       TIOCTIMESTAMP                     = 0x40087459
+       TIOCUCNTL                         = 0x80047466
+       TOSTOP                            = 0x400000
+       VDISCARD                          = 0xf
+       VDSUSP                            = 0xb
+       VEOF                              = 0x0
+       VEOL                              = 0x1
+       VEOL2                             = 0x2
+       VERASE                            = 0x3
+       VERASE2                           = 0x7
+       VINTR                             = 0x8
+       VKILL                             = 0x5
+       VLNEXT                            = 0xe
+       VMIN                              = 0x10
+       VQUIT                             = 0x9
+       VREPRINT                          = 0x6
+       VSTART                            = 0xc
+       VSTATUS                           = 0x12
+       VSTOP                             = 0xd
+       VSUSP                             = 0xa
+       VTIME                             = 0x11
+       VWERASE                           = 0x4
+       WCONTINUED                        = 0x4
+       WCOREFLAG                         = 0x80
+       WEXITED                           = 0x10
+       WLINUXCLONE                       = 0x80000000
+       WNOHANG                           = 0x1
+       WNOWAIT                           = 0x8
+       WSTOPPED                          = 0x2
+       WTRAPPED                          = 0x20
+       WUNTRACED                         = 0x2
+)
+
+// Errors
+const (
+       E2BIG           = syscall.Errno(0x7)
+       EACCES          = syscall.Errno(0xd)
+       EADDRINUSE      = syscall.Errno(0x30)
+       EADDRNOTAVAIL   = syscall.Errno(0x31)
+       EAFNOSUPPORT    = syscall.Errno(0x2f)
+       EAGAIN          = syscall.Errno(0x23)
+       EALREADY        = syscall.Errno(0x25)
+       EAUTH           = syscall.Errno(0x50)
+       EBADF           = syscall.Errno(0x9)
+       EBADMSG         = syscall.Errno(0x59)
+       EBADRPC         = syscall.Errno(0x48)
+       EBUSY           = syscall.Errno(0x10)
+       ECANCELED       = syscall.Errno(0x55)
+       ECAPMODE        = syscall.Errno(0x5e)
+       ECHILD          = syscall.Errno(0xa)
+       ECONNABORTED    = syscall.Errno(0x35)
+       ECONNREFUSED    = syscall.Errno(0x3d)
+       ECONNRESET      = syscall.Errno(0x36)
+       EDEADLK         = syscall.Errno(0xb)
+       EDESTADDRREQ    = syscall.Errno(0x27)
+       EDOM            = syscall.Errno(0x21)
+       EDOOFUS         = syscall.Errno(0x58)
+       EDQUOT          = syscall.Errno(0x45)
+       EEXIST          = syscall.Errno(0x11)
+       EFAULT          = syscall.Errno(0xe)
+       EFBIG           = syscall.Errno(0x1b)
+       EFTYPE          = syscall.Errno(0x4f)
+       EHOSTDOWN       = syscall.Errno(0x40)
+       EHOSTUNREACH    = syscall.Errno(0x41)
+       EIDRM           = syscall.Errno(0x52)
+       EILSEQ          = syscall.Errno(0x56)
+       EINPROGRESS     = syscall.Errno(0x24)
+       EINTR           = syscall.Errno(0x4)
+       EINVAL          = syscall.Errno(0x16)
+       EIO             = syscall.Errno(0x5)
+       EISCONN         = syscall.Errno(0x38)
+       EISDIR          = syscall.Errno(0x15)
+       ELAST           = syscall.Errno(0x60)
+       ELOOP           = syscall.Errno(0x3e)
+       EMFILE          = syscall.Errno(0x18)
+       EMLINK          = syscall.Errno(0x1f)
+       EMSGSIZE        = syscall.Errno(0x28)
+       EMULTIHOP       = syscall.Errno(0x5a)
+       ENAMETOOLONG    = syscall.Errno(0x3f)
+       ENEEDAUTH       = syscall.Errno(0x51)
+       ENETDOWN        = syscall.Errno(0x32)
+       ENETRESET       = syscall.Errno(0x34)
+       ENETUNREACH     = syscall.Errno(0x33)
+       ENFILE          = syscall.Errno(0x17)
+       ENOATTR         = syscall.Errno(0x57)
+       ENOBUFS         = syscall.Errno(0x37)
+       ENODEV          = syscall.Errno(0x13)
+       ENOENT          = syscall.Errno(0x2)
+       ENOEXEC         = syscall.Errno(0x8)
+       ENOLCK          = syscall.Errno(0x4d)
+       ENOLINK         = syscall.Errno(0x5b)
+       ENOMEM          = syscall.Errno(0xc)
+       ENOMSG          = syscall.Errno(0x53)
+       ENOPROTOOPT     = syscall.Errno(0x2a)
+       ENOSPC          = syscall.Errno(0x1c)
+       ENOSYS          = syscall.Errno(0x4e)
+       ENOTBLK         = syscall.Errno(0xf)
+       ENOTCAPABLE     = syscall.Errno(0x5d)
+       ENOTCONN        = syscall.Errno(0x39)
+       ENOTDIR         = syscall.Errno(0x14)
+       ENOTEMPTY       = syscall.Errno(0x42)
+       ENOTRECOVERABLE = syscall.Errno(0x5f)
+       ENOTSOCK        = syscall.Errno(0x26)
+       ENOTSUP         = syscall.Errno(0x2d)
+       ENOTTY          = syscall.Errno(0x19)
+       ENXIO           = syscall.Errno(0x6)
+       EOPNOTSUPP      = syscall.Errno(0x2d)
+       EOVERFLOW       = syscall.Errno(0x54)
+       EOWNERDEAD      = syscall.Errno(0x60)
+       EPERM           = syscall.Errno(0x1)
+       EPFNOSUPPORT    = syscall.Errno(0x2e)
+       EPIPE           = syscall.Errno(0x20)
+       EPROCLIM        = syscall.Errno(0x43)
+       EPROCUNAVAIL    = syscall.Errno(0x4c)
+       EPROGMISMATCH   = syscall.Errno(0x4b)
+       EPROGUNAVAIL    = syscall.Errno(0x4a)
+       EPROTO          = syscall.Errno(0x5c)
+       EPROTONOSUPPORT = syscall.Errno(0x2b)
+       EPROTOTYPE      = syscall.Errno(0x29)
+       ERANGE          = syscall.Errno(0x22)
+       EREMOTE         = syscall.Errno(0x47)
+       EROFS           = syscall.Errno(0x1e)
+       ERPCMISMATCH    = syscall.Errno(0x49)
+       ESHUTDOWN       = syscall.Errno(0x3a)
+       ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+       ESPIPE          = syscall.Errno(0x1d)
+       ESRCH           = syscall.Errno(0x3)
+       ESTALE          = syscall.Errno(0x46)
+       ETIMEDOUT       = syscall.Errno(0x3c)
+       ETOOMANYREFS    = syscall.Errno(0x3b)
+       ETXTBSY         = syscall.Errno(0x1a)
+       EUSERS          = syscall.Errno(0x44)
+       EWOULDBLOCK     = syscall.Errno(0x23)
+       EXDEV           = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+       SIGABRT   = syscall.Signal(0x6)
+       SIGALRM   = syscall.Signal(0xe)
+       SIGBUS    = syscall.Signal(0xa)
+       SIGCHLD   = syscall.Signal(0x14)
+       SIGCONT   = syscall.Signal(0x13)
+       SIGEMT    = syscall.Signal(0x7)
+       SIGFPE    = syscall.Signal(0x8)
+       SIGHUP    = syscall.Signal(0x1)
+       SIGILL    = syscall.Signal(0x4)
+       SIGINFO   = syscall.Signal(0x1d)
+       SIGINT    = syscall.Signal(0x2)
+       SIGIO     = syscall.Signal(0x17)
+       SIGIOT    = syscall.Signal(0x6)
+       SIGKILL   = syscall.Signal(0x9)
+       SIGLIBRT  = syscall.Signal(0x21)
+       SIGLWP    = syscall.Signal(0x20)
+       SIGPIPE   = syscall.Signal(0xd)
+       SIGPROF   = syscall.Signal(0x1b)
+       SIGQUIT   = syscall.Signal(0x3)
+       SIGSEGV   = syscall.Signal(0xb)
+       SIGSTOP   = syscall.Signal(0x11)
+       SIGSYS    = syscall.Signal(0xc)
+       SIGTERM   = syscall.Signal(0xf)
+       SIGTHR    = syscall.Signal(0x20)
+       SIGTRAP   = syscall.Signal(0x5)
+       SIGTSTP   = syscall.Signal(0x12)
+       SIGTTIN   = syscall.Signal(0x15)
+       SIGTTOU   = syscall.Signal(0x16)
+       SIGURG    = syscall.Signal(0x10)
+       SIGUSR1   = syscall.Signal(0x1e)
+       SIGUSR2   = syscall.Signal(0x1f)
+       SIGVTALRM = syscall.Signal(0x1a)
+       SIGWINCH  = syscall.Signal(0x1c)
+       SIGXCPU   = syscall.Signal(0x18)
+       SIGXFSZ   = syscall.Signal(0x19)
+)
+
+// 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: "operation 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: "identifier removed",
+       83: "no message of desired type",
+       84: "value too large to be stored in data type",
+       85: "operation canceled",
+       86: "illegal byte sequence",
+       87: "attribute not found",
+       88: "programming error",
+       89: "bad message",
+       90: "multihop attempted",
+       91: "link has been severed",
+       92: "protocol error",
+       93: "capabilities insufficient",
+       94: "not permitted in capability mode",
+       95: "state not recoverable",
+       96: "previous owner died",
+}
+
+// Signal table
+var signals = [...]string{
+       1:  "hangup",
+       2:  "interrupt",
+       3:  "quit",
+       4:  "illegal instruction",
+       5:  "trace/BPT trap",
+       6:  "abort trap",
+       7:  "EMT trap",
+       8:  "floating point exception",
+       9:  "killed",
+       10: "bus error",
+       11: "segmentation fault",
+       12: "bad system call",
+       13: "broken pipe",
+       14: "alarm clock",
+       15: "terminated",
+       16: "urgent I/O condition",
+       17: "suspended (signal)",
+       18: "suspended",
+       19: "continued",
+       20: "child exited",
+       21: "stopped (tty input)",
+       22: "stopped (tty output)",
+       23: "I/O possible",
+       24: "cputime limit exceeded",
+       25: "filesize limit exceeded",
+       26: "virtual timer expired",
+       27: "profiling timer expired",
+       28: "window size changes",
+       29: "information request",
+       30: "user defined signal 1",
+       31: "user defined signal 2",
+       32: "unknown signal",
+       33: "unknown signal",
+}
diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go
new file mode 100644 (file)
index 0000000..e48e779
--- /dev/null
@@ -0,0 +1,1748 @@
+// mkerrors.sh -m64
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,freebsd
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m64 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+       AF_APPLETALK                      = 0x10
+       AF_ARP                            = 0x23
+       AF_ATM                            = 0x1e
+       AF_BLUETOOTH                      = 0x24
+       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_HYLINK                         = 0xf
+       AF_IEEE80211                      = 0x25
+       AF_IMPLINK                        = 0x3
+       AF_INET                           = 0x2
+       AF_INET6                          = 0x1c
+       AF_INET6_SDP                      = 0x2a
+       AF_INET_SDP                       = 0x28
+       AF_IPX                            = 0x17
+       AF_ISDN                           = 0x1a
+       AF_ISO                            = 0x7
+       AF_LAT                            = 0xe
+       AF_LINK                           = 0x12
+       AF_LOCAL                          = 0x1
+       AF_MAX                            = 0x2a
+       AF_NATM                           = 0x1d
+       AF_NETBIOS                        = 0x6
+       AF_NETGRAPH                       = 0x20
+       AF_OSI                            = 0x7
+       AF_PUP                            = 0x4
+       AF_ROUTE                          = 0x11
+       AF_SCLUSTER                       = 0x22
+       AF_SIP                            = 0x18
+       AF_SLOW                           = 0x21
+       AF_SNA                            = 0xb
+       AF_UNIX                           = 0x1
+       AF_UNSPEC                         = 0x0
+       AF_VENDOR00                       = 0x27
+       AF_VENDOR01                       = 0x29
+       AF_VENDOR02                       = 0x2b
+       AF_VENDOR03                       = 0x2d
+       AF_VENDOR04                       = 0x2f
+       AF_VENDOR05                       = 0x31
+       AF_VENDOR06                       = 0x33
+       AF_VENDOR07                       = 0x35
+       AF_VENDOR08                       = 0x37
+       AF_VENDOR09                       = 0x39
+       AF_VENDOR10                       = 0x3b
+       AF_VENDOR11                       = 0x3d
+       AF_VENDOR12                       = 0x3f
+       AF_VENDOR13                       = 0x41
+       AF_VENDOR14                       = 0x43
+       AF_VENDOR15                       = 0x45
+       AF_VENDOR16                       = 0x47
+       AF_VENDOR17                       = 0x49
+       AF_VENDOR18                       = 0x4b
+       AF_VENDOR19                       = 0x4d
+       AF_VENDOR20                       = 0x4f
+       AF_VENDOR21                       = 0x51
+       AF_VENDOR22                       = 0x53
+       AF_VENDOR23                       = 0x55
+       AF_VENDOR24                       = 0x57
+       AF_VENDOR25                       = 0x59
+       AF_VENDOR26                       = 0x5b
+       AF_VENDOR27                       = 0x5d
+       AF_VENDOR28                       = 0x5f
+       AF_VENDOR29                       = 0x61
+       AF_VENDOR30                       = 0x63
+       AF_VENDOR31                       = 0x65
+       AF_VENDOR32                       = 0x67
+       AF_VENDOR33                       = 0x69
+       AF_VENDOR34                       = 0x6b
+       AF_VENDOR35                       = 0x6d
+       AF_VENDOR36                       = 0x6f
+       AF_VENDOR37                       = 0x71
+       AF_VENDOR38                       = 0x73
+       AF_VENDOR39                       = 0x75
+       AF_VENDOR40                       = 0x77
+       AF_VENDOR41                       = 0x79
+       AF_VENDOR42                       = 0x7b
+       AF_VENDOR43                       = 0x7d
+       AF_VENDOR44                       = 0x7f
+       AF_VENDOR45                       = 0x81
+       AF_VENDOR46                       = 0x83
+       AF_VENDOR47                       = 0x85
+       B0                                = 0x0
+       B110                              = 0x6e
+       B115200                           = 0x1c200
+       B1200                             = 0x4b0
+       B134                              = 0x86
+       B14400                            = 0x3840
+       B150                              = 0x96
+       B1800                             = 0x708
+       B19200                            = 0x4b00
+       B200                              = 0xc8
+       B230400                           = 0x38400
+       B2400                             = 0x960
+       B28800                            = 0x7080
+       B300                              = 0x12c
+       B38400                            = 0x9600
+       B460800                           = 0x70800
+       B4800                             = 0x12c0
+       B50                               = 0x32
+       B57600                            = 0xe100
+       B600                              = 0x258
+       B7200                             = 0x1c20
+       B75                               = 0x4b
+       B76800                            = 0x12c00
+       B921600                           = 0xe1000
+       B9600                             = 0x2580
+       BIOCFEEDBACK                      = 0x8004427c
+       BIOCFLUSH                         = 0x20004268
+       BIOCGBLEN                         = 0x40044266
+       BIOCGDIRECTION                    = 0x40044276
+       BIOCGDLT                          = 0x4004426a
+       BIOCGDLTLIST                      = 0xc0104279
+       BIOCGETBUFMODE                    = 0x4004427d
+       BIOCGETIF                         = 0x4020426b
+       BIOCGETZMAX                       = 0x4008427f
+       BIOCGHDRCMPLT                     = 0x40044274
+       BIOCGRSIG                         = 0x40044272
+       BIOCGRTIMEOUT                     = 0x4010426e
+       BIOCGSEESENT                      = 0x40044276
+       BIOCGSTATS                        = 0x4008426f
+       BIOCGTSTAMP                       = 0x40044283
+       BIOCIMMEDIATE                     = 0x80044270
+       BIOCLOCK                          = 0x2000427a
+       BIOCPROMISC                       = 0x20004269
+       BIOCROTZBUF                       = 0x40184280
+       BIOCSBLEN                         = 0xc0044266
+       BIOCSDIRECTION                    = 0x80044277
+       BIOCSDLT                          = 0x80044278
+       BIOCSETBUFMODE                    = 0x8004427e
+       BIOCSETF                          = 0x80104267
+       BIOCSETFNR                        = 0x80104282
+       BIOCSETIF                         = 0x8020426c
+       BIOCSETWF                         = 0x8010427b
+       BIOCSETZBUF                       = 0x80184281
+       BIOCSHDRCMPLT                     = 0x80044275
+       BIOCSRSIG                         = 0x80044273
+       BIOCSRTIMEOUT                     = 0x8010426d
+       BIOCSSEESENT                      = 0x80044277
+       BIOCSTSTAMP                       = 0x80044284
+       BIOCVERSION                       = 0x40044271
+       BPF_A                             = 0x10
+       BPF_ABS                           = 0x20
+       BPF_ADD                           = 0x0
+       BPF_ALIGNMENT                     = 0x8
+       BPF_ALU                           = 0x4
+       BPF_AND                           = 0x50
+       BPF_B                             = 0x10
+       BPF_BUFMODE_BUFFER                = 0x1
+       BPF_BUFMODE_ZBUF                  = 0x2
+       BPF_DIV                           = 0x30
+       BPF_H                             = 0x8
+       BPF_IMM                           = 0x0
+       BPF_IND                           = 0x40
+       BPF_JA                            = 0x0
+       BPF_JEQ                           = 0x10
+       BPF_JGE                           = 0x30
+       BPF_JGT                           = 0x20
+       BPF_JMP                           = 0x5
+       BPF_JSET                          = 0x40
+       BPF_K                             = 0x0
+       BPF_LD                            = 0x0
+       BPF_LDX                           = 0x1
+       BPF_LEN                           = 0x80
+       BPF_LSH                           = 0x60
+       BPF_MAJOR_VERSION                 = 0x1
+       BPF_MAXBUFSIZE                    = 0x80000
+       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                           = 0x0
+       BPF_TXA                           = 0x80
+       BPF_T_BINTIME                     = 0x2
+       BPF_T_BINTIME_FAST                = 0x102
+       BPF_T_BINTIME_MONOTONIC           = 0x202
+       BPF_T_BINTIME_MONOTONIC_FAST      = 0x302
+       BPF_T_FAST                        = 0x100
+       BPF_T_FLAG_MASK                   = 0x300
+       BPF_T_FORMAT_MASK                 = 0x3
+       BPF_T_MICROTIME                   = 0x0
+       BPF_T_MICROTIME_FAST              = 0x100
+       BPF_T_MICROTIME_MONOTONIC         = 0x200
+       BPF_T_MICROTIME_MONOTONIC_FAST    = 0x300
+       BPF_T_MONOTONIC                   = 0x200
+       BPF_T_MONOTONIC_FAST              = 0x300
+       BPF_T_NANOTIME                    = 0x1
+       BPF_T_NANOTIME_FAST               = 0x101
+       BPF_T_NANOTIME_MONOTONIC          = 0x201
+       BPF_T_NANOTIME_MONOTONIC_FAST     = 0x301
+       BPF_T_NONE                        = 0x3
+       BPF_T_NORMAL                      = 0x0
+       BPF_W                             = 0x0
+       BPF_X                             = 0x8
+       BRKINT                            = 0x2
+       CFLUSH                            = 0xf
+       CLOCAL                            = 0x8000
+       CLOCK_MONOTONIC                   = 0x4
+       CLOCK_MONOTONIC_FAST              = 0xc
+       CLOCK_MONOTONIC_PRECISE           = 0xb
+       CLOCK_PROCESS_CPUTIME_ID          = 0xf
+       CLOCK_PROF                        = 0x2
+       CLOCK_REALTIME                    = 0x0
+       CLOCK_REALTIME_FAST               = 0xa
+       CLOCK_REALTIME_PRECISE            = 0x9
+       CLOCK_SECOND                      = 0xd
+       CLOCK_THREAD_CPUTIME_ID           = 0xe
+       CLOCK_UPTIME                      = 0x5
+       CLOCK_UPTIME_FAST                 = 0x8
+       CLOCK_UPTIME_PRECISE              = 0x7
+       CLOCK_VIRTUAL                     = 0x1
+       CREAD                             = 0x800
+       CS5                               = 0x0
+       CS6                               = 0x100
+       CS7                               = 0x200
+       CS8                               = 0x300
+       CSIZE                             = 0x300
+       CSTART                            = 0x11
+       CSTATUS                           = 0x14
+       CSTOP                             = 0x13
+       CSTOPB                            = 0x400
+       CSUSP                             = 0x1a
+       CTL_MAXNAME                       = 0x18
+       CTL_NET                           = 0x4
+       DLT_A429                          = 0xb8
+       DLT_A653_ICM                      = 0xb9
+       DLT_AIRONET_HEADER                = 0x78
+       DLT_AOS                           = 0xde
+       DLT_APPLE_IP_OVER_IEEE1394        = 0x8a
+       DLT_ARCNET                        = 0x7
+       DLT_ARCNET_LINUX                  = 0x81
+       DLT_ATM_CLIP                      = 0x13
+       DLT_ATM_RFC1483                   = 0xb
+       DLT_AURORA                        = 0x7e
+       DLT_AX25                          = 0x3
+       DLT_AX25_KISS                     = 0xca
+       DLT_BACNET_MS_TP                  = 0xa5
+       DLT_BLUETOOTH_HCI_H4              = 0xbb
+       DLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9
+       DLT_CAN20B                        = 0xbe
+       DLT_CAN_SOCKETCAN                 = 0xe3
+       DLT_CHAOS                         = 0x5
+       DLT_CHDLC                         = 0x68
+       DLT_CISCO_IOS                     = 0x76
+       DLT_C_HDLC                        = 0x68
+       DLT_C_HDLC_WITH_DIR               = 0xcd
+       DLT_DBUS                          = 0xe7
+       DLT_DECT                          = 0xdd
+       DLT_DOCSIS                        = 0x8f
+       DLT_DVB_CI                        = 0xeb
+       DLT_ECONET                        = 0x73
+       DLT_EN10MB                        = 0x1
+       DLT_EN3MB                         = 0x2
+       DLT_ENC                           = 0x6d
+       DLT_ERF                           = 0xc5
+       DLT_ERF_ETH                       = 0xaf
+       DLT_ERF_POS                       = 0xb0
+       DLT_FC_2                          = 0xe0
+       DLT_FC_2_WITH_FRAME_DELIMS        = 0xe1
+       DLT_FDDI                          = 0xa
+       DLT_FLEXRAY                       = 0xd2
+       DLT_FRELAY                        = 0x6b
+       DLT_FRELAY_WITH_DIR               = 0xce
+       DLT_GCOM_SERIAL                   = 0xad
+       DLT_GCOM_T1E1                     = 0xac
+       DLT_GPF_F                         = 0xab
+       DLT_GPF_T                         = 0xaa
+       DLT_GPRS_LLC                      = 0xa9
+       DLT_GSMTAP_ABIS                   = 0xda
+       DLT_GSMTAP_UM                     = 0xd9
+       DLT_HHDLC                         = 0x79
+       DLT_IBM_SN                        = 0x92
+       DLT_IBM_SP                        = 0x91
+       DLT_IEEE802                       = 0x6
+       DLT_IEEE802_11                    = 0x69
+       DLT_IEEE802_11_RADIO              = 0x7f
+       DLT_IEEE802_11_RADIO_AVS          = 0xa3
+       DLT_IEEE802_15_4                  = 0xc3
+       DLT_IEEE802_15_4_LINUX            = 0xbf
+       DLT_IEEE802_15_4_NOFCS            = 0xe6
+       DLT_IEEE802_15_4_NONASK_PHY       = 0xd7
+       DLT_IEEE802_16_MAC_CPS            = 0xbc
+       DLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1
+       DLT_IPFILTER                      = 0x74
+       DLT_IPMB                          = 0xc7
+       DLT_IPMB_LINUX                    = 0xd1
+       DLT_IPNET                         = 0xe2
+       DLT_IPOIB                         = 0xf2
+       DLT_IPV4                          = 0xe4
+       DLT_IPV6                          = 0xe5
+       DLT_IP_OVER_FC                    = 0x7a
+       DLT_JUNIPER_ATM1                  = 0x89
+       DLT_JUNIPER_ATM2                  = 0x87
+       DLT_JUNIPER_ATM_CEMIC             = 0xee
+       DLT_JUNIPER_CHDLC                 = 0xb5
+       DLT_JUNIPER_ES                    = 0x84
+       DLT_JUNIPER_ETHER                 = 0xb2
+       DLT_JUNIPER_FIBRECHANNEL          = 0xea
+       DLT_JUNIPER_FRELAY                = 0xb4
+       DLT_JUNIPER_GGSN                  = 0x85
+       DLT_JUNIPER_ISM                   = 0xc2
+       DLT_JUNIPER_MFR                   = 0x86
+       DLT_JUNIPER_MLFR                  = 0x83
+       DLT_JUNIPER_MLPPP                 = 0x82
+       DLT_JUNIPER_MONITOR               = 0xa4
+       DLT_JUNIPER_PIC_PEER              = 0xae
+       DLT_JUNIPER_PPP                   = 0xb3
+       DLT_JUNIPER_PPPOE                 = 0xa7
+       DLT_JUNIPER_PPPOE_ATM             = 0xa8
+       DLT_JUNIPER_SERVICES              = 0x88
+       DLT_JUNIPER_SRX_E2E               = 0xe9
+       DLT_JUNIPER_ST                    = 0xc8
+       DLT_JUNIPER_VP                    = 0xb7
+       DLT_JUNIPER_VS                    = 0xe8
+       DLT_LAPB_WITH_DIR                 = 0xcf
+       DLT_LAPD                          = 0xcb
+       DLT_LIN                           = 0xd4
+       DLT_LINUX_EVDEV                   = 0xd8
+       DLT_LINUX_IRDA                    = 0x90
+       DLT_LINUX_LAPD                    = 0xb1
+       DLT_LINUX_PPP_WITHDIRECTION       = 0xa6
+       DLT_LINUX_SLL                     = 0x71
+       DLT_LOOP                          = 0x6c
+       DLT_LTALK                         = 0x72
+       DLT_MATCHING_MAX                  = 0xf6
+       DLT_MATCHING_MIN                  = 0x68
+       DLT_MFR                           = 0xb6
+       DLT_MOST                          = 0xd3
+       DLT_MPEG_2_TS                     = 0xf3
+       DLT_MPLS                          = 0xdb
+       DLT_MTP2                          = 0x8c
+       DLT_MTP2_WITH_PHDR                = 0x8b
+       DLT_MTP3                          = 0x8d
+       DLT_MUX27010                      = 0xec
+       DLT_NETANALYZER                   = 0xf0
+       DLT_NETANALYZER_TRANSPARENT       = 0xf1
+       DLT_NFC_LLCP                      = 0xf5
+       DLT_NFLOG                         = 0xef
+       DLT_NG40                          = 0xf4
+       DLT_NULL                          = 0x0
+       DLT_PCI_EXP                       = 0x7d
+       DLT_PFLOG                         = 0x75
+       DLT_PFSYNC                        = 0x79
+       DLT_PPI                           = 0xc0
+       DLT_PPP                           = 0x9
+       DLT_PPP_BSDOS                     = 0x10
+       DLT_PPP_ETHER                     = 0x33
+       DLT_PPP_PPPD                      = 0xa6
+       DLT_PPP_SERIAL                    = 0x32
+       DLT_PPP_WITH_DIR                  = 0xcc
+       DLT_PPP_WITH_DIRECTION            = 0xa6
+       DLT_PRISM_HEADER                  = 0x77
+       DLT_PRONET                        = 0x4
+       DLT_RAIF1                         = 0xc6
+       DLT_RAW                           = 0xc
+       DLT_RIO                           = 0x7c
+       DLT_SCCP                          = 0x8e
+       DLT_SITA                          = 0xc4
+       DLT_SLIP                          = 0x8
+       DLT_SLIP_BSDOS                    = 0xf
+       DLT_STANAG_5066_D_PDU             = 0xed
+       DLT_SUNATM                        = 0x7b
+       DLT_SYMANTEC_FIREWALL             = 0x63
+       DLT_TZSP                          = 0x80
+       DLT_USB                           = 0xba
+       DLT_USB_LINUX                     = 0xbd
+       DLT_USB_LINUX_MMAPPED             = 0xdc
+       DLT_USER0                         = 0x93
+       DLT_USER1                         = 0x94
+       DLT_USER10                        = 0x9d
+       DLT_USER11                        = 0x9e
+       DLT_USER12                        = 0x9f
+       DLT_USER13                        = 0xa0
+       DLT_USER14                        = 0xa1
+       DLT_USER15                        = 0xa2
+       DLT_USER2                         = 0x95
+       DLT_USER3                         = 0x96
+       DLT_USER4                         = 0x97
+       DLT_USER5                         = 0x98
+       DLT_USER6                         = 0x99
+       DLT_USER7                         = 0x9a
+       DLT_USER8                         = 0x9b
+       DLT_USER9                         = 0x9c
+       DLT_WIHART                        = 0xdf
+       DLT_X2E_SERIAL                    = 0xd5
+       DLT_X2E_XORAYA                    = 0xd6
+       DT_BLK                            = 0x6
+       DT_CHR                            = 0x2
+       DT_DIR                            = 0x4
+       DT_FIFO                           = 0x1
+       DT_LNK                            = 0xa
+       DT_REG                            = 0x8
+       DT_SOCK                           = 0xc
+       DT_UNKNOWN                        = 0x0
+       DT_WHT                            = 0xe
+       ECHO                              = 0x8
+       ECHOCTL                           = 0x40
+       ECHOE                             = 0x2
+       ECHOK                             = 0x4
+       ECHOKE                            = 0x1
+       ECHONL                            = 0x10
+       ECHOPRT                           = 0x20
+       EVFILT_AIO                        = -0x3
+       EVFILT_FS                         = -0x9
+       EVFILT_LIO                        = -0xa
+       EVFILT_PROC                       = -0x5
+       EVFILT_READ                       = -0x1
+       EVFILT_SIGNAL                     = -0x6
+       EVFILT_SYSCOUNT                   = 0xb
+       EVFILT_TIMER                      = -0x7
+       EVFILT_USER                       = -0xb
+       EVFILT_VNODE                      = -0x4
+       EVFILT_WRITE                      = -0x2
+       EV_ADD                            = 0x1
+       EV_CLEAR                          = 0x20
+       EV_DELETE                         = 0x2
+       EV_DISABLE                        = 0x8
+       EV_DISPATCH                       = 0x80
+       EV_DROP                           = 0x1000
+       EV_ENABLE                         = 0x4
+       EV_EOF                            = 0x8000
+       EV_ERROR                          = 0x4000
+       EV_FLAG1                          = 0x2000
+       EV_ONESHOT                        = 0x10
+       EV_RECEIPT                        = 0x40
+       EV_SYSFLAGS                       = 0xf000
+       EXTA                              = 0x4b00
+       EXTATTR_NAMESPACE_EMPTY           = 0x0
+       EXTATTR_NAMESPACE_SYSTEM          = 0x2
+       EXTATTR_NAMESPACE_USER            = 0x1
+       EXTB                              = 0x9600
+       EXTPROC                           = 0x800
+       FD_CLOEXEC                        = 0x1
+       FD_SETSIZE                        = 0x400
+       FLUSHO                            = 0x800000
+       F_CANCEL                          = 0x5
+       F_DUP2FD                          = 0xa
+       F_DUP2FD_CLOEXEC                  = 0x12
+       F_DUPFD                           = 0x0
+       F_DUPFD_CLOEXEC                   = 0x11
+       F_GETFD                           = 0x1
+       F_GETFL                           = 0x3
+       F_GETLK                           = 0xb
+       F_GETOWN                          = 0x5
+       F_OGETLK                          = 0x7
+       F_OK                              = 0x0
+       F_OSETLK                          = 0x8
+       F_OSETLKW                         = 0x9
+       F_RDAHEAD                         = 0x10
+       F_RDLCK                           = 0x1
+       F_READAHEAD                       = 0xf
+       F_SETFD                           = 0x2
+       F_SETFL                           = 0x4
+       F_SETLK                           = 0xc
+       F_SETLKW                          = 0xd
+       F_SETLK_REMOTE                    = 0xe
+       F_SETOWN                          = 0x6
+       F_UNLCK                           = 0x2
+       F_UNLCKSYS                        = 0x4
+       F_WRLCK                           = 0x3
+       HUPCL                             = 0x4000
+       ICANON                            = 0x100
+       ICMP6_FILTER                      = 0x12
+       ICRNL                             = 0x100
+       IEXTEN                            = 0x400
+       IFAN_ARRIVAL                      = 0x0
+       IFAN_DEPARTURE                    = 0x1
+       IFF_ALLMULTI                      = 0x200
+       IFF_ALTPHYS                       = 0x4000
+       IFF_BROADCAST                     = 0x2
+       IFF_CANTCHANGE                    = 0x218f72
+       IFF_CANTCONFIG                    = 0x10000
+       IFF_DEBUG                         = 0x4
+       IFF_DRV_OACTIVE                   = 0x400
+       IFF_DRV_RUNNING                   = 0x40
+       IFF_DYING                         = 0x200000
+       IFF_LINK0                         = 0x1000
+       IFF_LINK1                         = 0x2000
+       IFF_LINK2                         = 0x4000
+       IFF_LOOPBACK                      = 0x8
+       IFF_MONITOR                       = 0x40000
+       IFF_MULTICAST                     = 0x8000
+       IFF_NOARP                         = 0x80
+       IFF_OACTIVE                       = 0x400
+       IFF_POINTOPOINT                   = 0x10
+       IFF_PPROMISC                      = 0x20000
+       IFF_PROMISC                       = 0x100
+       IFF_RENAMING                      = 0x400000
+       IFF_RUNNING                       = 0x40
+       IFF_SIMPLEX                       = 0x800
+       IFF_SMART                         = 0x20
+       IFF_STATICARP                     = 0x80000
+       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_BRIDGE                        = 0xd1
+       IFT_BSC                           = 0x53
+       IFT_CARP                          = 0xf8
+       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_DS0                           = 0x51
+       IFT_DS0BUNDLE                     = 0x52
+       IFT_DS1FDL                        = 0xaa
+       IFT_DS3                           = 0x1e
+       IFT_DTM                           = 0x8c
+       IFT_DVBASILN                      = 0xac
+       IFT_DVBASIOUT                     = 0xad
+       IFT_DVBRCCDOWNSTREAM              = 0x93
+       IFT_DVBRCCMACLAYER                = 0x92
+       IFT_DVBRCCUPSTREAM                = 0x94
+       IFT_ENC                           = 0xf4
+       IFT_EON                           = 0x19
+       IFT_EPLRS                         = 0x57
+       IFT_ESCON                         = 0x49
+       IFT_ETHER                         = 0x6
+       IFT_FAITH                         = 0xf2
+       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_IPXIP                         = 0xf9
+       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_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                         = 0xf6
+       IFT_PFSYNC                        = 0xf7
+       IFT_PLC                           = 0xae
+       IFT_POS                           = 0xab
+       IFT_PPP                           = 0x17
+       IFT_PPPMULTILINKBUNDLE            = 0x6c
+       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                           = 0xf1
+       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_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_STF                           = 0xd7
+       IFT_T1                            = 0x12
+       IFT_TDLC                          = 0x74
+       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_VOICEEM                       = 0x64
+       IFT_VOICEENCAP                    = 0x67
+       IFT_VOICEFXO                      = 0x65
+       IFT_VOICEFXS                      = 0x66
+       IFT_VOICEOVERATM                  = 0x98
+       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
+       IGNBRK                            = 0x1
+       IGNCR                             = 0x80
+       IGNPAR                            = 0x4
+       IMAXBEL                           = 0x2000
+       INLCR                             = 0x40
+       INPCK                             = 0x10
+       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_MASK                   = 0xfffffffe
+       IPPROTO_3PC                       = 0x22
+       IPPROTO_ADFS                      = 0x44
+       IPPROTO_AH                        = 0x33
+       IPPROTO_AHIP                      = 0x3d
+       IPPROTO_APES                      = 0x63
+       IPPROTO_ARGUS                     = 0xd
+       IPPROTO_AX25                      = 0x5d
+       IPPROTO_BHA                       = 0x31
+       IPPROTO_BLT                       = 0x1e
+       IPPROTO_BRSATMON                  = 0x4c
+       IPPROTO_CARP                      = 0x70
+       IPPROTO_CFTP                      = 0x3e
+       IPPROTO_CHAOS                     = 0x10
+       IPPROTO_CMTP                      = 0x26
+       IPPROTO_CPHB                      = 0x49
+       IPPROTO_CPNX                      = 0x48
+       IPPROTO_DDP                       = 0x25
+       IPPROTO_DGP                       = 0x56
+       IPPROTO_DIVERT                    = 0x102
+       IPPROTO_DONE                      = 0x101
+       IPPROTO_DSTOPTS                   = 0x3c
+       IPPROTO_EGP                       = 0x8
+       IPPROTO_EMCON                     = 0xe
+       IPPROTO_ENCAP                     = 0x62
+       IPPROTO_EON                       = 0x50
+       IPPROTO_ESP                       = 0x32
+       IPPROTO_ETHERIP                   = 0x61
+       IPPROTO_FRAGMENT                  = 0x2c
+       IPPROTO_GGP                       = 0x3
+       IPPROTO_GMTP                      = 0x64
+       IPPROTO_GRE                       = 0x2f
+       IPPROTO_HELLO                     = 0x3f
+       IPPROTO_HIP                       = 0x8b
+       IPPROTO_HMP                       = 0x14
+       IPPROTO_HOPOPTS                   = 0x0
+       IPPROTO_ICMP                      = 0x1
+       IPPROTO_ICMPV6                    = 0x3a
+       IPPROTO_IDP                       = 0x16
+       IPPROTO_IDPR                      = 0x23
+       IPPROTO_IDRP                      = 0x2d
+       IPPROTO_IGMP                      = 0x2
+       IPPROTO_IGP                       = 0x55
+       IPPROTO_IGRP                      = 0x58
+       IPPROTO_IL                        = 0x28
+       IPPROTO_INLSP                     = 0x34
+       IPPROTO_INP                       = 0x20
+       IPPROTO_IP                        = 0x0
+       IPPROTO_IPCOMP                    = 0x6c
+       IPPROTO_IPCV                      = 0x47
+       IPPROTO_IPEIP                     = 0x5e
+       IPPROTO_IPIP                      = 0x4
+       IPPROTO_IPPC                      = 0x43
+       IPPROTO_IPV4                      = 0x4
+       IPPROTO_IPV6                      = 0x29
+       IPPROTO_IRTP                      = 0x1c
+       IPPROTO_KRYPTOLAN                 = 0x41
+       IPPROTO_LARP                      = 0x5b
+       IPPROTO_LEAF1                     = 0x19
+       IPPROTO_LEAF2                     = 0x1a
+       IPPROTO_MAX                       = 0x100
+       IPPROTO_MAXID                     = 0x34
+       IPPROTO_MEAS                      = 0x13
+       IPPROTO_MH                        = 0x87
+       IPPROTO_MHRP                      = 0x30
+       IPPROTO_MICP                      = 0x5f
+       IPPROTO_MOBILE                    = 0x37
+       IPPROTO_MPLS                      = 0x89
+       IPPROTO_MTP                       = 0x5c
+       IPPROTO_MUX                       = 0x12
+       IPPROTO_ND                        = 0x4d
+       IPPROTO_NHRP                      = 0x36
+       IPPROTO_NONE                      = 0x3b
+       IPPROTO_NSP                       = 0x1f
+       IPPROTO_NVPII                     = 0xb
+       IPPROTO_OLD_DIVERT                = 0xfe
+       IPPROTO_OSPFIGP                   = 0x59
+       IPPROTO_PFSYNC                    = 0xf0
+       IPPROTO_PGM                       = 0x71
+       IPPROTO_PIGP                      = 0x9
+       IPPROTO_PIM                       = 0x67
+       IPPROTO_PRM                       = 0x15
+       IPPROTO_PUP                       = 0xc
+       IPPROTO_PVP                       = 0x4b
+       IPPROTO_RAW                       = 0xff
+       IPPROTO_RCCMON                    = 0xa
+       IPPROTO_RDP                       = 0x1b
+       IPPROTO_RESERVED_253              = 0xfd
+       IPPROTO_RESERVED_254              = 0xfe
+       IPPROTO_ROUTING                   = 0x2b
+       IPPROTO_RSVP                      = 0x2e
+       IPPROTO_RVD                       = 0x42
+       IPPROTO_SATEXPAK                  = 0x40
+       IPPROTO_SATMON                    = 0x45
+       IPPROTO_SCCSP                     = 0x60
+       IPPROTO_SCTP                      = 0x84
+       IPPROTO_SDRP                      = 0x2a
+       IPPROTO_SEND                      = 0x103
+       IPPROTO_SEP                       = 0x21
+       IPPROTO_SHIM6                     = 0x8c
+       IPPROTO_SKIP                      = 0x39
+       IPPROTO_SPACER                    = 0x7fff
+       IPPROTO_SRPC                      = 0x5a
+       IPPROTO_ST                        = 0x7
+       IPPROTO_SVMTP                     = 0x52
+       IPPROTO_SWIPE                     = 0x35
+       IPPROTO_TCF                       = 0x57
+       IPPROTO_TCP                       = 0x6
+       IPPROTO_TLSP                      = 0x38
+       IPPROTO_TP                        = 0x1d
+       IPPROTO_TPXX                      = 0x27
+       IPPROTO_TRUNK1                    = 0x17
+       IPPROTO_TRUNK2                    = 0x18
+       IPPROTO_TTP                       = 0x54
+       IPPROTO_UDP                       = 0x11
+       IPPROTO_UDPLITE                   = 0x88
+       IPPROTO_VINES                     = 0x53
+       IPPROTO_VISA                      = 0x46
+       IPPROTO_VMTP                      = 0x51
+       IPPROTO_WBEXPAK                   = 0x4f
+       IPPROTO_WBMON                     = 0x4e
+       IPPROTO_WSN                       = 0x4a
+       IPPROTO_XNET                      = 0xf
+       IPPROTO_XTP                       = 0x24
+       IPV6_AUTOFLOWLABEL                = 0x3b
+       IPV6_BINDANY                      = 0x40
+       IPV6_BINDV6ONLY                   = 0x1b
+       IPV6_CHECKSUM                     = 0x1a
+       IPV6_DEFAULT_MULTICAST_HOPS       = 0x1
+       IPV6_DEFAULT_MULTICAST_LOOP       = 0x1
+       IPV6_DEFHLIM                      = 0x40
+       IPV6_DONTFRAG                     = 0x3e
+       IPV6_DSTOPTS                      = 0x32
+       IPV6_FAITH                        = 0x1d
+       IPV6_FLOWINFO_MASK                = 0xffffff0f
+       IPV6_FLOWLABEL_MASK               = 0xffff0f00
+       IPV6_FRAGTTL                      = 0x78
+       IPV6_FW_ADD                       = 0x1e
+       IPV6_FW_DEL                       = 0x1f
+       IPV6_FW_FLUSH                     = 0x20
+       IPV6_FW_GET                       = 0x22
+       IPV6_FW_ZERO                      = 0x21
+       IPV6_HLIMDEC                      = 0x1
+       IPV6_HOPLIMIT                     = 0x2f
+       IPV6_HOPOPTS                      = 0x31
+       IPV6_IPSEC_POLICY                 = 0x1c
+       IPV6_JOIN_GROUP                   = 0xc
+       IPV6_LEAVE_GROUP                  = 0xd
+       IPV6_MAXHLIM                      = 0xff
+       IPV6_MAXOPTHDR                    = 0x800
+       IPV6_MAXPACKET                    = 0xffff
+       IPV6_MAX_GROUP_SRC_FILTER         = 0x200
+       IPV6_MAX_MEMBERSHIPS              = 0xfff
+       IPV6_MAX_SOCK_SRC_FILTER          = 0x80
+       IPV6_MIN_MEMBERSHIPS              = 0x1f
+       IPV6_MMTU                         = 0x500
+       IPV6_MSFILTER                     = 0x4a
+       IPV6_MULTICAST_HOPS               = 0xa
+       IPV6_MULTICAST_IF                 = 0x9
+       IPV6_MULTICAST_LOOP               = 0xb
+       IPV6_NEXTHOP                      = 0x30
+       IPV6_PATHMTU                      = 0x2c
+       IPV6_PKTINFO                      = 0x2e
+       IPV6_PORTRANGE                    = 0xe
+       IPV6_PORTRANGE_DEFAULT            = 0x0
+       IPV6_PORTRANGE_HIGH               = 0x1
+       IPV6_PORTRANGE_LOW                = 0x2
+       IPV6_PREFER_TEMPADDR              = 0x3f
+       IPV6_RECVDSTOPTS                  = 0x28
+       IPV6_RECVHOPLIMIT                 = 0x25
+       IPV6_RECVHOPOPTS                  = 0x27
+       IPV6_RECVPATHMTU                  = 0x2b
+       IPV6_RECVPKTINFO                  = 0x24
+       IPV6_RECVRTHDR                    = 0x26
+       IPV6_RECVTCLASS                   = 0x39
+       IPV6_RTHDR                        = 0x33
+       IPV6_RTHDRDSTOPTS                 = 0x23
+       IPV6_RTHDR_LOOSE                  = 0x0
+       IPV6_RTHDR_STRICT                 = 0x1
+       IPV6_RTHDR_TYPE_0                 = 0x0
+       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_ADD_SOURCE_MEMBERSHIP          = 0x46
+       IP_BINDANY                        = 0x18
+       IP_BLOCK_SOURCE                   = 0x48
+       IP_DEFAULT_MULTICAST_LOOP         = 0x1
+       IP_DEFAULT_MULTICAST_TTL          = 0x1
+       IP_DF                             = 0x4000
+       IP_DONTFRAG                       = 0x43
+       IP_DROP_MEMBERSHIP                = 0xd
+       IP_DROP_SOURCE_MEMBERSHIP         = 0x47
+       IP_DUMMYNET3                      = 0x31
+       IP_DUMMYNET_CONFIGURE             = 0x3c
+       IP_DUMMYNET_DEL                   = 0x3d
+       IP_DUMMYNET_FLUSH                 = 0x3e
+       IP_DUMMYNET_GET                   = 0x40
+       IP_FAITH                          = 0x16
+       IP_FW3                            = 0x30
+       IP_FW_ADD                         = 0x32
+       IP_FW_DEL                         = 0x33
+       IP_FW_FLUSH                       = 0x34
+       IP_FW_GET                         = 0x36
+       IP_FW_NAT_CFG                     = 0x38
+       IP_FW_NAT_DEL                     = 0x39
+       IP_FW_NAT_GET_CONFIG              = 0x3a
+       IP_FW_NAT_GET_LOG                 = 0x3b
+       IP_FW_RESETLOG                    = 0x37
+       IP_FW_TABLE_ADD                   = 0x28
+       IP_FW_TABLE_DEL                   = 0x29
+       IP_FW_TABLE_FLUSH                 = 0x2a
+       IP_FW_TABLE_GETSIZE               = 0x2b
+       IP_FW_TABLE_LIST                  = 0x2c
+       IP_FW_ZERO                        = 0x35
+       IP_HDRINCL                        = 0x2
+       IP_IPSEC_POLICY                   = 0x15
+       IP_MAXPACKET                      = 0xffff
+       IP_MAX_GROUP_SRC_FILTER           = 0x200
+       IP_MAX_MEMBERSHIPS                = 0xfff
+       IP_MAX_SOCK_MUTE_FILTER           = 0x80
+       IP_MAX_SOCK_SRC_FILTER            = 0x80
+       IP_MAX_SOURCE_FILTER              = 0x400
+       IP_MF                             = 0x2000
+       IP_MINTTL                         = 0x42
+       IP_MIN_MEMBERSHIPS                = 0x1f
+       IP_MSFILTER                       = 0x4a
+       IP_MSS                            = 0x240
+       IP_MULTICAST_IF                   = 0x9
+       IP_MULTICAST_LOOP                 = 0xb
+       IP_MULTICAST_TTL                  = 0xa
+       IP_MULTICAST_VIF                  = 0xe
+       IP_OFFMASK                        = 0x1fff
+       IP_ONESBCAST                      = 0x17
+       IP_OPTIONS                        = 0x1
+       IP_PORTRANGE                      = 0x13
+       IP_PORTRANGE_DEFAULT              = 0x0
+       IP_PORTRANGE_HIGH                 = 0x1
+       IP_PORTRANGE_LOW                  = 0x2
+       IP_RECVDSTADDR                    = 0x7
+       IP_RECVIF                         = 0x14
+       IP_RECVOPTS                       = 0x5
+       IP_RECVRETOPTS                    = 0x6
+       IP_RECVTOS                        = 0x44
+       IP_RECVTTL                        = 0x41
+       IP_RETOPTS                        = 0x8
+       IP_RF                             = 0x8000
+       IP_RSVP_OFF                       = 0x10
+       IP_RSVP_ON                        = 0xf
+       IP_RSVP_VIF_OFF                   = 0x12
+       IP_RSVP_VIF_ON                    = 0x11
+       IP_SENDSRCADDR                    = 0x7
+       IP_TOS                            = 0x3
+       IP_TTL                            = 0x4
+       IP_UNBLOCK_SOURCE                 = 0x49
+       ISIG                              = 0x80
+       ISTRIP                            = 0x20
+       IXANY                             = 0x800
+       IXOFF                             = 0x400
+       IXON                              = 0x200
+       LOCK_EX                           = 0x2
+       LOCK_NB                           = 0x4
+       LOCK_SH                           = 0x1
+       LOCK_UN                           = 0x8
+       MADV_AUTOSYNC                     = 0x7
+       MADV_CORE                         = 0x9
+       MADV_DONTNEED                     = 0x4
+       MADV_FREE                         = 0x5
+       MADV_NOCORE                       = 0x8
+       MADV_NORMAL                       = 0x0
+       MADV_NOSYNC                       = 0x6
+       MADV_PROTECT                      = 0xa
+       MADV_RANDOM                       = 0x1
+       MADV_SEQUENTIAL                   = 0x2
+       MADV_WILLNEED                     = 0x3
+       MAP_32BIT                         = 0x80000
+       MAP_ALIGNED_SUPER                 = 0x1000000
+       MAP_ALIGNMENT_MASK                = -0x1000000
+       MAP_ALIGNMENT_SHIFT               = 0x18
+       MAP_ANON                          = 0x1000
+       MAP_ANONYMOUS                     = 0x1000
+       MAP_COPY                          = 0x2
+       MAP_EXCL                          = 0x4000
+       MAP_FILE                          = 0x0
+       MAP_FIXED                         = 0x10
+       MAP_HASSEMAPHORE                  = 0x200
+       MAP_NOCORE                        = 0x20000
+       MAP_NORESERVE                     = 0x40
+       MAP_NOSYNC                        = 0x800
+       MAP_PREFAULT_READ                 = 0x40000
+       MAP_PRIVATE                       = 0x2
+       MAP_RENAME                        = 0x20
+       MAP_RESERVED0080                  = 0x80
+       MAP_RESERVED0100                  = 0x100
+       MAP_SHARED                        = 0x1
+       MAP_STACK                         = 0x400
+       MCL_CURRENT                       = 0x1
+       MCL_FUTURE                        = 0x2
+       MSG_CMSG_CLOEXEC                  = 0x40000
+       MSG_COMPAT                        = 0x8000
+       MSG_CTRUNC                        = 0x20
+       MSG_DONTROUTE                     = 0x4
+       MSG_DONTWAIT                      = 0x80
+       MSG_EOF                           = 0x100
+       MSG_EOR                           = 0x8
+       MSG_NBIO                          = 0x4000
+       MSG_NOSIGNAL                      = 0x20000
+       MSG_NOTIFICATION                  = 0x2000
+       MSG_OOB                           = 0x1
+       MSG_PEEK                          = 0x2
+       MSG_TRUNC                         = 0x10
+       MSG_WAITALL                       = 0x40
+       MS_ASYNC                          = 0x1
+       MS_INVALIDATE                     = 0x2
+       MS_SYNC                           = 0x0
+       NAME_MAX                          = 0xff
+       NET_RT_DUMP                       = 0x1
+       NET_RT_FLAGS                      = 0x2
+       NET_RT_IFLIST                     = 0x3
+       NET_RT_IFLISTL                    = 0x5
+       NET_RT_IFMALIST                   = 0x4
+       NET_RT_MAXID                      = 0x6
+       NOFLSH                            = 0x80000000
+       NOTE_ATTRIB                       = 0x8
+       NOTE_CHILD                        = 0x4
+       NOTE_DELETE                       = 0x1
+       NOTE_EXEC                         = 0x20000000
+       NOTE_EXIT                         = 0x80000000
+       NOTE_EXTEND                       = 0x4
+       NOTE_FFAND                        = 0x40000000
+       NOTE_FFCOPY                       = 0xc0000000
+       NOTE_FFCTRLMASK                   = 0xc0000000
+       NOTE_FFLAGSMASK                   = 0xffffff
+       NOTE_FFNOP                        = 0x0
+       NOTE_FFOR                         = 0x80000000
+       NOTE_FORK                         = 0x40000000
+       NOTE_LINK                         = 0x10
+       NOTE_LOWAT                        = 0x1
+       NOTE_MSECONDS                     = 0x2
+       NOTE_NSECONDS                     = 0x8
+       NOTE_PCTRLMASK                    = 0xf0000000
+       NOTE_PDATAMASK                    = 0xfffff
+       NOTE_RENAME                       = 0x20
+       NOTE_REVOKE                       = 0x40
+       NOTE_SECONDS                      = 0x1
+       NOTE_TRACK                        = 0x1
+       NOTE_TRACKERR                     = 0x2
+       NOTE_TRIGGER                      = 0x1000000
+       NOTE_USECONDS                     = 0x4
+       NOTE_WRITE                        = 0x2
+       OCRNL                             = 0x10
+       ONLCR                             = 0x2
+       ONLRET                            = 0x40
+       ONOCR                             = 0x20
+       ONOEOT                            = 0x8
+       OPOST                             = 0x1
+       O_ACCMODE                         = 0x3
+       O_APPEND                          = 0x8
+       O_ASYNC                           = 0x40
+       O_CLOEXEC                         = 0x100000
+       O_CREAT                           = 0x200
+       O_DIRECT                          = 0x10000
+       O_DIRECTORY                       = 0x20000
+       O_EXCL                            = 0x800
+       O_EXEC                            = 0x40000
+       O_EXLOCK                          = 0x20
+       O_FSYNC                           = 0x80
+       O_NDELAY                          = 0x4
+       O_NOCTTY                          = 0x8000
+       O_NOFOLLOW                        = 0x100
+       O_NONBLOCK                        = 0x4
+       O_RDONLY                          = 0x0
+       O_RDWR                            = 0x2
+       O_SHLOCK                          = 0x10
+       O_SYNC                            = 0x80
+       O_TRUNC                           = 0x400
+       O_TTY_INIT                        = 0x80000
+       O_WRONLY                          = 0x1
+       PARENB                            = 0x1000
+       PARMRK                            = 0x8
+       PARODD                            = 0x2000
+       PENDIN                            = 0x20000000
+       PRIO_PGRP                         = 0x1
+       PRIO_PROCESS                      = 0x0
+       PRIO_USER                         = 0x2
+       PROT_EXEC                         = 0x4
+       PROT_NONE                         = 0x0
+       PROT_READ                         = 0x1
+       PROT_WRITE                        = 0x2
+       RLIMIT_AS                         = 0xa
+       RLIMIT_CORE                       = 0x4
+       RLIMIT_CPU                        = 0x0
+       RLIMIT_DATA                       = 0x2
+       RLIMIT_FSIZE                      = 0x1
+       RLIMIT_NOFILE                     = 0x8
+       RLIMIT_STACK                      = 0x3
+       RLIM_INFINITY                     = 0x7fffffffffffffff
+       RTAX_AUTHOR                       = 0x6
+       RTAX_BRD                          = 0x7
+       RTAX_DST                          = 0x0
+       RTAX_GATEWAY                      = 0x1
+       RTAX_GENMASK                      = 0x3
+       RTAX_IFA                          = 0x5
+       RTAX_IFP                          = 0x4
+       RTAX_MAX                          = 0x8
+       RTAX_NETMASK                      = 0x2
+       RTA_AUTHOR                        = 0x40
+       RTA_BRD                           = 0x80
+       RTA_DST                           = 0x1
+       RTA_GATEWAY                       = 0x2
+       RTA_GENMASK                       = 0x8
+       RTA_IFA                           = 0x20
+       RTA_IFP                           = 0x10
+       RTA_NETMASK                       = 0x4
+       RTF_BLACKHOLE                     = 0x1000
+       RTF_BROADCAST                     = 0x400000
+       RTF_DONE                          = 0x40
+       RTF_DYNAMIC                       = 0x10
+       RTF_FMASK                         = 0x1004d808
+       RTF_GATEWAY                       = 0x2
+       RTF_GWFLAG_COMPAT                 = 0x80000000
+       RTF_HOST                          = 0x4
+       RTF_LLDATA                        = 0x400
+       RTF_LLINFO                        = 0x400
+       RTF_LOCAL                         = 0x200000
+       RTF_MODIFIED                      = 0x20
+       RTF_MULTICAST                     = 0x800000
+       RTF_PINNED                        = 0x100000
+       RTF_PRCLONING                     = 0x10000
+       RTF_PROTO1                        = 0x8000
+       RTF_PROTO2                        = 0x4000
+       RTF_PROTO3                        = 0x40000
+       RTF_REJECT                        = 0x8
+       RTF_RNH_LOCKED                    = 0x40000000
+       RTF_STATIC                        = 0x800
+       RTF_STICKY                        = 0x10000000
+       RTF_UP                            = 0x1
+       RTF_XRESOLVE                      = 0x200
+       RTM_ADD                           = 0x1
+       RTM_CHANGE                        = 0x3
+       RTM_DELADDR                       = 0xd
+       RTM_DELETE                        = 0x2
+       RTM_DELMADDR                      = 0x10
+       RTM_GET                           = 0x4
+       RTM_IEEE80211                     = 0x12
+       RTM_IFANNOUNCE                    = 0x11
+       RTM_IFINFO                        = 0xe
+       RTM_LOCK                          = 0x8
+       RTM_LOSING                        = 0x5
+       RTM_MISS                          = 0x7
+       RTM_NEWADDR                       = 0xc
+       RTM_NEWMADDR                      = 0xf
+       RTM_OLDADD                        = 0x9
+       RTM_OLDDEL                        = 0xa
+       RTM_REDIRECT                      = 0x6
+       RTM_RESOLVE                       = 0xb
+       RTM_RTTUNIT                       = 0xf4240
+       RTM_VERSION                       = 0x5
+       RTV_EXPIRE                        = 0x4
+       RTV_HOPCOUNT                      = 0x2
+       RTV_MTU                           = 0x1
+       RTV_RPIPE                         = 0x8
+       RTV_RTT                           = 0x40
+       RTV_RTTVAR                        = 0x80
+       RTV_SPIPE                         = 0x10
+       RTV_SSTHRESH                      = 0x20
+       RTV_WEIGHT                        = 0x100
+       RT_ALL_FIBS                       = -0x1
+       RT_CACHING_CONTEXT                = 0x1
+       RT_DEFAULT_FIB                    = 0x0
+       RT_NORTREF                        = 0x2
+       RUSAGE_CHILDREN                   = -0x1
+       RUSAGE_SELF                       = 0x0
+       RUSAGE_THREAD                     = 0x1
+       SCM_BINTIME                       = 0x4
+       SCM_CREDS                         = 0x3
+       SCM_RIGHTS                        = 0x1
+       SCM_TIMESTAMP                     = 0x2
+       SHUT_RD                           = 0x0
+       SHUT_RDWR                         = 0x2
+       SHUT_WR                           = 0x1
+       SIOCADDMULTI                      = 0x80206931
+       SIOCADDRT                         = 0x8040720a
+       SIOCAIFADDR                       = 0x8040691a
+       SIOCAIFGROUP                      = 0x80286987
+       SIOCALIFADDR                      = 0x8118691b
+       SIOCATMARK                        = 0x40047307
+       SIOCDELMULTI                      = 0x80206932
+       SIOCDELRT                         = 0x8040720b
+       SIOCDIFADDR                       = 0x80206919
+       SIOCDIFGROUP                      = 0x80286989
+       SIOCDIFPHYADDR                    = 0x80206949
+       SIOCDLIFADDR                      = 0x8118691d
+       SIOCGDRVSPEC                      = 0xc028697b
+       SIOCGETSGCNT                      = 0xc0207210
+       SIOCGETVIFCNT                     = 0xc028720f
+       SIOCGHIWAT                        = 0x40047301
+       SIOCGIFADDR                       = 0xc0206921
+       SIOCGIFBRDADDR                    = 0xc0206923
+       SIOCGIFCAP                        = 0xc020691f
+       SIOCGIFCONF                       = 0xc0106924
+       SIOCGIFDESCR                      = 0xc020692a
+       SIOCGIFDSTADDR                    = 0xc0206922
+       SIOCGIFFIB                        = 0xc020695c
+       SIOCGIFFLAGS                      = 0xc0206911
+       SIOCGIFGENERIC                    = 0xc020693a
+       SIOCGIFGMEMB                      = 0xc028698a
+       SIOCGIFGROUP                      = 0xc0286988
+       SIOCGIFINDEX                      = 0xc0206920
+       SIOCGIFMAC                        = 0xc0206926
+       SIOCGIFMEDIA                      = 0xc0306938
+       SIOCGIFMETRIC                     = 0xc0206917
+       SIOCGIFMTU                        = 0xc0206933
+       SIOCGIFNETMASK                    = 0xc0206925
+       SIOCGIFPDSTADDR                   = 0xc0206948
+       SIOCGIFPHYS                       = 0xc0206935
+       SIOCGIFPSRCADDR                   = 0xc0206947
+       SIOCGIFSTATUS                     = 0xc331693b
+       SIOCGLIFADDR                      = 0xc118691c
+       SIOCGLIFPHYADDR                   = 0xc118694b
+       SIOCGLOWAT                        = 0x40047303
+       SIOCGPGRP                         = 0x40047309
+       SIOCGPRIVATE_0                    = 0xc0206950
+       SIOCGPRIVATE_1                    = 0xc0206951
+       SIOCIFCREATE                      = 0xc020697a
+       SIOCIFCREATE2                     = 0xc020697c
+       SIOCIFDESTROY                     = 0x80206979
+       SIOCIFGCLONERS                    = 0xc0106978
+       SIOCSDRVSPEC                      = 0x8028697b
+       SIOCSHIWAT                        = 0x80047300
+       SIOCSIFADDR                       = 0x8020690c
+       SIOCSIFBRDADDR                    = 0x80206913
+       SIOCSIFCAP                        = 0x8020691e
+       SIOCSIFDESCR                      = 0x80206929
+       SIOCSIFDSTADDR                    = 0x8020690e
+       SIOCSIFFIB                        = 0x8020695d
+       SIOCSIFFLAGS                      = 0x80206910
+       SIOCSIFGENERIC                    = 0x80206939
+       SIOCSIFLLADDR                     = 0x8020693c
+       SIOCSIFMAC                        = 0x80206927
+       SIOCSIFMEDIA                      = 0xc0206937
+       SIOCSIFMETRIC                     = 0x80206918
+       SIOCSIFMTU                        = 0x80206934
+       SIOCSIFNAME                       = 0x80206928
+       SIOCSIFNETMASK                    = 0x80206916
+       SIOCSIFPHYADDR                    = 0x80406946
+       SIOCSIFPHYS                       = 0x80206936
+       SIOCSIFRVNET                      = 0xc020695b
+       SIOCSIFVNET                       = 0xc020695a
+       SIOCSLIFPHYADDR                   = 0x8118694a
+       SIOCSLOWAT                        = 0x80047302
+       SIOCSPGRP                         = 0x80047308
+       SOCK_CLOEXEC                      = 0x10000000
+       SOCK_DGRAM                        = 0x2
+       SOCK_MAXADDRLEN                   = 0xff
+       SOCK_NONBLOCK                     = 0x20000000
+       SOCK_RAW                          = 0x3
+       SOCK_RDM                          = 0x4
+       SOCK_SEQPACKET                    = 0x5
+       SOCK_STREAM                       = 0x1
+       SOL_SOCKET                        = 0xffff
+       SOMAXCONN                         = 0x80
+       SO_ACCEPTCONN                     = 0x2
+       SO_ACCEPTFILTER                   = 0x1000
+       SO_BINTIME                        = 0x2000
+       SO_BROADCAST                      = 0x20
+       SO_DEBUG                          = 0x1
+       SO_DONTROUTE                      = 0x10
+       SO_ERROR                          = 0x1007
+       SO_KEEPALIVE                      = 0x8
+       SO_LABEL                          = 0x1009
+       SO_LINGER                         = 0x80
+       SO_LISTENINCQLEN                  = 0x1013
+       SO_LISTENQLEN                     = 0x1012
+       SO_LISTENQLIMIT                   = 0x1011
+       SO_NOSIGPIPE                      = 0x800
+       SO_NO_DDP                         = 0x8000
+       SO_NO_OFFLOAD                     = 0x4000
+       SO_OOBINLINE                      = 0x100
+       SO_PEERLABEL                      = 0x1010
+       SO_PROTOCOL                       = 0x1016
+       SO_PROTOTYPE                      = 0x1016
+       SO_RCVBUF                         = 0x1002
+       SO_RCVLOWAT                       = 0x1004
+       SO_RCVTIMEO                       = 0x1006
+       SO_REUSEADDR                      = 0x4
+       SO_REUSEPORT                      = 0x200
+       SO_SETFIB                         = 0x1014
+       SO_SNDBUF                         = 0x1001
+       SO_SNDLOWAT                       = 0x1003
+       SO_SNDTIMEO                       = 0x1005
+       SO_TIMESTAMP                      = 0x400
+       SO_TYPE                           = 0x1008
+       SO_USELOOPBACK                    = 0x40
+       SO_USER_COOKIE                    = 0x1015
+       SO_VENDOR                         = 0x80000000
+       TCIFLUSH                          = 0x1
+       TCIOFLUSH                         = 0x3
+       TCOFLUSH                          = 0x2
+       TCP_CA_NAME_MAX                   = 0x10
+       TCP_CONGESTION                    = 0x40
+       TCP_INFO                          = 0x20
+       TCP_KEEPCNT                       = 0x400
+       TCP_KEEPIDLE                      = 0x100
+       TCP_KEEPINIT                      = 0x80
+       TCP_KEEPINTVL                     = 0x200
+       TCP_MAXBURST                      = 0x4
+       TCP_MAXHLEN                       = 0x3c
+       TCP_MAXOLEN                       = 0x28
+       TCP_MAXSEG                        = 0x2
+       TCP_MAXWIN                        = 0xffff
+       TCP_MAX_SACK                      = 0x4
+       TCP_MAX_WINSHIFT                  = 0xe
+       TCP_MD5SIG                        = 0x10
+       TCP_MINMSS                        = 0xd8
+       TCP_MSS                           = 0x218
+       TCP_NODELAY                       = 0x1
+       TCP_NOOPT                         = 0x8
+       TCP_NOPUSH                        = 0x4
+       TCP_VENDOR                        = 0x80000000
+       TCSAFLUSH                         = 0x2
+       TIOCCBRK                          = 0x2000747a
+       TIOCCDTR                          = 0x20007478
+       TIOCCONS                          = 0x80047462
+       TIOCDRAIN                         = 0x2000745e
+       TIOCEXCL                          = 0x2000740d
+       TIOCEXT                           = 0x80047460
+       TIOCFLUSH                         = 0x80047410
+       TIOCGDRAINWAIT                    = 0x40047456
+       TIOCGETA                          = 0x402c7413
+       TIOCGETD                          = 0x4004741a
+       TIOCGPGRP                         = 0x40047477
+       TIOCGPTN                          = 0x4004740f
+       TIOCGSID                          = 0x40047463
+       TIOCGWINSZ                        = 0x40087468
+       TIOCMBIC                          = 0x8004746b
+       TIOCMBIS                          = 0x8004746c
+       TIOCMGDTRWAIT                     = 0x4004745a
+       TIOCMGET                          = 0x4004746a
+       TIOCMSDTRWAIT                     = 0x8004745b
+       TIOCMSET                          = 0x8004746d
+       TIOCM_CAR                         = 0x40
+       TIOCM_CD                          = 0x40
+       TIOCM_CTS                         = 0x20
+       TIOCM_DCD                         = 0x40
+       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                      = 0x0
+       TIOCPKT_DOSTOP                    = 0x20
+       TIOCPKT_FLUSHREAD                 = 0x1
+       TIOCPKT_FLUSHWRITE                = 0x2
+       TIOCPKT_IOCTL                     = 0x40
+       TIOCPKT_NOSTOP                    = 0x10
+       TIOCPKT_START                     = 0x8
+       TIOCPKT_STOP                      = 0x4
+       TIOCPTMASTER                      = 0x2000741c
+       TIOCSBRK                          = 0x2000747b
+       TIOCSCTTY                         = 0x20007461
+       TIOCSDRAINWAIT                    = 0x80047457
+       TIOCSDTR                          = 0x20007479
+       TIOCSETA                          = 0x802c7414
+       TIOCSETAF                         = 0x802c7416
+       TIOCSETAW                         = 0x802c7415
+       TIOCSETD                          = 0x8004741b
+       TIOCSIG                           = 0x2004745f
+       TIOCSPGRP                         = 0x80047476
+       TIOCSTART                         = 0x2000746e
+       TIOCSTAT                          = 0x20007465
+       TIOCSTI                           = 0x80017472
+       TIOCSTOP                          = 0x2000746f
+       TIOCSWINSZ                        = 0x80087467
+       TIOCTIMESTAMP                     = 0x40107459
+       TIOCUCNTL                         = 0x80047466
+       TOSTOP                            = 0x400000
+       VDISCARD                          = 0xf
+       VDSUSP                            = 0xb
+       VEOF                              = 0x0
+       VEOL                              = 0x1
+       VEOL2                             = 0x2
+       VERASE                            = 0x3
+       VERASE2                           = 0x7
+       VINTR                             = 0x8
+       VKILL                             = 0x5
+       VLNEXT                            = 0xe
+       VMIN                              = 0x10
+       VQUIT                             = 0x9
+       VREPRINT                          = 0x6
+       VSTART                            = 0xc
+       VSTATUS                           = 0x12
+       VSTOP                             = 0xd
+       VSUSP                             = 0xa
+       VTIME                             = 0x11
+       VWERASE                           = 0x4
+       WCONTINUED                        = 0x4
+       WCOREFLAG                         = 0x80
+       WEXITED                           = 0x10
+       WLINUXCLONE                       = 0x80000000
+       WNOHANG                           = 0x1
+       WNOWAIT                           = 0x8
+       WSTOPPED                          = 0x2
+       WTRAPPED                          = 0x20
+       WUNTRACED                         = 0x2
+)
+
+// Errors
+const (
+       E2BIG           = syscall.Errno(0x7)
+       EACCES          = syscall.Errno(0xd)
+       EADDRINUSE      = syscall.Errno(0x30)
+       EADDRNOTAVAIL   = syscall.Errno(0x31)
+       EAFNOSUPPORT    = syscall.Errno(0x2f)
+       EAGAIN          = syscall.Errno(0x23)
+       EALREADY        = syscall.Errno(0x25)
+       EAUTH           = syscall.Errno(0x50)
+       EBADF           = syscall.Errno(0x9)
+       EBADMSG         = syscall.Errno(0x59)
+       EBADRPC         = syscall.Errno(0x48)
+       EBUSY           = syscall.Errno(0x10)
+       ECANCELED       = syscall.Errno(0x55)
+       ECAPMODE        = syscall.Errno(0x5e)
+       ECHILD          = syscall.Errno(0xa)
+       ECONNABORTED    = syscall.Errno(0x35)
+       ECONNREFUSED    = syscall.Errno(0x3d)
+       ECONNRESET      = syscall.Errno(0x36)
+       EDEADLK         = syscall.Errno(0xb)
+       EDESTADDRREQ    = syscall.Errno(0x27)
+       EDOM            = syscall.Errno(0x21)
+       EDOOFUS         = syscall.Errno(0x58)
+       EDQUOT          = syscall.Errno(0x45)
+       EEXIST          = syscall.Errno(0x11)
+       EFAULT          = syscall.Errno(0xe)
+       EFBIG           = syscall.Errno(0x1b)
+       EFTYPE          = syscall.Errno(0x4f)
+       EHOSTDOWN       = syscall.Errno(0x40)
+       EHOSTUNREACH    = syscall.Errno(0x41)
+       EIDRM           = syscall.Errno(0x52)
+       EILSEQ          = syscall.Errno(0x56)
+       EINPROGRESS     = syscall.Errno(0x24)
+       EINTR           = syscall.Errno(0x4)
+       EINVAL          = syscall.Errno(0x16)
+       EIO             = syscall.Errno(0x5)
+       EISCONN         = syscall.Errno(0x38)
+       EISDIR          = syscall.Errno(0x15)
+       ELAST           = syscall.Errno(0x60)
+       ELOOP           = syscall.Errno(0x3e)
+       EMFILE          = syscall.Errno(0x18)
+       EMLINK          = syscall.Errno(0x1f)
+       EMSGSIZE        = syscall.Errno(0x28)
+       EMULTIHOP       = syscall.Errno(0x5a)
+       ENAMETOOLONG    = syscall.Errno(0x3f)
+       ENEEDAUTH       = syscall.Errno(0x51)
+       ENETDOWN        = syscall.Errno(0x32)
+       ENETRESET       = syscall.Errno(0x34)
+       ENETUNREACH     = syscall.Errno(0x33)
+       ENFILE          = syscall.Errno(0x17)
+       ENOATTR         = syscall.Errno(0x57)
+       ENOBUFS         = syscall.Errno(0x37)
+       ENODEV          = syscall.Errno(0x13)
+       ENOENT          = syscall.Errno(0x2)
+       ENOEXEC         = syscall.Errno(0x8)
+       ENOLCK          = syscall.Errno(0x4d)
+       ENOLINK         = syscall.Errno(0x5b)
+       ENOMEM          = syscall.Errno(0xc)
+       ENOMSG          = syscall.Errno(0x53)
+       ENOPROTOOPT     = syscall.Errno(0x2a)
+       ENOSPC          = syscall.Errno(0x1c)
+       ENOSYS          = syscall.Errno(0x4e)
+       ENOTBLK         = syscall.Errno(0xf)
+       ENOTCAPABLE     = syscall.Errno(0x5d)
+       ENOTCONN        = syscall.Errno(0x39)
+       ENOTDIR         = syscall.Errno(0x14)
+       ENOTEMPTY       = syscall.Errno(0x42)
+       ENOTRECOVERABLE = syscall.Errno(0x5f)
+       ENOTSOCK        = syscall.Errno(0x26)
+       ENOTSUP         = syscall.Errno(0x2d)
+       ENOTTY          = syscall.Errno(0x19)
+       ENXIO           = syscall.Errno(0x6)
+       EOPNOTSUPP      = syscall.Errno(0x2d)
+       EOVERFLOW       = syscall.Errno(0x54)
+       EOWNERDEAD      = syscall.Errno(0x60)
+       EPERM           = syscall.Errno(0x1)
+       EPFNOSUPPORT    = syscall.Errno(0x2e)
+       EPIPE           = syscall.Errno(0x20)
+       EPROCLIM        = syscall.Errno(0x43)
+       EPROCUNAVAIL    = syscall.Errno(0x4c)
+       EPROGMISMATCH   = syscall.Errno(0x4b)
+       EPROGUNAVAIL    = syscall.Errno(0x4a)
+       EPROTO          = syscall.Errno(0x5c)
+       EPROTONOSUPPORT = syscall.Errno(0x2b)
+       EPROTOTYPE      = syscall.Errno(0x29)
+       ERANGE          = syscall.Errno(0x22)
+       EREMOTE         = syscall.Errno(0x47)
+       EROFS           = syscall.Errno(0x1e)
+       ERPCMISMATCH    = syscall.Errno(0x49)
+       ESHUTDOWN       = syscall.Errno(0x3a)
+       ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+       ESPIPE          = syscall.Errno(0x1d)
+       ESRCH           = syscall.Errno(0x3)
+       ESTALE          = syscall.Errno(0x46)
+       ETIMEDOUT       = syscall.Errno(0x3c)
+       ETOOMANYREFS    = syscall.Errno(0x3b)
+       ETXTBSY         = syscall.Errno(0x1a)
+       EUSERS          = syscall.Errno(0x44)
+       EWOULDBLOCK     = syscall.Errno(0x23)
+       EXDEV           = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+       SIGABRT   = syscall.Signal(0x6)
+       SIGALRM   = syscall.Signal(0xe)
+       SIGBUS    = syscall.Signal(0xa)
+       SIGCHLD   = syscall.Signal(0x14)
+       SIGCONT   = syscall.Signal(0x13)
+       SIGEMT    = syscall.Signal(0x7)
+       SIGFPE    = syscall.Signal(0x8)
+       SIGHUP    = syscall.Signal(0x1)
+       SIGILL    = syscall.Signal(0x4)
+       SIGINFO   = syscall.Signal(0x1d)
+       SIGINT    = syscall.Signal(0x2)
+       SIGIO     = syscall.Signal(0x17)
+       SIGIOT    = syscall.Signal(0x6)
+       SIGKILL   = syscall.Signal(0x9)
+       SIGLIBRT  = syscall.Signal(0x21)
+       SIGLWP    = syscall.Signal(0x20)
+       SIGPIPE   = syscall.Signal(0xd)
+       SIGPROF   = syscall.Signal(0x1b)
+       SIGQUIT   = syscall.Signal(0x3)
+       SIGSEGV   = syscall.Signal(0xb)
+       SIGSTOP   = syscall.Signal(0x11)
+       SIGSYS    = syscall.Signal(0xc)
+       SIGTERM   = syscall.Signal(0xf)
+       SIGTHR    = syscall.Signal(0x20)
+       SIGTRAP   = syscall.Signal(0x5)
+       SIGTSTP   = syscall.Signal(0x12)
+       SIGTTIN   = syscall.Signal(0x15)
+       SIGTTOU   = syscall.Signal(0x16)
+       SIGURG    = syscall.Signal(0x10)
+       SIGUSR1   = syscall.Signal(0x1e)
+       SIGUSR2   = syscall.Signal(0x1f)
+       SIGVTALRM = syscall.Signal(0x1a)
+       SIGWINCH  = syscall.Signal(0x1c)
+       SIGXCPU   = syscall.Signal(0x18)
+       SIGXFSZ   = syscall.Signal(0x19)
+)
+
+// 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: "operation 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: "identifier removed",
+       83: "no message of desired type",
+       84: "value too large to be stored in data type",
+       85: "operation canceled",
+       86: "illegal byte sequence",
+       87: "attribute not found",
+       88: "programming error",
+       89: "bad message",
+       90: "multihop attempted",
+       91: "link has been severed",
+       92: "protocol error",
+       93: "capabilities insufficient",
+       94: "not permitted in capability mode",
+       95: "state not recoverable",
+       96: "previous owner died",
+}
+
+// Signal table
+var signals = [...]string{
+       1:  "hangup",
+       2:  "interrupt",
+       3:  "quit",
+       4:  "illegal instruction",
+       5:  "trace/BPT trap",
+       6:  "abort trap",
+       7:  "EMT trap",
+       8:  "floating point exception",
+       9:  "killed",
+       10: "bus error",
+       11: "segmentation fault",
+       12: "bad system call",
+       13: "broken pipe",
+       14: "alarm clock",
+       15: "terminated",
+       16: "urgent I/O condition",
+       17: "suspended (signal)",
+       18: "suspended",
+       19: "continued",
+       20: "child exited",
+       21: "stopped (tty input)",
+       22: "stopped (tty output)",
+       23: "I/O possible",
+       24: "cputime limit exceeded",
+       25: "filesize limit exceeded",
+       26: "virtual timer expired",
+       27: "profiling timer expired",
+       28: "window size changes",
+       29: "information request",
+       30: "user defined signal 1",
+       31: "user defined signal 2",
+       32: "unknown signal",
+       33: "unknown signal",
+}
diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go
new file mode 100644 (file)
index 0000000..2afbe2d
--- /dev/null
@@ -0,0 +1,1729 @@
+// mkerrors.sh
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build arm,freebsd
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- _const.go
+
+package unix
+
+import "syscall"
+
+const (
+       AF_APPLETALK                      = 0x10
+       AF_ARP                            = 0x23
+       AF_ATM                            = 0x1e
+       AF_BLUETOOTH                      = 0x24
+       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_HYLINK                         = 0xf
+       AF_IEEE80211                      = 0x25
+       AF_IMPLINK                        = 0x3
+       AF_INET                           = 0x2
+       AF_INET6                          = 0x1c
+       AF_INET6_SDP                      = 0x2a
+       AF_INET_SDP                       = 0x28
+       AF_IPX                            = 0x17
+       AF_ISDN                           = 0x1a
+       AF_ISO                            = 0x7
+       AF_LAT                            = 0xe
+       AF_LINK                           = 0x12
+       AF_LOCAL                          = 0x1
+       AF_MAX                            = 0x2a
+       AF_NATM                           = 0x1d
+       AF_NETBIOS                        = 0x6
+       AF_NETGRAPH                       = 0x20
+       AF_OSI                            = 0x7
+       AF_PUP                            = 0x4
+       AF_ROUTE                          = 0x11
+       AF_SCLUSTER                       = 0x22
+       AF_SIP                            = 0x18
+       AF_SLOW                           = 0x21
+       AF_SNA                            = 0xb
+       AF_UNIX                           = 0x1
+       AF_UNSPEC                         = 0x0
+       AF_VENDOR00                       = 0x27
+       AF_VENDOR01                       = 0x29
+       AF_VENDOR02                       = 0x2b
+       AF_VENDOR03                       = 0x2d
+       AF_VENDOR04                       = 0x2f
+       AF_VENDOR05                       = 0x31
+       AF_VENDOR06                       = 0x33
+       AF_VENDOR07                       = 0x35
+       AF_VENDOR08                       = 0x37
+       AF_VENDOR09                       = 0x39
+       AF_VENDOR10                       = 0x3b
+       AF_VENDOR11                       = 0x3d
+       AF_VENDOR12                       = 0x3f
+       AF_VENDOR13                       = 0x41
+       AF_VENDOR14                       = 0x43
+       AF_VENDOR15                       = 0x45
+       AF_VENDOR16                       = 0x47
+       AF_VENDOR17                       = 0x49
+       AF_VENDOR18                       = 0x4b
+       AF_VENDOR19                       = 0x4d
+       AF_VENDOR20                       = 0x4f
+       AF_VENDOR21                       = 0x51
+       AF_VENDOR22                       = 0x53
+       AF_VENDOR23                       = 0x55
+       AF_VENDOR24                       = 0x57
+       AF_VENDOR25                       = 0x59
+       AF_VENDOR26                       = 0x5b
+       AF_VENDOR27                       = 0x5d
+       AF_VENDOR28                       = 0x5f
+       AF_VENDOR29                       = 0x61
+       AF_VENDOR30                       = 0x63
+       AF_VENDOR31                       = 0x65
+       AF_VENDOR32                       = 0x67
+       AF_VENDOR33                       = 0x69
+       AF_VENDOR34                       = 0x6b
+       AF_VENDOR35                       = 0x6d
+       AF_VENDOR36                       = 0x6f
+       AF_VENDOR37                       = 0x71
+       AF_VENDOR38                       = 0x73
+       AF_VENDOR39                       = 0x75
+       AF_VENDOR40                       = 0x77
+       AF_VENDOR41                       = 0x79
+       AF_VENDOR42                       = 0x7b
+       AF_VENDOR43                       = 0x7d
+       AF_VENDOR44                       = 0x7f
+       AF_VENDOR45                       = 0x81
+       AF_VENDOR46                       = 0x83
+       AF_VENDOR47                       = 0x85
+       B0                                = 0x0
+       B110                              = 0x6e
+       B115200                           = 0x1c200
+       B1200                             = 0x4b0
+       B134                              = 0x86
+       B14400                            = 0x3840
+       B150                              = 0x96
+       B1800                             = 0x708
+       B19200                            = 0x4b00
+       B200                              = 0xc8
+       B230400                           = 0x38400
+       B2400                             = 0x960
+       B28800                            = 0x7080
+       B300                              = 0x12c
+       B38400                            = 0x9600
+       B460800                           = 0x70800
+       B4800                             = 0x12c0
+       B50                               = 0x32
+       B57600                            = 0xe100
+       B600                              = 0x258
+       B7200                             = 0x1c20
+       B75                               = 0x4b
+       B76800                            = 0x12c00
+       B921600                           = 0xe1000
+       B9600                             = 0x2580
+       BIOCFEEDBACK                      = 0x8004427c
+       BIOCFLUSH                         = 0x20004268
+       BIOCGBLEN                         = 0x40044266
+       BIOCGDIRECTION                    = 0x40044276
+       BIOCGDLT                          = 0x4004426a
+       BIOCGDLTLIST                      = 0xc0084279
+       BIOCGETBUFMODE                    = 0x4004427d
+       BIOCGETIF                         = 0x4020426b
+       BIOCGETZMAX                       = 0x4004427f
+       BIOCGHDRCMPLT                     = 0x40044274
+       BIOCGRSIG                         = 0x40044272
+       BIOCGRTIMEOUT                     = 0x4008426e
+       BIOCGSEESENT                      = 0x40044276
+       BIOCGSTATS                        = 0x4008426f
+       BIOCGTSTAMP                       = 0x40044283
+       BIOCIMMEDIATE                     = 0x80044270
+       BIOCLOCK                          = 0x2000427a
+       BIOCPROMISC                       = 0x20004269
+       BIOCROTZBUF                       = 0x400c4280
+       BIOCSBLEN                         = 0xc0044266
+       BIOCSDIRECTION                    = 0x80044277
+       BIOCSDLT                          = 0x80044278
+       BIOCSETBUFMODE                    = 0x8004427e
+       BIOCSETF                          = 0x80084267
+       BIOCSETFNR                        = 0x80084282
+       BIOCSETIF                         = 0x8020426c
+       BIOCSETWF                         = 0x8008427b
+       BIOCSETZBUF                       = 0x800c4281
+       BIOCSHDRCMPLT                     = 0x80044275
+       BIOCSRSIG                         = 0x80044273
+       BIOCSRTIMEOUT                     = 0x8008426d
+       BIOCSSEESENT                      = 0x80044277
+       BIOCSTSTAMP                       = 0x80044284
+       BIOCVERSION                       = 0x40044271
+       BPF_A                             = 0x10
+       BPF_ABS                           = 0x20
+       BPF_ADD                           = 0x0
+       BPF_ALIGNMENT                     = 0x4
+       BPF_ALU                           = 0x4
+       BPF_AND                           = 0x50
+       BPF_B                             = 0x10
+       BPF_BUFMODE_BUFFER                = 0x1
+       BPF_BUFMODE_ZBUF                  = 0x2
+       BPF_DIV                           = 0x30
+       BPF_H                             = 0x8
+       BPF_IMM                           = 0x0
+       BPF_IND                           = 0x40
+       BPF_JA                            = 0x0
+       BPF_JEQ                           = 0x10
+       BPF_JGE                           = 0x30
+       BPF_JGT                           = 0x20
+       BPF_JMP                           = 0x5
+       BPF_JSET                          = 0x40
+       BPF_K                             = 0x0
+       BPF_LD                            = 0x0
+       BPF_LDX                           = 0x1
+       BPF_LEN                           = 0x80
+       BPF_LSH                           = 0x60
+       BPF_MAJOR_VERSION                 = 0x1
+       BPF_MAXBUFSIZE                    = 0x80000
+       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                           = 0x0
+       BPF_TXA                           = 0x80
+       BPF_T_BINTIME                     = 0x2
+       BPF_T_BINTIME_FAST                = 0x102
+       BPF_T_BINTIME_MONOTONIC           = 0x202
+       BPF_T_BINTIME_MONOTONIC_FAST      = 0x302
+       BPF_T_FAST                        = 0x100
+       BPF_T_FLAG_MASK                   = 0x300
+       BPF_T_FORMAT_MASK                 = 0x3
+       BPF_T_MICROTIME                   = 0x0
+       BPF_T_MICROTIME_FAST              = 0x100
+       BPF_T_MICROTIME_MONOTONIC         = 0x200
+       BPF_T_MICROTIME_MONOTONIC_FAST    = 0x300
+       BPF_T_MONOTONIC                   = 0x200
+       BPF_T_MONOTONIC_FAST              = 0x300
+       BPF_T_NANOTIME                    = 0x1
+       BPF_T_NANOTIME_FAST               = 0x101
+       BPF_T_NANOTIME_MONOTONIC          = 0x201
+       BPF_T_NANOTIME_MONOTONIC_FAST     = 0x301
+       BPF_T_NONE                        = 0x3
+       BPF_T_NORMAL                      = 0x0
+       BPF_W                             = 0x0
+       BPF_X                             = 0x8
+       BRKINT                            = 0x2
+       CFLUSH                            = 0xf
+       CLOCAL                            = 0x8000
+       CREAD                             = 0x800
+       CS5                               = 0x0
+       CS6                               = 0x100
+       CS7                               = 0x200
+       CS8                               = 0x300
+       CSIZE                             = 0x300
+       CSTART                            = 0x11
+       CSTATUS                           = 0x14
+       CSTOP                             = 0x13
+       CSTOPB                            = 0x400
+       CSUSP                             = 0x1a
+       CTL_MAXNAME                       = 0x18
+       CTL_NET                           = 0x4
+       DLT_A429                          = 0xb8
+       DLT_A653_ICM                      = 0xb9
+       DLT_AIRONET_HEADER                = 0x78
+       DLT_AOS                           = 0xde
+       DLT_APPLE_IP_OVER_IEEE1394        = 0x8a
+       DLT_ARCNET                        = 0x7
+       DLT_ARCNET_LINUX                  = 0x81
+       DLT_ATM_CLIP                      = 0x13
+       DLT_ATM_RFC1483                   = 0xb
+       DLT_AURORA                        = 0x7e
+       DLT_AX25                          = 0x3
+       DLT_AX25_KISS                     = 0xca
+       DLT_BACNET_MS_TP                  = 0xa5
+       DLT_BLUETOOTH_HCI_H4              = 0xbb
+       DLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9
+       DLT_CAN20B                        = 0xbe
+       DLT_CAN_SOCKETCAN                 = 0xe3
+       DLT_CHAOS                         = 0x5
+       DLT_CHDLC                         = 0x68
+       DLT_CISCO_IOS                     = 0x76
+       DLT_C_HDLC                        = 0x68
+       DLT_C_HDLC_WITH_DIR               = 0xcd
+       DLT_DBUS                          = 0xe7
+       DLT_DECT                          = 0xdd
+       DLT_DOCSIS                        = 0x8f
+       DLT_DVB_CI                        = 0xeb
+       DLT_ECONET                        = 0x73
+       DLT_EN10MB                        = 0x1
+       DLT_EN3MB                         = 0x2
+       DLT_ENC                           = 0x6d
+       DLT_ERF                           = 0xc5
+       DLT_ERF_ETH                       = 0xaf
+       DLT_ERF_POS                       = 0xb0
+       DLT_FC_2                          = 0xe0
+       DLT_FC_2_WITH_FRAME_DELIMS        = 0xe1
+       DLT_FDDI                          = 0xa
+       DLT_FLEXRAY                       = 0xd2
+       DLT_FRELAY                        = 0x6b
+       DLT_FRELAY_WITH_DIR               = 0xce
+       DLT_GCOM_SERIAL                   = 0xad
+       DLT_GCOM_T1E1                     = 0xac
+       DLT_GPF_F                         = 0xab
+       DLT_GPF_T                         = 0xaa
+       DLT_GPRS_LLC                      = 0xa9
+       DLT_GSMTAP_ABIS                   = 0xda
+       DLT_GSMTAP_UM                     = 0xd9
+       DLT_HHDLC                         = 0x79
+       DLT_IBM_SN                        = 0x92
+       DLT_IBM_SP                        = 0x91
+       DLT_IEEE802                       = 0x6
+       DLT_IEEE802_11                    = 0x69
+       DLT_IEEE802_11_RADIO              = 0x7f
+       DLT_IEEE802_11_RADIO_AVS          = 0xa3
+       DLT_IEEE802_15_4                  = 0xc3
+       DLT_IEEE802_15_4_LINUX            = 0xbf
+       DLT_IEEE802_15_4_NOFCS            = 0xe6
+       DLT_IEEE802_15_4_NONASK_PHY       = 0xd7
+       DLT_IEEE802_16_MAC_CPS            = 0xbc
+       DLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1
+       DLT_IPFILTER                      = 0x74
+       DLT_IPMB                          = 0xc7
+       DLT_IPMB_LINUX                    = 0xd1
+       DLT_IPNET                         = 0xe2
+       DLT_IPOIB                         = 0xf2
+       DLT_IPV4                          = 0xe4
+       DLT_IPV6                          = 0xe5
+       DLT_IP_OVER_FC                    = 0x7a
+       DLT_JUNIPER_ATM1                  = 0x89
+       DLT_JUNIPER_ATM2                  = 0x87
+       DLT_JUNIPER_ATM_CEMIC             = 0xee
+       DLT_JUNIPER_CHDLC                 = 0xb5
+       DLT_JUNIPER_ES                    = 0x84
+       DLT_JUNIPER_ETHER                 = 0xb2
+       DLT_JUNIPER_FIBRECHANNEL          = 0xea
+       DLT_JUNIPER_FRELAY                = 0xb4
+       DLT_JUNIPER_GGSN                  = 0x85
+       DLT_JUNIPER_ISM                   = 0xc2
+       DLT_JUNIPER_MFR                   = 0x86
+       DLT_JUNIPER_MLFR                  = 0x83
+       DLT_JUNIPER_MLPPP                 = 0x82
+       DLT_JUNIPER_MONITOR               = 0xa4
+       DLT_JUNIPER_PIC_PEER              = 0xae
+       DLT_JUNIPER_PPP                   = 0xb3
+       DLT_JUNIPER_PPPOE                 = 0xa7
+       DLT_JUNIPER_PPPOE_ATM             = 0xa8
+       DLT_JUNIPER_SERVICES              = 0x88
+       DLT_JUNIPER_SRX_E2E               = 0xe9
+       DLT_JUNIPER_ST                    = 0xc8
+       DLT_JUNIPER_VP                    = 0xb7
+       DLT_JUNIPER_VS                    = 0xe8
+       DLT_LAPB_WITH_DIR                 = 0xcf
+       DLT_LAPD                          = 0xcb
+       DLT_LIN                           = 0xd4
+       DLT_LINUX_EVDEV                   = 0xd8
+       DLT_LINUX_IRDA                    = 0x90
+       DLT_LINUX_LAPD                    = 0xb1
+       DLT_LINUX_PPP_WITHDIRECTION       = 0xa6
+       DLT_LINUX_SLL                     = 0x71
+       DLT_LOOP                          = 0x6c
+       DLT_LTALK                         = 0x72
+       DLT_MATCHING_MAX                  = 0xf6
+       DLT_MATCHING_MIN                  = 0x68
+       DLT_MFR                           = 0xb6
+       DLT_MOST                          = 0xd3
+       DLT_MPEG_2_TS                     = 0xf3
+       DLT_MPLS                          = 0xdb
+       DLT_MTP2                          = 0x8c
+       DLT_MTP2_WITH_PHDR                = 0x8b
+       DLT_MTP3                          = 0x8d
+       DLT_MUX27010                      = 0xec
+       DLT_NETANALYZER                   = 0xf0
+       DLT_NETANALYZER_TRANSPARENT       = 0xf1
+       DLT_NFC_LLCP                      = 0xf5
+       DLT_NFLOG                         = 0xef
+       DLT_NG40                          = 0xf4
+       DLT_NULL                          = 0x0
+       DLT_PCI_EXP                       = 0x7d
+       DLT_PFLOG                         = 0x75
+       DLT_PFSYNC                        = 0x79
+       DLT_PPI                           = 0xc0
+       DLT_PPP                           = 0x9
+       DLT_PPP_BSDOS                     = 0x10
+       DLT_PPP_ETHER                     = 0x33
+       DLT_PPP_PPPD                      = 0xa6
+       DLT_PPP_SERIAL                    = 0x32
+       DLT_PPP_WITH_DIR                  = 0xcc
+       DLT_PPP_WITH_DIRECTION            = 0xa6
+       DLT_PRISM_HEADER                  = 0x77
+       DLT_PRONET                        = 0x4
+       DLT_RAIF1                         = 0xc6
+       DLT_RAW                           = 0xc
+       DLT_RIO                           = 0x7c
+       DLT_SCCP                          = 0x8e
+       DLT_SITA                          = 0xc4
+       DLT_SLIP                          = 0x8
+       DLT_SLIP_BSDOS                    = 0xf
+       DLT_STANAG_5066_D_PDU             = 0xed
+       DLT_SUNATM                        = 0x7b
+       DLT_SYMANTEC_FIREWALL             = 0x63
+       DLT_TZSP                          = 0x80
+       DLT_USB                           = 0xba
+       DLT_USB_LINUX                     = 0xbd
+       DLT_USB_LINUX_MMAPPED             = 0xdc
+       DLT_USER0                         = 0x93
+       DLT_USER1                         = 0x94
+       DLT_USER10                        = 0x9d
+       DLT_USER11                        = 0x9e
+       DLT_USER12                        = 0x9f
+       DLT_USER13                        = 0xa0
+       DLT_USER14                        = 0xa1
+       DLT_USER15                        = 0xa2
+       DLT_USER2                         = 0x95
+       DLT_USER3                         = 0x96
+       DLT_USER4                         = 0x97
+       DLT_USER5                         = 0x98
+       DLT_USER6                         = 0x99
+       DLT_USER7                         = 0x9a
+       DLT_USER8                         = 0x9b
+       DLT_USER9                         = 0x9c
+       DLT_WIHART                        = 0xdf
+       DLT_X2E_SERIAL                    = 0xd5
+       DLT_X2E_XORAYA                    = 0xd6
+       DT_BLK                            = 0x6
+       DT_CHR                            = 0x2
+       DT_DIR                            = 0x4
+       DT_FIFO                           = 0x1
+       DT_LNK                            = 0xa
+       DT_REG                            = 0x8
+       DT_SOCK                           = 0xc
+       DT_UNKNOWN                        = 0x0
+       DT_WHT                            = 0xe
+       ECHO                              = 0x8
+       ECHOCTL                           = 0x40
+       ECHOE                             = 0x2
+       ECHOK                             = 0x4
+       ECHOKE                            = 0x1
+       ECHONL                            = 0x10
+       ECHOPRT                           = 0x20
+       EVFILT_AIO                        = -0x3
+       EVFILT_FS                         = -0x9
+       EVFILT_LIO                        = -0xa
+       EVFILT_PROC                       = -0x5
+       EVFILT_READ                       = -0x1
+       EVFILT_SIGNAL                     = -0x6
+       EVFILT_SYSCOUNT                   = 0xb
+       EVFILT_TIMER                      = -0x7
+       EVFILT_USER                       = -0xb
+       EVFILT_VNODE                      = -0x4
+       EVFILT_WRITE                      = -0x2
+       EV_ADD                            = 0x1
+       EV_CLEAR                          = 0x20
+       EV_DELETE                         = 0x2
+       EV_DISABLE                        = 0x8
+       EV_DISPATCH                       = 0x80
+       EV_DROP                           = 0x1000
+       EV_ENABLE                         = 0x4
+       EV_EOF                            = 0x8000
+       EV_ERROR                          = 0x4000
+       EV_FLAG1                          = 0x2000
+       EV_ONESHOT                        = 0x10
+       EV_RECEIPT                        = 0x40
+       EV_SYSFLAGS                       = 0xf000
+       EXTA                              = 0x4b00
+       EXTATTR_NAMESPACE_EMPTY           = 0x0
+       EXTATTR_NAMESPACE_SYSTEM          = 0x2
+       EXTATTR_NAMESPACE_USER            = 0x1
+       EXTB                              = 0x9600
+       EXTPROC                           = 0x800
+       FD_CLOEXEC                        = 0x1
+       FD_SETSIZE                        = 0x400
+       FLUSHO                            = 0x800000
+       F_CANCEL                          = 0x5
+       F_DUP2FD                          = 0xa
+       F_DUP2FD_CLOEXEC                  = 0x12
+       F_DUPFD                           = 0x0
+       F_DUPFD_CLOEXEC                   = 0x11
+       F_GETFD                           = 0x1
+       F_GETFL                           = 0x3
+       F_GETLK                           = 0xb
+       F_GETOWN                          = 0x5
+       F_OGETLK                          = 0x7
+       F_OK                              = 0x0
+       F_OSETLK                          = 0x8
+       F_OSETLKW                         = 0x9
+       F_RDAHEAD                         = 0x10
+       F_RDLCK                           = 0x1
+       F_READAHEAD                       = 0xf
+       F_SETFD                           = 0x2
+       F_SETFL                           = 0x4
+       F_SETLK                           = 0xc
+       F_SETLKW                          = 0xd
+       F_SETLK_REMOTE                    = 0xe
+       F_SETOWN                          = 0x6
+       F_UNLCK                           = 0x2
+       F_UNLCKSYS                        = 0x4
+       F_WRLCK                           = 0x3
+       HUPCL                             = 0x4000
+       ICANON                            = 0x100
+       ICMP6_FILTER                      = 0x12
+       ICRNL                             = 0x100
+       IEXTEN                            = 0x400
+       IFAN_ARRIVAL                      = 0x0
+       IFAN_DEPARTURE                    = 0x1
+       IFF_ALLMULTI                      = 0x200
+       IFF_ALTPHYS                       = 0x4000
+       IFF_BROADCAST                     = 0x2
+       IFF_CANTCHANGE                    = 0x218f72
+       IFF_CANTCONFIG                    = 0x10000
+       IFF_DEBUG                         = 0x4
+       IFF_DRV_OACTIVE                   = 0x400
+       IFF_DRV_RUNNING                   = 0x40
+       IFF_DYING                         = 0x200000
+       IFF_LINK0                         = 0x1000
+       IFF_LINK1                         = 0x2000
+       IFF_LINK2                         = 0x4000
+       IFF_LOOPBACK                      = 0x8
+       IFF_MONITOR                       = 0x40000
+       IFF_MULTICAST                     = 0x8000
+       IFF_NOARP                         = 0x80
+       IFF_OACTIVE                       = 0x400
+       IFF_POINTOPOINT                   = 0x10
+       IFF_PPROMISC                      = 0x20000
+       IFF_PROMISC                       = 0x100
+       IFF_RENAMING                      = 0x400000
+       IFF_RUNNING                       = 0x40
+       IFF_SIMPLEX                       = 0x800
+       IFF_SMART                         = 0x20
+       IFF_STATICARP                     = 0x80000
+       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_BRIDGE                        = 0xd1
+       IFT_BSC                           = 0x53
+       IFT_CARP                          = 0xf8
+       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_DS0                           = 0x51
+       IFT_DS0BUNDLE                     = 0x52
+       IFT_DS1FDL                        = 0xaa
+       IFT_DS3                           = 0x1e
+       IFT_DTM                           = 0x8c
+       IFT_DVBASILN                      = 0xac
+       IFT_DVBASIOUT                     = 0xad
+       IFT_DVBRCCDOWNSTREAM              = 0x93
+       IFT_DVBRCCMACLAYER                = 0x92
+       IFT_DVBRCCUPSTREAM                = 0x94
+       IFT_ENC                           = 0xf4
+       IFT_EON                           = 0x19
+       IFT_EPLRS                         = 0x57
+       IFT_ESCON                         = 0x49
+       IFT_ETHER                         = 0x6
+       IFT_FAITH                         = 0xf2
+       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_IPXIP                         = 0xf9
+       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_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                         = 0xf6
+       IFT_PFSYNC                        = 0xf7
+       IFT_PLC                           = 0xae
+       IFT_POS                           = 0xab
+       IFT_PPP                           = 0x17
+       IFT_PPPMULTILINKBUNDLE            = 0x6c
+       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                           = 0xf1
+       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_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_STF                           = 0xd7
+       IFT_T1                            = 0x12
+       IFT_TDLC                          = 0x74
+       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_VOICEEM                       = 0x64
+       IFT_VOICEENCAP                    = 0x67
+       IFT_VOICEFXO                      = 0x65
+       IFT_VOICEFXS                      = 0x66
+       IFT_VOICEOVERATM                  = 0x98
+       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
+       IGNBRK                            = 0x1
+       IGNCR                             = 0x80
+       IGNPAR                            = 0x4
+       IMAXBEL                           = 0x2000
+       INLCR                             = 0x40
+       INPCK                             = 0x10
+       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_MASK                   = 0xfffffffe
+       IPPROTO_3PC                       = 0x22
+       IPPROTO_ADFS                      = 0x44
+       IPPROTO_AH                        = 0x33
+       IPPROTO_AHIP                      = 0x3d
+       IPPROTO_APES                      = 0x63
+       IPPROTO_ARGUS                     = 0xd
+       IPPROTO_AX25                      = 0x5d
+       IPPROTO_BHA                       = 0x31
+       IPPROTO_BLT                       = 0x1e
+       IPPROTO_BRSATMON                  = 0x4c
+       IPPROTO_CARP                      = 0x70
+       IPPROTO_CFTP                      = 0x3e
+       IPPROTO_CHAOS                     = 0x10
+       IPPROTO_CMTP                      = 0x26
+       IPPROTO_CPHB                      = 0x49
+       IPPROTO_CPNX                      = 0x48
+       IPPROTO_DDP                       = 0x25
+       IPPROTO_DGP                       = 0x56
+       IPPROTO_DIVERT                    = 0x102
+       IPPROTO_DONE                      = 0x101
+       IPPROTO_DSTOPTS                   = 0x3c
+       IPPROTO_EGP                       = 0x8
+       IPPROTO_EMCON                     = 0xe
+       IPPROTO_ENCAP                     = 0x62
+       IPPROTO_EON                       = 0x50
+       IPPROTO_ESP                       = 0x32
+       IPPROTO_ETHERIP                   = 0x61
+       IPPROTO_FRAGMENT                  = 0x2c
+       IPPROTO_GGP                       = 0x3
+       IPPROTO_GMTP                      = 0x64
+       IPPROTO_GRE                       = 0x2f
+       IPPROTO_HELLO                     = 0x3f
+       IPPROTO_HIP                       = 0x8b
+       IPPROTO_HMP                       = 0x14
+       IPPROTO_HOPOPTS                   = 0x0
+       IPPROTO_ICMP                      = 0x1
+       IPPROTO_ICMPV6                    = 0x3a
+       IPPROTO_IDP                       = 0x16
+       IPPROTO_IDPR                      = 0x23
+       IPPROTO_IDRP                      = 0x2d
+       IPPROTO_IGMP                      = 0x2
+       IPPROTO_IGP                       = 0x55
+       IPPROTO_IGRP                      = 0x58
+       IPPROTO_IL                        = 0x28
+       IPPROTO_INLSP                     = 0x34
+       IPPROTO_INP                       = 0x20
+       IPPROTO_IP                        = 0x0
+       IPPROTO_IPCOMP                    = 0x6c
+       IPPROTO_IPCV                      = 0x47
+       IPPROTO_IPEIP                     = 0x5e
+       IPPROTO_IPIP                      = 0x4
+       IPPROTO_IPPC                      = 0x43
+       IPPROTO_IPV4                      = 0x4
+       IPPROTO_IPV6                      = 0x29
+       IPPROTO_IRTP                      = 0x1c
+       IPPROTO_KRYPTOLAN                 = 0x41
+       IPPROTO_LARP                      = 0x5b
+       IPPROTO_LEAF1                     = 0x19
+       IPPROTO_LEAF2                     = 0x1a
+       IPPROTO_MAX                       = 0x100
+       IPPROTO_MAXID                     = 0x34
+       IPPROTO_MEAS                      = 0x13
+       IPPROTO_MH                        = 0x87
+       IPPROTO_MHRP                      = 0x30
+       IPPROTO_MICP                      = 0x5f
+       IPPROTO_MOBILE                    = 0x37
+       IPPROTO_MPLS                      = 0x89
+       IPPROTO_MTP                       = 0x5c
+       IPPROTO_MUX                       = 0x12
+       IPPROTO_ND                        = 0x4d
+       IPPROTO_NHRP                      = 0x36
+       IPPROTO_NONE                      = 0x3b
+       IPPROTO_NSP                       = 0x1f
+       IPPROTO_NVPII                     = 0xb
+       IPPROTO_OLD_DIVERT                = 0xfe
+       IPPROTO_OSPFIGP                   = 0x59
+       IPPROTO_PFSYNC                    = 0xf0
+       IPPROTO_PGM                       = 0x71
+       IPPROTO_PIGP                      = 0x9
+       IPPROTO_PIM                       = 0x67
+       IPPROTO_PRM                       = 0x15
+       IPPROTO_PUP                       = 0xc
+       IPPROTO_PVP                       = 0x4b
+       IPPROTO_RAW                       = 0xff
+       IPPROTO_RCCMON                    = 0xa
+       IPPROTO_RDP                       = 0x1b
+       IPPROTO_RESERVED_253              = 0xfd
+       IPPROTO_RESERVED_254              = 0xfe
+       IPPROTO_ROUTING                   = 0x2b
+       IPPROTO_RSVP                      = 0x2e
+       IPPROTO_RVD                       = 0x42
+       IPPROTO_SATEXPAK                  = 0x40
+       IPPROTO_SATMON                    = 0x45
+       IPPROTO_SCCSP                     = 0x60
+       IPPROTO_SCTP                      = 0x84
+       IPPROTO_SDRP                      = 0x2a
+       IPPROTO_SEND                      = 0x103
+       IPPROTO_SEP                       = 0x21
+       IPPROTO_SHIM6                     = 0x8c
+       IPPROTO_SKIP                      = 0x39
+       IPPROTO_SPACER                    = 0x7fff
+       IPPROTO_SRPC                      = 0x5a
+       IPPROTO_ST                        = 0x7
+       IPPROTO_SVMTP                     = 0x52
+       IPPROTO_SWIPE                     = 0x35
+       IPPROTO_TCF                       = 0x57
+       IPPROTO_TCP                       = 0x6
+       IPPROTO_TLSP                      = 0x38
+       IPPROTO_TP                        = 0x1d
+       IPPROTO_TPXX                      = 0x27
+       IPPROTO_TRUNK1                    = 0x17
+       IPPROTO_TRUNK2                    = 0x18
+       IPPROTO_TTP                       = 0x54
+       IPPROTO_UDP                       = 0x11
+       IPPROTO_UDPLITE                   = 0x88
+       IPPROTO_VINES                     = 0x53
+       IPPROTO_VISA                      = 0x46
+       IPPROTO_VMTP                      = 0x51
+       IPPROTO_WBEXPAK                   = 0x4f
+       IPPROTO_WBMON                     = 0x4e
+       IPPROTO_WSN                       = 0x4a
+       IPPROTO_XNET                      = 0xf
+       IPPROTO_XTP                       = 0x24
+       IPV6_AUTOFLOWLABEL                = 0x3b
+       IPV6_BINDANY                      = 0x40
+       IPV6_BINDV6ONLY                   = 0x1b
+       IPV6_CHECKSUM                     = 0x1a
+       IPV6_DEFAULT_MULTICAST_HOPS       = 0x1
+       IPV6_DEFAULT_MULTICAST_LOOP       = 0x1
+       IPV6_DEFHLIM                      = 0x40
+       IPV6_DONTFRAG                     = 0x3e
+       IPV6_DSTOPTS                      = 0x32
+       IPV6_FAITH                        = 0x1d
+       IPV6_FLOWINFO_MASK                = 0xffffff0f
+       IPV6_FLOWLABEL_MASK               = 0xffff0f00
+       IPV6_FRAGTTL                      = 0x78
+       IPV6_FW_ADD                       = 0x1e
+       IPV6_FW_DEL                       = 0x1f
+       IPV6_FW_FLUSH                     = 0x20
+       IPV6_FW_GET                       = 0x22
+       IPV6_FW_ZERO                      = 0x21
+       IPV6_HLIMDEC                      = 0x1
+       IPV6_HOPLIMIT                     = 0x2f
+       IPV6_HOPOPTS                      = 0x31
+       IPV6_IPSEC_POLICY                 = 0x1c
+       IPV6_JOIN_GROUP                   = 0xc
+       IPV6_LEAVE_GROUP                  = 0xd
+       IPV6_MAXHLIM                      = 0xff
+       IPV6_MAXOPTHDR                    = 0x800
+       IPV6_MAXPACKET                    = 0xffff
+       IPV6_MAX_GROUP_SRC_FILTER         = 0x200
+       IPV6_MAX_MEMBERSHIPS              = 0xfff
+       IPV6_MAX_SOCK_SRC_FILTER          = 0x80
+       IPV6_MIN_MEMBERSHIPS              = 0x1f
+       IPV6_MMTU                         = 0x500
+       IPV6_MSFILTER                     = 0x4a
+       IPV6_MULTICAST_HOPS               = 0xa
+       IPV6_MULTICAST_IF                 = 0x9
+       IPV6_MULTICAST_LOOP               = 0xb
+       IPV6_NEXTHOP                      = 0x30
+       IPV6_PATHMTU                      = 0x2c
+       IPV6_PKTINFO                      = 0x2e
+       IPV6_PORTRANGE                    = 0xe
+       IPV6_PORTRANGE_DEFAULT            = 0x0
+       IPV6_PORTRANGE_HIGH               = 0x1
+       IPV6_PORTRANGE_LOW                = 0x2
+       IPV6_PREFER_TEMPADDR              = 0x3f
+       IPV6_RECVDSTOPTS                  = 0x28
+       IPV6_RECVHOPLIMIT                 = 0x25
+       IPV6_RECVHOPOPTS                  = 0x27
+       IPV6_RECVPATHMTU                  = 0x2b
+       IPV6_RECVPKTINFO                  = 0x24
+       IPV6_RECVRTHDR                    = 0x26
+       IPV6_RECVTCLASS                   = 0x39
+       IPV6_RTHDR                        = 0x33
+       IPV6_RTHDRDSTOPTS                 = 0x23
+       IPV6_RTHDR_LOOSE                  = 0x0
+       IPV6_RTHDR_STRICT                 = 0x1
+       IPV6_RTHDR_TYPE_0                 = 0x0
+       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_ADD_SOURCE_MEMBERSHIP          = 0x46
+       IP_BINDANY                        = 0x18
+       IP_BLOCK_SOURCE                   = 0x48
+       IP_DEFAULT_MULTICAST_LOOP         = 0x1
+       IP_DEFAULT_MULTICAST_TTL          = 0x1
+       IP_DF                             = 0x4000
+       IP_DONTFRAG                       = 0x43
+       IP_DROP_MEMBERSHIP                = 0xd
+       IP_DROP_SOURCE_MEMBERSHIP         = 0x47
+       IP_DUMMYNET3                      = 0x31
+       IP_DUMMYNET_CONFIGURE             = 0x3c
+       IP_DUMMYNET_DEL                   = 0x3d
+       IP_DUMMYNET_FLUSH                 = 0x3e
+       IP_DUMMYNET_GET                   = 0x40
+       IP_FAITH                          = 0x16
+       IP_FW3                            = 0x30
+       IP_FW_ADD                         = 0x32
+       IP_FW_DEL                         = 0x33
+       IP_FW_FLUSH                       = 0x34
+       IP_FW_GET                         = 0x36
+       IP_FW_NAT_CFG                     = 0x38
+       IP_FW_NAT_DEL                     = 0x39
+       IP_FW_NAT_GET_CONFIG              = 0x3a
+       IP_FW_NAT_GET_LOG                 = 0x3b
+       IP_FW_RESETLOG                    = 0x37
+       IP_FW_TABLE_ADD                   = 0x28
+       IP_FW_TABLE_DEL                   = 0x29
+       IP_FW_TABLE_FLUSH                 = 0x2a
+       IP_FW_TABLE_GETSIZE               = 0x2b
+       IP_FW_TABLE_LIST                  = 0x2c
+       IP_FW_ZERO                        = 0x35
+       IP_HDRINCL                        = 0x2
+       IP_IPSEC_POLICY                   = 0x15
+       IP_MAXPACKET                      = 0xffff
+       IP_MAX_GROUP_SRC_FILTER           = 0x200
+       IP_MAX_MEMBERSHIPS                = 0xfff
+       IP_MAX_SOCK_MUTE_FILTER           = 0x80
+       IP_MAX_SOCK_SRC_FILTER            = 0x80
+       IP_MAX_SOURCE_FILTER              = 0x400
+       IP_MF                             = 0x2000
+       IP_MINTTL                         = 0x42
+       IP_MIN_MEMBERSHIPS                = 0x1f
+       IP_MSFILTER                       = 0x4a
+       IP_MSS                            = 0x240
+       IP_MULTICAST_IF                   = 0x9
+       IP_MULTICAST_LOOP                 = 0xb
+       IP_MULTICAST_TTL                  = 0xa
+       IP_MULTICAST_VIF                  = 0xe
+       IP_OFFMASK                        = 0x1fff
+       IP_ONESBCAST                      = 0x17
+       IP_OPTIONS                        = 0x1
+       IP_PORTRANGE                      = 0x13
+       IP_PORTRANGE_DEFAULT              = 0x0
+       IP_PORTRANGE_HIGH                 = 0x1
+       IP_PORTRANGE_LOW                  = 0x2
+       IP_RECVDSTADDR                    = 0x7
+       IP_RECVIF                         = 0x14
+       IP_RECVOPTS                       = 0x5
+       IP_RECVRETOPTS                    = 0x6
+       IP_RECVTOS                        = 0x44
+       IP_RECVTTL                        = 0x41
+       IP_RETOPTS                        = 0x8
+       IP_RF                             = 0x8000
+       IP_RSVP_OFF                       = 0x10
+       IP_RSVP_ON                        = 0xf
+       IP_RSVP_VIF_OFF                   = 0x12
+       IP_RSVP_VIF_ON                    = 0x11
+       IP_SENDSRCADDR                    = 0x7
+       IP_TOS                            = 0x3
+       IP_TTL                            = 0x4
+       IP_UNBLOCK_SOURCE                 = 0x49
+       ISIG                              = 0x80
+       ISTRIP                            = 0x20
+       IXANY                             = 0x800
+       IXOFF                             = 0x400
+       IXON                              = 0x200
+       LOCK_EX                           = 0x2
+       LOCK_NB                           = 0x4
+       LOCK_SH                           = 0x1
+       LOCK_UN                           = 0x8
+       MADV_AUTOSYNC                     = 0x7
+       MADV_CORE                         = 0x9
+       MADV_DONTNEED                     = 0x4
+       MADV_FREE                         = 0x5
+       MADV_NOCORE                       = 0x8
+       MADV_NORMAL                       = 0x0
+       MADV_NOSYNC                       = 0x6
+       MADV_PROTECT                      = 0xa
+       MADV_RANDOM                       = 0x1
+       MADV_SEQUENTIAL                   = 0x2
+       MADV_WILLNEED                     = 0x3
+       MAP_ALIGNED_SUPER                 = 0x1000000
+       MAP_ALIGNMENT_MASK                = -0x1000000
+       MAP_ALIGNMENT_SHIFT               = 0x18
+       MAP_ANON                          = 0x1000
+       MAP_ANONYMOUS                     = 0x1000
+       MAP_COPY                          = 0x2
+       MAP_EXCL                          = 0x4000
+       MAP_FILE                          = 0x0
+       MAP_FIXED                         = 0x10
+       MAP_HASSEMAPHORE                  = 0x200
+       MAP_NOCORE                        = 0x20000
+       MAP_NORESERVE                     = 0x40
+       MAP_NOSYNC                        = 0x800
+       MAP_PREFAULT_READ                 = 0x40000
+       MAP_PRIVATE                       = 0x2
+       MAP_RENAME                        = 0x20
+       MAP_RESERVED0080                  = 0x80
+       MAP_RESERVED0100                  = 0x100
+       MAP_SHARED                        = 0x1
+       MAP_STACK                         = 0x400
+       MCL_CURRENT                       = 0x1
+       MCL_FUTURE                        = 0x2
+       MSG_CMSG_CLOEXEC                  = 0x40000
+       MSG_COMPAT                        = 0x8000
+       MSG_CTRUNC                        = 0x20
+       MSG_DONTROUTE                     = 0x4
+       MSG_DONTWAIT                      = 0x80
+       MSG_EOF                           = 0x100
+       MSG_EOR                           = 0x8
+       MSG_NBIO                          = 0x4000
+       MSG_NOSIGNAL                      = 0x20000
+       MSG_NOTIFICATION                  = 0x2000
+       MSG_OOB                           = 0x1
+       MSG_PEEK                          = 0x2
+       MSG_TRUNC                         = 0x10
+       MSG_WAITALL                       = 0x40
+       MS_ASYNC                          = 0x1
+       MS_INVALIDATE                     = 0x2
+       MS_SYNC                           = 0x0
+       NAME_MAX                          = 0xff
+       NET_RT_DUMP                       = 0x1
+       NET_RT_FLAGS                      = 0x2
+       NET_RT_IFLIST                     = 0x3
+       NET_RT_IFLISTL                    = 0x5
+       NET_RT_IFMALIST                   = 0x4
+       NET_RT_MAXID                      = 0x6
+       NOFLSH                            = 0x80000000
+       NOTE_ATTRIB                       = 0x8
+       NOTE_CHILD                        = 0x4
+       NOTE_DELETE                       = 0x1
+       NOTE_EXEC                         = 0x20000000
+       NOTE_EXIT                         = 0x80000000
+       NOTE_EXTEND                       = 0x4
+       NOTE_FFAND                        = 0x40000000
+       NOTE_FFCOPY                       = 0xc0000000
+       NOTE_FFCTRLMASK                   = 0xc0000000
+       NOTE_FFLAGSMASK                   = 0xffffff
+       NOTE_FFNOP                        = 0x0
+       NOTE_FFOR                         = 0x80000000
+       NOTE_FORK                         = 0x40000000
+       NOTE_LINK                         = 0x10
+       NOTE_LOWAT                        = 0x1
+       NOTE_PCTRLMASK                    = 0xf0000000
+       NOTE_PDATAMASK                    = 0xfffff
+       NOTE_RENAME                       = 0x20
+       NOTE_REVOKE                       = 0x40
+       NOTE_TRACK                        = 0x1
+       NOTE_TRACKERR                     = 0x2
+       NOTE_TRIGGER                      = 0x1000000
+       NOTE_WRITE                        = 0x2
+       OCRNL                             = 0x10
+       ONLCR                             = 0x2
+       ONLRET                            = 0x40
+       ONOCR                             = 0x20
+       ONOEOT                            = 0x8
+       OPOST                             = 0x1
+       O_ACCMODE                         = 0x3
+       O_APPEND                          = 0x8
+       O_ASYNC                           = 0x40
+       O_CLOEXEC                         = 0x100000
+       O_CREAT                           = 0x200
+       O_DIRECT                          = 0x10000
+       O_DIRECTORY                       = 0x20000
+       O_EXCL                            = 0x800
+       O_EXEC                            = 0x40000
+       O_EXLOCK                          = 0x20
+       O_FSYNC                           = 0x80
+       O_NDELAY                          = 0x4
+       O_NOCTTY                          = 0x8000
+       O_NOFOLLOW                        = 0x100
+       O_NONBLOCK                        = 0x4
+       O_RDONLY                          = 0x0
+       O_RDWR                            = 0x2
+       O_SHLOCK                          = 0x10
+       O_SYNC                            = 0x80
+       O_TRUNC                           = 0x400
+       O_TTY_INIT                        = 0x80000
+       O_WRONLY                          = 0x1
+       PARENB                            = 0x1000
+       PARMRK                            = 0x8
+       PARODD                            = 0x2000
+       PENDIN                            = 0x20000000
+       PRIO_PGRP                         = 0x1
+       PRIO_PROCESS                      = 0x0
+       PRIO_USER                         = 0x2
+       PROT_EXEC                         = 0x4
+       PROT_NONE                         = 0x0
+       PROT_READ                         = 0x1
+       PROT_WRITE                        = 0x2
+       RLIMIT_AS                         = 0xa
+       RLIMIT_CORE                       = 0x4
+       RLIMIT_CPU                        = 0x0
+       RLIMIT_DATA                       = 0x2
+       RLIMIT_FSIZE                      = 0x1
+       RLIMIT_NOFILE                     = 0x8
+       RLIMIT_STACK                      = 0x3
+       RLIM_INFINITY                     = 0x7fffffffffffffff
+       RTAX_AUTHOR                       = 0x6
+       RTAX_BRD                          = 0x7
+       RTAX_DST                          = 0x0
+       RTAX_GATEWAY                      = 0x1
+       RTAX_GENMASK                      = 0x3
+       RTAX_IFA                          = 0x5
+       RTAX_IFP                          = 0x4
+       RTAX_MAX                          = 0x8
+       RTAX_NETMASK                      = 0x2
+       RTA_AUTHOR                        = 0x40
+       RTA_BRD                           = 0x80
+       RTA_DST                           = 0x1
+       RTA_GATEWAY                       = 0x2
+       RTA_GENMASK                       = 0x8
+       RTA_IFA                           = 0x20
+       RTA_IFP                           = 0x10
+       RTA_NETMASK                       = 0x4
+       RTF_BLACKHOLE                     = 0x1000
+       RTF_BROADCAST                     = 0x400000
+       RTF_DONE                          = 0x40
+       RTF_DYNAMIC                       = 0x10
+       RTF_FMASK                         = 0x1004d808
+       RTF_GATEWAY                       = 0x2
+       RTF_GWFLAG_COMPAT                 = 0x80000000
+       RTF_HOST                          = 0x4
+       RTF_LLDATA                        = 0x400
+       RTF_LLINFO                        = 0x400
+       RTF_LOCAL                         = 0x200000
+       RTF_MODIFIED                      = 0x20
+       RTF_MULTICAST                     = 0x800000
+       RTF_PINNED                        = 0x100000
+       RTF_PRCLONING                     = 0x10000
+       RTF_PROTO1                        = 0x8000
+       RTF_PROTO2                        = 0x4000
+       RTF_PROTO3                        = 0x40000
+       RTF_REJECT                        = 0x8
+       RTF_RNH_LOCKED                    = 0x40000000
+       RTF_STATIC                        = 0x800
+       RTF_STICKY                        = 0x10000000
+       RTF_UP                            = 0x1
+       RTF_XRESOLVE                      = 0x200
+       RTM_ADD                           = 0x1
+       RTM_CHANGE                        = 0x3
+       RTM_DELADDR                       = 0xd
+       RTM_DELETE                        = 0x2
+       RTM_DELMADDR                      = 0x10
+       RTM_GET                           = 0x4
+       RTM_IEEE80211                     = 0x12
+       RTM_IFANNOUNCE                    = 0x11
+       RTM_IFINFO                        = 0xe
+       RTM_LOCK                          = 0x8
+       RTM_LOSING                        = 0x5
+       RTM_MISS                          = 0x7
+       RTM_NEWADDR                       = 0xc
+       RTM_NEWMADDR                      = 0xf
+       RTM_OLDADD                        = 0x9
+       RTM_OLDDEL                        = 0xa
+       RTM_REDIRECT                      = 0x6
+       RTM_RESOLVE                       = 0xb
+       RTM_RTTUNIT                       = 0xf4240
+       RTM_VERSION                       = 0x5
+       RTV_EXPIRE                        = 0x4
+       RTV_HOPCOUNT                      = 0x2
+       RTV_MTU                           = 0x1
+       RTV_RPIPE                         = 0x8
+       RTV_RTT                           = 0x40
+       RTV_RTTVAR                        = 0x80
+       RTV_SPIPE                         = 0x10
+       RTV_SSTHRESH                      = 0x20
+       RTV_WEIGHT                        = 0x100
+       RT_ALL_FIBS                       = -0x1
+       RT_CACHING_CONTEXT                = 0x1
+       RT_DEFAULT_FIB                    = 0x0
+       RT_NORTREF                        = 0x2
+       RUSAGE_CHILDREN                   = -0x1
+       RUSAGE_SELF                       = 0x0
+       RUSAGE_THREAD                     = 0x1
+       SCM_BINTIME                       = 0x4
+       SCM_CREDS                         = 0x3
+       SCM_RIGHTS                        = 0x1
+       SCM_TIMESTAMP                     = 0x2
+       SHUT_RD                           = 0x0
+       SHUT_RDWR                         = 0x2
+       SHUT_WR                           = 0x1
+       SIOCADDMULTI                      = 0x80206931
+       SIOCADDRT                         = 0x8030720a
+       SIOCAIFADDR                       = 0x8040691a
+       SIOCAIFGROUP                      = 0x80246987
+       SIOCALIFADDR                      = 0x8118691b
+       SIOCATMARK                        = 0x40047307
+       SIOCDELMULTI                      = 0x80206932
+       SIOCDELRT                         = 0x8030720b
+       SIOCDIFADDR                       = 0x80206919
+       SIOCDIFGROUP                      = 0x80246989
+       SIOCDIFPHYADDR                    = 0x80206949
+       SIOCDLIFADDR                      = 0x8118691d
+       SIOCGDRVSPEC                      = 0xc01c697b
+       SIOCGETSGCNT                      = 0xc0147210
+       SIOCGETVIFCNT                     = 0xc014720f
+       SIOCGHIWAT                        = 0x40047301
+       SIOCGIFADDR                       = 0xc0206921
+       SIOCGIFBRDADDR                    = 0xc0206923
+       SIOCGIFCAP                        = 0xc020691f
+       SIOCGIFCONF                       = 0xc0086924
+       SIOCGIFDESCR                      = 0xc020692a
+       SIOCGIFDSTADDR                    = 0xc0206922
+       SIOCGIFFIB                        = 0xc020695c
+       SIOCGIFFLAGS                      = 0xc0206911
+       SIOCGIFGENERIC                    = 0xc020693a
+       SIOCGIFGMEMB                      = 0xc024698a
+       SIOCGIFGROUP                      = 0xc0246988
+       SIOCGIFINDEX                      = 0xc0206920
+       SIOCGIFMAC                        = 0xc0206926
+       SIOCGIFMEDIA                      = 0xc0286938
+       SIOCGIFMETRIC                     = 0xc0206917
+       SIOCGIFMTU                        = 0xc0206933
+       SIOCGIFNETMASK                    = 0xc0206925
+       SIOCGIFPDSTADDR                   = 0xc0206948
+       SIOCGIFPHYS                       = 0xc0206935
+       SIOCGIFPSRCADDR                   = 0xc0206947
+       SIOCGIFSTATUS                     = 0xc331693b
+       SIOCGLIFADDR                      = 0xc118691c
+       SIOCGLIFPHYADDR                   = 0xc118694b
+       SIOCGLOWAT                        = 0x40047303
+       SIOCGPGRP                         = 0x40047309
+       SIOCGPRIVATE_0                    = 0xc0206950
+       SIOCGPRIVATE_1                    = 0xc0206951
+       SIOCIFCREATE                      = 0xc020697a
+       SIOCIFCREATE2                     = 0xc020697c
+       SIOCIFDESTROY                     = 0x80206979
+       SIOCIFGCLONERS                    = 0xc00c6978
+       SIOCSDRVSPEC                      = 0x801c697b
+       SIOCSHIWAT                        = 0x80047300
+       SIOCSIFADDR                       = 0x8020690c
+       SIOCSIFBRDADDR                    = 0x80206913
+       SIOCSIFCAP                        = 0x8020691e
+       SIOCSIFDESCR                      = 0x80206929
+       SIOCSIFDSTADDR                    = 0x8020690e
+       SIOCSIFFIB                        = 0x8020695d
+       SIOCSIFFLAGS                      = 0x80206910
+       SIOCSIFGENERIC                    = 0x80206939
+       SIOCSIFLLADDR                     = 0x8020693c
+       SIOCSIFMAC                        = 0x80206927
+       SIOCSIFMEDIA                      = 0xc0206937
+       SIOCSIFMETRIC                     = 0x80206918
+       SIOCSIFMTU                        = 0x80206934
+       SIOCSIFNAME                       = 0x80206928
+       SIOCSIFNETMASK                    = 0x80206916
+       SIOCSIFPHYADDR                    = 0x80406946
+       SIOCSIFPHYS                       = 0x80206936
+       SIOCSIFRVNET                      = 0xc020695b
+       SIOCSIFVNET                       = 0xc020695a
+       SIOCSLIFPHYADDR                   = 0x8118694a
+       SIOCSLOWAT                        = 0x80047302
+       SIOCSPGRP                         = 0x80047308
+       SOCK_CLOEXEC                      = 0x10000000
+       SOCK_DGRAM                        = 0x2
+       SOCK_MAXADDRLEN                   = 0xff
+       SOCK_NONBLOCK                     = 0x20000000
+       SOCK_RAW                          = 0x3
+       SOCK_RDM                          = 0x4
+       SOCK_SEQPACKET                    = 0x5
+       SOCK_STREAM                       = 0x1
+       SOL_SOCKET                        = 0xffff
+       SOMAXCONN                         = 0x80
+       SO_ACCEPTCONN                     = 0x2
+       SO_ACCEPTFILTER                   = 0x1000
+       SO_BINTIME                        = 0x2000
+       SO_BROADCAST                      = 0x20
+       SO_DEBUG                          = 0x1
+       SO_DONTROUTE                      = 0x10
+       SO_ERROR                          = 0x1007
+       SO_KEEPALIVE                      = 0x8
+       SO_LABEL                          = 0x1009
+       SO_LINGER                         = 0x80
+       SO_LISTENINCQLEN                  = 0x1013
+       SO_LISTENQLEN                     = 0x1012
+       SO_LISTENQLIMIT                   = 0x1011
+       SO_NOSIGPIPE                      = 0x800
+       SO_NO_DDP                         = 0x8000
+       SO_NO_OFFLOAD                     = 0x4000
+       SO_OOBINLINE                      = 0x100
+       SO_PEERLABEL                      = 0x1010
+       SO_PROTOCOL                       = 0x1016
+       SO_PROTOTYPE                      = 0x1016
+       SO_RCVBUF                         = 0x1002
+       SO_RCVLOWAT                       = 0x1004
+       SO_RCVTIMEO                       = 0x1006
+       SO_REUSEADDR                      = 0x4
+       SO_REUSEPORT                      = 0x200
+       SO_SETFIB                         = 0x1014
+       SO_SNDBUF                         = 0x1001
+       SO_SNDLOWAT                       = 0x1003
+       SO_SNDTIMEO                       = 0x1005
+       SO_TIMESTAMP                      = 0x400
+       SO_TYPE                           = 0x1008
+       SO_USELOOPBACK                    = 0x40
+       SO_USER_COOKIE                    = 0x1015
+       SO_VENDOR                         = 0x80000000
+       TCIFLUSH                          = 0x1
+       TCIOFLUSH                         = 0x3
+       TCOFLUSH                          = 0x2
+       TCP_CA_NAME_MAX                   = 0x10
+       TCP_CONGESTION                    = 0x40
+       TCP_INFO                          = 0x20
+       TCP_KEEPCNT                       = 0x400
+       TCP_KEEPIDLE                      = 0x100
+       TCP_KEEPINIT                      = 0x80
+       TCP_KEEPINTVL                     = 0x200
+       TCP_MAXBURST                      = 0x4
+       TCP_MAXHLEN                       = 0x3c
+       TCP_MAXOLEN                       = 0x28
+       TCP_MAXSEG                        = 0x2
+       TCP_MAXWIN                        = 0xffff
+       TCP_MAX_SACK                      = 0x4
+       TCP_MAX_WINSHIFT                  = 0xe
+       TCP_MD5SIG                        = 0x10
+       TCP_MINMSS                        = 0xd8
+       TCP_MSS                           = 0x218
+       TCP_NODELAY                       = 0x1
+       TCP_NOOPT                         = 0x8
+       TCP_NOPUSH                        = 0x4
+       TCP_VENDOR                        = 0x80000000
+       TCSAFLUSH                         = 0x2
+       TIOCCBRK                          = 0x2000747a
+       TIOCCDTR                          = 0x20007478
+       TIOCCONS                          = 0x80047462
+       TIOCDRAIN                         = 0x2000745e
+       TIOCEXCL                          = 0x2000740d
+       TIOCEXT                           = 0x80047460
+       TIOCFLUSH                         = 0x80047410
+       TIOCGDRAINWAIT                    = 0x40047456
+       TIOCGETA                          = 0x402c7413
+       TIOCGETD                          = 0x4004741a
+       TIOCGPGRP                         = 0x40047477
+       TIOCGPTN                          = 0x4004740f
+       TIOCGSID                          = 0x40047463
+       TIOCGWINSZ                        = 0x40087468
+       TIOCMBIC                          = 0x8004746b
+       TIOCMBIS                          = 0x8004746c
+       TIOCMGDTRWAIT                     = 0x4004745a
+       TIOCMGET                          = 0x4004746a
+       TIOCMSDTRWAIT                     = 0x8004745b
+       TIOCMSET                          = 0x8004746d
+       TIOCM_CAR                         = 0x40
+       TIOCM_CD                          = 0x40
+       TIOCM_CTS                         = 0x20
+       TIOCM_DCD                         = 0x40
+       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                      = 0x0
+       TIOCPKT_DOSTOP                    = 0x20
+       TIOCPKT_FLUSHREAD                 = 0x1
+       TIOCPKT_FLUSHWRITE                = 0x2
+       TIOCPKT_IOCTL                     = 0x40
+       TIOCPKT_NOSTOP                    = 0x10
+       TIOCPKT_START                     = 0x8
+       TIOCPKT_STOP                      = 0x4
+       TIOCPTMASTER                      = 0x2000741c
+       TIOCSBRK                          = 0x2000747b
+       TIOCSCTTY                         = 0x20007461
+       TIOCSDRAINWAIT                    = 0x80047457
+       TIOCSDTR                          = 0x20007479
+       TIOCSETA                          = 0x802c7414
+       TIOCSETAF                         = 0x802c7416
+       TIOCSETAW                         = 0x802c7415
+       TIOCSETD                          = 0x8004741b
+       TIOCSIG                           = 0x2004745f
+       TIOCSPGRP                         = 0x80047476
+       TIOCSTART                         = 0x2000746e
+       TIOCSTAT                          = 0x20007465
+       TIOCSTI                           = 0x80017472
+       TIOCSTOP                          = 0x2000746f
+       TIOCSWINSZ                        = 0x80087467
+       TIOCTIMESTAMP                     = 0x40087459
+       TIOCUCNTL                         = 0x80047466
+       TOSTOP                            = 0x400000
+       VDISCARD                          = 0xf
+       VDSUSP                            = 0xb
+       VEOF                              = 0x0
+       VEOL                              = 0x1
+       VEOL2                             = 0x2
+       VERASE                            = 0x3
+       VERASE2                           = 0x7
+       VINTR                             = 0x8
+       VKILL                             = 0x5
+       VLNEXT                            = 0xe
+       VMIN                              = 0x10
+       VQUIT                             = 0x9
+       VREPRINT                          = 0x6
+       VSTART                            = 0xc
+       VSTATUS                           = 0x12
+       VSTOP                             = 0xd
+       VSUSP                             = 0xa
+       VTIME                             = 0x11
+       VWERASE                           = 0x4
+       WCONTINUED                        = 0x4
+       WCOREFLAG                         = 0x80
+       WEXITED                           = 0x10
+       WLINUXCLONE                       = 0x80000000
+       WNOHANG                           = 0x1
+       WNOWAIT                           = 0x8
+       WSTOPPED                          = 0x2
+       WTRAPPED                          = 0x20
+       WUNTRACED                         = 0x2
+)
+
+// Errors
+const (
+       E2BIG           = syscall.Errno(0x7)
+       EACCES          = syscall.Errno(0xd)
+       EADDRINUSE      = syscall.Errno(0x30)
+       EADDRNOTAVAIL   = syscall.Errno(0x31)
+       EAFNOSUPPORT    = syscall.Errno(0x2f)
+       EAGAIN          = syscall.Errno(0x23)
+       EALREADY        = syscall.Errno(0x25)
+       EAUTH           = syscall.Errno(0x50)
+       EBADF           = syscall.Errno(0x9)
+       EBADMSG         = syscall.Errno(0x59)
+       EBADRPC         = syscall.Errno(0x48)
+       EBUSY           = syscall.Errno(0x10)
+       ECANCELED       = syscall.Errno(0x55)
+       ECAPMODE        = syscall.Errno(0x5e)
+       ECHILD          = syscall.Errno(0xa)
+       ECONNABORTED    = syscall.Errno(0x35)
+       ECONNREFUSED    = syscall.Errno(0x3d)
+       ECONNRESET      = syscall.Errno(0x36)
+       EDEADLK         = syscall.Errno(0xb)
+       EDESTADDRREQ    = syscall.Errno(0x27)
+       EDOM            = syscall.Errno(0x21)
+       EDOOFUS         = syscall.Errno(0x58)
+       EDQUOT          = syscall.Errno(0x45)
+       EEXIST          = syscall.Errno(0x11)
+       EFAULT          = syscall.Errno(0xe)
+       EFBIG           = syscall.Errno(0x1b)
+       EFTYPE          = syscall.Errno(0x4f)
+       EHOSTDOWN       = syscall.Errno(0x40)
+       EHOSTUNREACH    = syscall.Errno(0x41)
+       EIDRM           = syscall.Errno(0x52)
+       EILSEQ          = syscall.Errno(0x56)
+       EINPROGRESS     = syscall.Errno(0x24)
+       EINTR           = syscall.Errno(0x4)
+       EINVAL          = syscall.Errno(0x16)
+       EIO             = syscall.Errno(0x5)
+       EISCONN         = syscall.Errno(0x38)
+       EISDIR          = syscall.Errno(0x15)
+       ELAST           = syscall.Errno(0x60)
+       ELOOP           = syscall.Errno(0x3e)
+       EMFILE          = syscall.Errno(0x18)
+       EMLINK          = syscall.Errno(0x1f)
+       EMSGSIZE        = syscall.Errno(0x28)
+       EMULTIHOP       = syscall.Errno(0x5a)
+       ENAMETOOLONG    = syscall.Errno(0x3f)
+       ENEEDAUTH       = syscall.Errno(0x51)
+       ENETDOWN        = syscall.Errno(0x32)
+       ENETRESET       = syscall.Errno(0x34)
+       ENETUNREACH     = syscall.Errno(0x33)
+       ENFILE          = syscall.Errno(0x17)
+       ENOATTR         = syscall.Errno(0x57)
+       ENOBUFS         = syscall.Errno(0x37)
+       ENODEV          = syscall.Errno(0x13)
+       ENOENT          = syscall.Errno(0x2)
+       ENOEXEC         = syscall.Errno(0x8)
+       ENOLCK          = syscall.Errno(0x4d)
+       ENOLINK         = syscall.Errno(0x5b)
+       ENOMEM          = syscall.Errno(0xc)
+       ENOMSG          = syscall.Errno(0x53)
+       ENOPROTOOPT     = syscall.Errno(0x2a)
+       ENOSPC          = syscall.Errno(0x1c)
+       ENOSYS          = syscall.Errno(0x4e)
+       ENOTBLK         = syscall.Errno(0xf)
+       ENOTCAPABLE     = syscall.Errno(0x5d)
+       ENOTCONN        = syscall.Errno(0x39)
+       ENOTDIR         = syscall.Errno(0x14)
+       ENOTEMPTY       = syscall.Errno(0x42)
+       ENOTRECOVERABLE = syscall.Errno(0x5f)
+       ENOTSOCK        = syscall.Errno(0x26)
+       ENOTSUP         = syscall.Errno(0x2d)
+       ENOTTY          = syscall.Errno(0x19)
+       ENXIO           = syscall.Errno(0x6)
+       EOPNOTSUPP      = syscall.Errno(0x2d)
+       EOVERFLOW       = syscall.Errno(0x54)
+       EOWNERDEAD      = syscall.Errno(0x60)
+       EPERM           = syscall.Errno(0x1)
+       EPFNOSUPPORT    = syscall.Errno(0x2e)
+       EPIPE           = syscall.Errno(0x20)
+       EPROCLIM        = syscall.Errno(0x43)
+       EPROCUNAVAIL    = syscall.Errno(0x4c)
+       EPROGMISMATCH   = syscall.Errno(0x4b)
+       EPROGUNAVAIL    = syscall.Errno(0x4a)
+       EPROTO          = syscall.Errno(0x5c)
+       EPROTONOSUPPORT = syscall.Errno(0x2b)
+       EPROTOTYPE      = syscall.Errno(0x29)
+       ERANGE          = syscall.Errno(0x22)
+       EREMOTE         = syscall.Errno(0x47)
+       EROFS           = syscall.Errno(0x1e)
+       ERPCMISMATCH    = syscall.Errno(0x49)
+       ESHUTDOWN       = syscall.Errno(0x3a)
+       ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+       ESPIPE          = syscall.Errno(0x1d)
+       ESRCH           = syscall.Errno(0x3)
+       ESTALE          = syscall.Errno(0x46)
+       ETIMEDOUT       = syscall.Errno(0x3c)
+       ETOOMANYREFS    = syscall.Errno(0x3b)
+       ETXTBSY         = syscall.Errno(0x1a)
+       EUSERS          = syscall.Errno(0x44)
+       EWOULDBLOCK     = syscall.Errno(0x23)
+       EXDEV           = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+       SIGABRT   = syscall.Signal(0x6)
+       SIGALRM   = syscall.Signal(0xe)
+       SIGBUS    = syscall.Signal(0xa)
+       SIGCHLD   = syscall.Signal(0x14)
+       SIGCONT   = syscall.Signal(0x13)
+       SIGEMT    = syscall.Signal(0x7)
+       SIGFPE    = syscall.Signal(0x8)
+       SIGHUP    = syscall.Signal(0x1)
+       SIGILL    = syscall.Signal(0x4)
+       SIGINFO   = syscall.Signal(0x1d)
+       SIGINT    = syscall.Signal(0x2)
+       SIGIO     = syscall.Signal(0x17)
+       SIGIOT    = syscall.Signal(0x6)
+       SIGKILL   = syscall.Signal(0x9)
+       SIGLIBRT  = syscall.Signal(0x21)
+       SIGLWP    = syscall.Signal(0x20)
+       SIGPIPE   = syscall.Signal(0xd)
+       SIGPROF   = syscall.Signal(0x1b)
+       SIGQUIT   = syscall.Signal(0x3)
+       SIGSEGV   = syscall.Signal(0xb)
+       SIGSTOP   = syscall.Signal(0x11)
+       SIGSYS    = syscall.Signal(0xc)
+       SIGTERM   = syscall.Signal(0xf)
+       SIGTHR    = syscall.Signal(0x20)
+       SIGTRAP   = syscall.Signal(0x5)
+       SIGTSTP   = syscall.Signal(0x12)
+       SIGTTIN   = syscall.Signal(0x15)
+       SIGTTOU   = syscall.Signal(0x16)
+       SIGURG    = syscall.Signal(0x10)
+       SIGUSR1   = syscall.Signal(0x1e)
+       SIGUSR2   = syscall.Signal(0x1f)
+       SIGVTALRM = syscall.Signal(0x1a)
+       SIGWINCH  = syscall.Signal(0x1c)
+       SIGXCPU   = syscall.Signal(0x18)
+       SIGXFSZ   = syscall.Signal(0x19)
+)
+
+// 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: "operation 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: "identifier removed",
+       83: "no message of desired type",
+       84: "value too large to be stored in data type",
+       85: "operation canceled",
+       86: "illegal byte sequence",
+       87: "attribute not found",
+       88: "programming error",
+       89: "bad message",
+       90: "multihop attempted",
+       91: "link has been severed",
+       92: "protocol error",
+       93: "capabilities insufficient",
+       94: "not permitted in capability mode",
+       95: "state not recoverable",
+       96: "previous owner died",
+}
+
+// Signal table
+var signals = [...]string{
+       1:  "hangup",
+       2:  "interrupt",
+       3:  "quit",
+       4:  "illegal instruction",
+       5:  "trace/BPT trap",
+       6:  "abort trap",
+       7:  "EMT trap",
+       8:  "floating point exception",
+       9:  "killed",
+       10: "bus error",
+       11: "segmentation fault",
+       12: "bad system call",
+       13: "broken pipe",
+       14: "alarm clock",
+       15: "terminated",
+       16: "urgent I/O condition",
+       17: "suspended (signal)",
+       18: "suspended",
+       19: "continued",
+       20: "child exited",
+       21: "stopped (tty input)",
+       22: "stopped (tty output)",
+       23: "I/O possible",
+       24: "cputime limit exceeded",
+       25: "filesize limit exceeded",
+       26: "virtual timer expired",
+       27: "profiling timer expired",
+       28: "window size changes",
+       29: "information request",
+       30: "user defined signal 1",
+       31: "user defined signal 2",
+       32: "unknown signal",
+       33: "unknown signal",
+}
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go
new file mode 100644 (file)
index 0000000..d370be0
--- /dev/null
@@ -0,0 +1,1817 @@
+// mkerrors.sh -m32
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build 386,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m32 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+       AF_ALG                           = 0x26
+       AF_APPLETALK                     = 0x5
+       AF_ASH                           = 0x12
+       AF_ATMPVC                        = 0x8
+       AF_ATMSVC                        = 0x14
+       AF_AX25                          = 0x3
+       AF_BLUETOOTH                     = 0x1f
+       AF_BRIDGE                        = 0x7
+       AF_CAIF                          = 0x25
+       AF_CAN                           = 0x1d
+       AF_DECnet                        = 0xc
+       AF_ECONET                        = 0x13
+       AF_FILE                          = 0x1
+       AF_IEEE802154                    = 0x24
+       AF_INET                          = 0x2
+       AF_INET6                         = 0xa
+       AF_IPX                           = 0x4
+       AF_IRDA                          = 0x17
+       AF_ISDN                          = 0x22
+       AF_IUCV                          = 0x20
+       AF_KEY                           = 0xf
+       AF_LLC                           = 0x1a
+       AF_LOCAL                         = 0x1
+       AF_MAX                           = 0x28
+       AF_NETBEUI                       = 0xd
+       AF_NETLINK                       = 0x10
+       AF_NETROM                        = 0x6
+       AF_NFC                           = 0x27
+       AF_PACKET                        = 0x11
+       AF_PHONET                        = 0x23
+       AF_PPPOX                         = 0x18
+       AF_RDS                           = 0x15
+       AF_ROSE                          = 0xb
+       AF_ROUTE                         = 0x10
+       AF_RXRPC                         = 0x21
+       AF_SECURITY                      = 0xe
+       AF_SNA                           = 0x16
+       AF_TIPC                          = 0x1e
+       AF_UNIX                          = 0x1
+       AF_UNSPEC                        = 0x0
+       AF_WANPIPE                       = 0x19
+       AF_X25                           = 0x9
+       ARPHRD_ADAPT                     = 0x108
+       ARPHRD_APPLETLK                  = 0x8
+       ARPHRD_ARCNET                    = 0x7
+       ARPHRD_ASH                       = 0x30d
+       ARPHRD_ATM                       = 0x13
+       ARPHRD_AX25                      = 0x3
+       ARPHRD_BIF                       = 0x307
+       ARPHRD_CAIF                      = 0x336
+       ARPHRD_CAN                       = 0x118
+       ARPHRD_CHAOS                     = 0x5
+       ARPHRD_CISCO                     = 0x201
+       ARPHRD_CSLIP                     = 0x101
+       ARPHRD_CSLIP6                    = 0x103
+       ARPHRD_DDCMP                     = 0x205
+       ARPHRD_DLCI                      = 0xf
+       ARPHRD_ECONET                    = 0x30e
+       ARPHRD_EETHER                    = 0x2
+       ARPHRD_ETHER                     = 0x1
+       ARPHRD_EUI64                     = 0x1b
+       ARPHRD_FCAL                      = 0x311
+       ARPHRD_FCFABRIC                  = 0x313
+       ARPHRD_FCPL                      = 0x312
+       ARPHRD_FCPP                      = 0x310
+       ARPHRD_FDDI                      = 0x306
+       ARPHRD_FRAD                      = 0x302
+       ARPHRD_HDLC                      = 0x201
+       ARPHRD_HIPPI                     = 0x30c
+       ARPHRD_HWX25                     = 0x110
+       ARPHRD_IEEE1394                  = 0x18
+       ARPHRD_IEEE802                   = 0x6
+       ARPHRD_IEEE80211                 = 0x321
+       ARPHRD_IEEE80211_PRISM           = 0x322
+       ARPHRD_IEEE80211_RADIOTAP        = 0x323
+       ARPHRD_IEEE802154                = 0x324
+       ARPHRD_IEEE802_TR                = 0x320
+       ARPHRD_INFINIBAND                = 0x20
+       ARPHRD_IPDDP                     = 0x309
+       ARPHRD_IPGRE                     = 0x30a
+       ARPHRD_IRDA                      = 0x30f
+       ARPHRD_LAPB                      = 0x204
+       ARPHRD_LOCALTLK                  = 0x305
+       ARPHRD_LOOPBACK                  = 0x304
+       ARPHRD_METRICOM                  = 0x17
+       ARPHRD_NETROM                    = 0x0
+       ARPHRD_NONE                      = 0xfffe
+       ARPHRD_PHONET                    = 0x334
+       ARPHRD_PHONET_PIPE               = 0x335
+       ARPHRD_PIMREG                    = 0x30b
+       ARPHRD_PPP                       = 0x200
+       ARPHRD_PRONET                    = 0x4
+       ARPHRD_RAWHDLC                   = 0x206
+       ARPHRD_ROSE                      = 0x10e
+       ARPHRD_RSRVD                     = 0x104
+       ARPHRD_SIT                       = 0x308
+       ARPHRD_SKIP                      = 0x303
+       ARPHRD_SLIP                      = 0x100
+       ARPHRD_SLIP6                     = 0x102
+       ARPHRD_TUNNEL                    = 0x300
+       ARPHRD_TUNNEL6                   = 0x301
+       ARPHRD_VOID                      = 0xffff
+       ARPHRD_X25                       = 0x10f
+       B0                               = 0x0
+       B1000000                         = 0x1008
+       B110                             = 0x3
+       B115200                          = 0x1002
+       B1152000                         = 0x1009
+       B1200                            = 0x9
+       B134                             = 0x4
+       B150                             = 0x5
+       B1500000                         = 0x100a
+       B1800                            = 0xa
+       B19200                           = 0xe
+       B200                             = 0x6
+       B2000000                         = 0x100b
+       B230400                          = 0x1003
+       B2400                            = 0xb
+       B2500000                         = 0x100c
+       B300                             = 0x7
+       B3000000                         = 0x100d
+       B3500000                         = 0x100e
+       B38400                           = 0xf
+       B4000000                         = 0x100f
+       B460800                          = 0x1004
+       B4800                            = 0xc
+       B50                              = 0x1
+       B500000                          = 0x1005
+       B57600                           = 0x1001
+       B576000                          = 0x1006
+       B600                             = 0x8
+       B75                              = 0x2
+       B921600                          = 0x1007
+       B9600                            = 0xd
+       BOTHER                           = 0x1000
+       BPF_A                            = 0x10
+       BPF_ABS                          = 0x20
+       BPF_ADD                          = 0x0
+       BPF_ALU                          = 0x4
+       BPF_AND                          = 0x50
+       BPF_B                            = 0x10
+       BPF_DIV                          = 0x30
+       BPF_H                            = 0x8
+       BPF_IMM                          = 0x0
+       BPF_IND                          = 0x40
+       BPF_JA                           = 0x0
+       BPF_JEQ                          = 0x10
+       BPF_JGE                          = 0x30
+       BPF_JGT                          = 0x20
+       BPF_JMP                          = 0x5
+       BPF_JSET                         = 0x40
+       BPF_K                            = 0x0
+       BPF_LD                           = 0x0
+       BPF_LDX                          = 0x1
+       BPF_LEN                          = 0x80
+       BPF_LSH                          = 0x60
+       BPF_MAJOR_VERSION                = 0x1
+       BPF_MAXINSNS                     = 0x1000
+       BPF_MEM                          = 0x60
+       BPF_MEMWORDS                     = 0x10
+       BPF_MINOR_VERSION                = 0x1
+       BPF_MISC                         = 0x7
+       BPF_MSH                          = 0xa0
+       BPF_MUL                          = 0x20
+       BPF_NEG                          = 0x80
+       BPF_OR                           = 0x40
+       BPF_RET                          = 0x6
+       BPF_RSH                          = 0x70
+       BPF_ST                           = 0x2
+       BPF_STX                          = 0x3
+       BPF_SUB                          = 0x10
+       BPF_TAX                          = 0x0
+       BPF_TXA                          = 0x80
+       BPF_W                            = 0x0
+       BPF_X                            = 0x8
+       BRKINT                           = 0x2
+       BS0                              = 0x0
+       BS1                              = 0x2000
+       BSDLY                            = 0x2000
+       CBAUD                            = 0x100f
+       CBAUDEX                          = 0x1000
+       CFLUSH                           = 0xf
+       CIBAUD                           = 0x100f0000
+       CLOCAL                           = 0x800
+       CLOCK_BOOTTIME                   = 0x7
+       CLOCK_BOOTTIME_ALARM             = 0x9
+       CLOCK_DEFAULT                    = 0x0
+       CLOCK_EXT                        = 0x1
+       CLOCK_INT                        = 0x2
+       CLOCK_MONOTONIC                  = 0x1
+       CLOCK_MONOTONIC_COARSE           = 0x6
+       CLOCK_MONOTONIC_RAW              = 0x4
+       CLOCK_PROCESS_CPUTIME_ID         = 0x2
+       CLOCK_REALTIME                   = 0x0
+       CLOCK_REALTIME_ALARM             = 0x8
+       CLOCK_REALTIME_COARSE            = 0x5
+       CLOCK_THREAD_CPUTIME_ID          = 0x3
+       CLOCK_TXFROMRX                   = 0x4
+       CLOCK_TXINT                      = 0x3
+       CLONE_CHILD_CLEARTID             = 0x200000
+       CLONE_CHILD_SETTID               = 0x1000000
+       CLONE_DETACHED                   = 0x400000
+       CLONE_FILES                      = 0x400
+       CLONE_FS                         = 0x200
+       CLONE_IO                         = 0x80000000
+       CLONE_NEWIPC                     = 0x8000000
+       CLONE_NEWNET                     = 0x40000000
+       CLONE_NEWNS                      = 0x20000
+       CLONE_NEWPID                     = 0x20000000
+       CLONE_NEWUSER                    = 0x10000000
+       CLONE_NEWUTS                     = 0x4000000
+       CLONE_PARENT                     = 0x8000
+       CLONE_PARENT_SETTID              = 0x100000
+       CLONE_PTRACE                     = 0x2000
+       CLONE_SETTLS                     = 0x80000
+       CLONE_SIGHAND                    = 0x800
+       CLONE_SYSVSEM                    = 0x40000
+       CLONE_THREAD                     = 0x10000
+       CLONE_UNTRACED                   = 0x800000
+       CLONE_VFORK                      = 0x4000
+       CLONE_VM                         = 0x100
+       CMSPAR                           = 0x40000000
+       CR0                              = 0x0
+       CR1                              = 0x200
+       CR2                              = 0x400
+       CR3                              = 0x600
+       CRDLY                            = 0x600
+       CREAD                            = 0x80
+       CRTSCTS                          = 0x80000000
+       CS5                              = 0x0
+       CS6                              = 0x10
+       CS7                              = 0x20
+       CS8                              = 0x30
+       CSIGNAL                          = 0xff
+       CSIZE                            = 0x30
+       CSTART                           = 0x11
+       CSTATUS                          = 0x0
+       CSTOP                            = 0x13
+       CSTOPB                           = 0x40
+       CSUSP                            = 0x1a
+       DT_BLK                           = 0x6
+       DT_CHR                           = 0x2
+       DT_DIR                           = 0x4
+       DT_FIFO                          = 0x1
+       DT_LNK                           = 0xa
+       DT_REG                           = 0x8
+       DT_SOCK                          = 0xc
+       DT_UNKNOWN                       = 0x0
+       DT_WHT                           = 0xe
+       ECHO                             = 0x8
+       ECHOCTL                          = 0x200
+       ECHOE                            = 0x10
+       ECHOK                            = 0x20
+       ECHOKE                           = 0x800
+       ECHONL                           = 0x40
+       ECHOPRT                          = 0x400
+       ENCODING_DEFAULT                 = 0x0
+       ENCODING_FM_MARK                 = 0x3
+       ENCODING_FM_SPACE                = 0x4
+       ENCODING_MANCHESTER              = 0x5
+       ENCODING_NRZ                     = 0x1
+       ENCODING_NRZI                    = 0x2
+       EPOLLERR                         = 0x8
+       EPOLLET                          = 0x80000000
+       EPOLLHUP                         = 0x10
+       EPOLLIN                          = 0x1
+       EPOLLMSG                         = 0x400
+       EPOLLONESHOT                     = 0x40000000
+       EPOLLOUT                         = 0x4
+       EPOLLPRI                         = 0x2
+       EPOLLRDBAND                      = 0x80
+       EPOLLRDHUP                       = 0x2000
+       EPOLLRDNORM                      = 0x40
+       EPOLLWRBAND                      = 0x200
+       EPOLLWRNORM                      = 0x100
+       EPOLL_CLOEXEC                    = 0x80000
+       EPOLL_CTL_ADD                    = 0x1
+       EPOLL_CTL_DEL                    = 0x2
+       EPOLL_CTL_MOD                    = 0x3
+       EPOLL_NONBLOCK                   = 0x800
+       ETH_P_1588                       = 0x88f7
+       ETH_P_8021AD                     = 0x88a8
+       ETH_P_8021AH                     = 0x88e7
+       ETH_P_8021Q                      = 0x8100
+       ETH_P_802_2                      = 0x4
+       ETH_P_802_3                      = 0x1
+       ETH_P_AARP                       = 0x80f3
+       ETH_P_AF_IUCV                    = 0xfbfb
+       ETH_P_ALL                        = 0x3
+       ETH_P_AOE                        = 0x88a2
+       ETH_P_ARCNET                     = 0x1a
+       ETH_P_ARP                        = 0x806
+       ETH_P_ATALK                      = 0x809b
+       ETH_P_ATMFATE                    = 0x8884
+       ETH_P_ATMMPOA                    = 0x884c
+       ETH_P_AX25                       = 0x2
+       ETH_P_BPQ                        = 0x8ff
+       ETH_P_CAIF                       = 0xf7
+       ETH_P_CAN                        = 0xc
+       ETH_P_CONTROL                    = 0x16
+       ETH_P_CUST                       = 0x6006
+       ETH_P_DDCMP                      = 0x6
+       ETH_P_DEC                        = 0x6000
+       ETH_P_DIAG                       = 0x6005
+       ETH_P_DNA_DL                     = 0x6001
+       ETH_P_DNA_RC                     = 0x6002
+       ETH_P_DNA_RT                     = 0x6003
+       ETH_P_DSA                        = 0x1b
+       ETH_P_ECONET                     = 0x18
+       ETH_P_EDSA                       = 0xdada
+       ETH_P_FCOE                       = 0x8906
+       ETH_P_FIP                        = 0x8914
+       ETH_P_HDLC                       = 0x19
+       ETH_P_IEEE802154                 = 0xf6
+       ETH_P_IEEEPUP                    = 0xa00
+       ETH_P_IEEEPUPAT                  = 0xa01
+       ETH_P_IP                         = 0x800
+       ETH_P_IPV6                       = 0x86dd
+       ETH_P_IPX                        = 0x8137
+       ETH_P_IRDA                       = 0x17
+       ETH_P_LAT                        = 0x6004
+       ETH_P_LINK_CTL                   = 0x886c
+       ETH_P_LOCALTALK                  = 0x9
+       ETH_P_LOOP                       = 0x60
+       ETH_P_MOBITEX                    = 0x15
+       ETH_P_MPLS_MC                    = 0x8848
+       ETH_P_MPLS_UC                    = 0x8847
+       ETH_P_PAE                        = 0x888e
+       ETH_P_PAUSE                      = 0x8808
+       ETH_P_PHONET                     = 0xf5
+       ETH_P_PPPTALK                    = 0x10
+       ETH_P_PPP_DISC                   = 0x8863
+       ETH_P_PPP_MP                     = 0x8
+       ETH_P_PPP_SES                    = 0x8864
+       ETH_P_PUP                        = 0x200
+       ETH_P_PUPAT                      = 0x201
+       ETH_P_QINQ1                      = 0x9100
+       ETH_P_QINQ2                      = 0x9200
+       ETH_P_QINQ3                      = 0x9300
+       ETH_P_RARP                       = 0x8035
+       ETH_P_SCA                        = 0x6007
+       ETH_P_SLOW                       = 0x8809
+       ETH_P_SNAP                       = 0x5
+       ETH_P_TDLS                       = 0x890d
+       ETH_P_TEB                        = 0x6558
+       ETH_P_TIPC                       = 0x88ca
+       ETH_P_TRAILER                    = 0x1c
+       ETH_P_TR_802_2                   = 0x11
+       ETH_P_WAN_PPP                    = 0x7
+       ETH_P_WCCP                       = 0x883e
+       ETH_P_X25                        = 0x805
+       EXTA                             = 0xe
+       EXTB                             = 0xf
+       EXTPROC                          = 0x10000
+       FD_CLOEXEC                       = 0x1
+       FD_SETSIZE                       = 0x400
+       FF0                              = 0x0
+       FF1                              = 0x8000
+       FFDLY                            = 0x8000
+       FLUSHO                           = 0x1000
+       F_DUPFD                          = 0x0
+       F_DUPFD_CLOEXEC                  = 0x406
+       F_EXLCK                          = 0x4
+       F_GETFD                          = 0x1
+       F_GETFL                          = 0x3
+       F_GETLEASE                       = 0x401
+       F_GETLK                          = 0xc
+       F_GETLK64                        = 0xc
+       F_GETOWN                         = 0x9
+       F_GETOWN_EX                      = 0x10
+       F_GETPIPE_SZ                     = 0x408
+       F_GETSIG                         = 0xb
+       F_LOCK                           = 0x1
+       F_NOTIFY                         = 0x402
+       F_OK                             = 0x0
+       F_RDLCK                          = 0x0
+       F_SETFD                          = 0x2
+       F_SETFL                          = 0x4
+       F_SETLEASE                       = 0x400
+       F_SETLK                          = 0xd
+       F_SETLK64                        = 0xd
+       F_SETLKW                         = 0xe
+       F_SETLKW64                       = 0xe
+       F_SETOWN                         = 0x8
+       F_SETOWN_EX                      = 0xf
+       F_SETPIPE_SZ                     = 0x407
+       F_SETSIG                         = 0xa
+       F_SHLCK                          = 0x8
+       F_TEST                           = 0x3
+       F_TLOCK                          = 0x2
+       F_ULOCK                          = 0x0
+       F_UNLCK                          = 0x2
+       F_WRLCK                          = 0x1
+       HUPCL                            = 0x400
+       IBSHIFT                          = 0x10
+       ICANON                           = 0x2
+       ICMPV6_FILTER                    = 0x1
+       ICRNL                            = 0x100
+       IEXTEN                           = 0x8000
+       IFA_F_DADFAILED                  = 0x8
+       IFA_F_DEPRECATED                 = 0x20
+       IFA_F_HOMEADDRESS                = 0x10
+       IFA_F_NODAD                      = 0x2
+       IFA_F_OPTIMISTIC                 = 0x4
+       IFA_F_PERMANENT                  = 0x80
+       IFA_F_SECONDARY                  = 0x1
+       IFA_F_TEMPORARY                  = 0x1
+       IFA_F_TENTATIVE                  = 0x40
+       IFA_MAX                          = 0x7
+       IFF_802_1Q_VLAN                  = 0x1
+       IFF_ALLMULTI                     = 0x200
+       IFF_AUTOMEDIA                    = 0x4000
+       IFF_BONDING                      = 0x20
+       IFF_BRIDGE_PORT                  = 0x4000
+       IFF_BROADCAST                    = 0x2
+       IFF_DEBUG                        = 0x4
+       IFF_DISABLE_NETPOLL              = 0x1000
+       IFF_DONT_BRIDGE                  = 0x800
+       IFF_DORMANT                      = 0x20000
+       IFF_DYNAMIC                      = 0x8000
+       IFF_EBRIDGE                      = 0x2
+       IFF_ECHO                         = 0x40000
+       IFF_ISATAP                       = 0x80
+       IFF_LOOPBACK                     = 0x8
+       IFF_LOWER_UP                     = 0x10000
+       IFF_MACVLAN_PORT                 = 0x2000
+       IFF_MASTER                       = 0x400
+       IFF_MASTER_8023AD                = 0x8
+       IFF_MASTER_ALB                   = 0x10
+       IFF_MASTER_ARPMON                = 0x100
+       IFF_MULTICAST                    = 0x1000
+       IFF_NOARP                        = 0x80
+       IFF_NOTRAILERS                   = 0x20
+       IFF_NO_PI                        = 0x1000
+       IFF_ONE_QUEUE                    = 0x2000
+       IFF_OVS_DATAPATH                 = 0x8000
+       IFF_POINTOPOINT                  = 0x10
+       IFF_PORTSEL                      = 0x2000
+       IFF_PROMISC                      = 0x100
+       IFF_RUNNING                      = 0x40
+       IFF_SLAVE                        = 0x800
+       IFF_SLAVE_INACTIVE               = 0x4
+       IFF_SLAVE_NEEDARP                = 0x40
+       IFF_TAP                          = 0x2
+       IFF_TUN                          = 0x1
+       IFF_TUN_EXCL                     = 0x8000
+       IFF_TX_SKB_SHARING               = 0x10000
+       IFF_UNICAST_FLT                  = 0x20000
+       IFF_UP                           = 0x1
+       IFF_VNET_HDR                     = 0x4000
+       IFF_VOLATILE                     = 0x70c5a
+       IFF_WAN_HDLC                     = 0x200
+       IFF_XMIT_DST_RELEASE             = 0x400
+       IFNAMSIZ                         = 0x10
+       IGNBRK                           = 0x1
+       IGNCR                            = 0x80
+       IGNPAR                           = 0x4
+       IMAXBEL                          = 0x2000
+       INLCR                            = 0x40
+       INPCK                            = 0x10
+       IN_ACCESS                        = 0x1
+       IN_ALL_EVENTS                    = 0xfff
+       IN_ATTRIB                        = 0x4
+       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_CLOEXEC                       = 0x80000
+       IN_CLOSE                         = 0x18
+       IN_CLOSE_NOWRITE                 = 0x10
+       IN_CLOSE_WRITE                   = 0x8
+       IN_CREATE                        = 0x100
+       IN_DELETE                        = 0x200
+       IN_DELETE_SELF                   = 0x400
+       IN_DONT_FOLLOW                   = 0x2000000
+       IN_EXCL_UNLINK                   = 0x4000000
+       IN_IGNORED                       = 0x8000
+       IN_ISDIR                         = 0x40000000
+       IN_LOOPBACKNET                   = 0x7f
+       IN_MASK_ADD                      = 0x20000000
+       IN_MODIFY                        = 0x2
+       IN_MOVE                          = 0xc0
+       IN_MOVED_FROM                    = 0x40
+       IN_MOVED_TO                      = 0x80
+       IN_MOVE_SELF                     = 0x800
+       IN_NONBLOCK                      = 0x800
+       IN_ONESHOT                       = 0x80000000
+       IN_ONLYDIR                       = 0x1000000
+       IN_OPEN                          = 0x20
+       IN_Q_OVERFLOW                    = 0x4000
+       IN_UNMOUNT                       = 0x2000
+       IPPROTO_AH                       = 0x33
+       IPPROTO_COMP                     = 0x6c
+       IPPROTO_DCCP                     = 0x21
+       IPPROTO_DSTOPTS                  = 0x3c
+       IPPROTO_EGP                      = 0x8
+       IPPROTO_ENCAP                    = 0x62
+       IPPROTO_ESP                      = 0x32
+       IPPROTO_FRAGMENT                 = 0x2c
+       IPPROTO_GRE                      = 0x2f
+       IPPROTO_HOPOPTS                  = 0x0
+       IPPROTO_ICMP                     = 0x1
+       IPPROTO_ICMPV6                   = 0x3a
+       IPPROTO_IDP                      = 0x16
+       IPPROTO_IGMP                     = 0x2
+       IPPROTO_IP                       = 0x0
+       IPPROTO_IPIP                     = 0x4
+       IPPROTO_IPV6                     = 0x29
+       IPPROTO_MTP                      = 0x5c
+       IPPROTO_NONE                     = 0x3b
+       IPPROTO_PIM                      = 0x67
+       IPPROTO_PUP                      = 0xc
+       IPPROTO_RAW                      = 0xff
+       IPPROTO_ROUTING                  = 0x2b
+       IPPROTO_RSVP                     = 0x2e
+       IPPROTO_SCTP                     = 0x84
+       IPPROTO_TCP                      = 0x6
+       IPPROTO_TP                       = 0x1d
+       IPPROTO_UDP                      = 0x11
+       IPPROTO_UDPLITE                  = 0x88
+       IPV6_2292DSTOPTS                 = 0x4
+       IPV6_2292HOPLIMIT                = 0x8
+       IPV6_2292HOPOPTS                 = 0x3
+       IPV6_2292PKTINFO                 = 0x2
+       IPV6_2292PKTOPTIONS              = 0x6
+       IPV6_2292RTHDR                   = 0x5
+       IPV6_ADDRFORM                    = 0x1
+       IPV6_ADD_MEMBERSHIP              = 0x14
+       IPV6_AUTHHDR                     = 0xa
+       IPV6_CHECKSUM                    = 0x7
+       IPV6_DROP_MEMBERSHIP             = 0x15
+       IPV6_DSTOPTS                     = 0x3b
+       IPV6_HOPLIMIT                    = 0x34
+       IPV6_HOPOPTS                     = 0x36
+       IPV6_IPSEC_POLICY                = 0x22
+       IPV6_JOIN_ANYCAST                = 0x1b
+       IPV6_JOIN_GROUP                  = 0x14
+       IPV6_LEAVE_ANYCAST               = 0x1c
+       IPV6_LEAVE_GROUP                 = 0x15
+       IPV6_MTU                         = 0x18
+       IPV6_MTU_DISCOVER                = 0x17
+       IPV6_MULTICAST_HOPS              = 0x12
+       IPV6_MULTICAST_IF                = 0x11
+       IPV6_MULTICAST_LOOP              = 0x13
+       IPV6_NEXTHOP                     = 0x9
+       IPV6_PKTINFO                     = 0x32
+       IPV6_PMTUDISC_DO                 = 0x2
+       IPV6_PMTUDISC_DONT               = 0x0
+       IPV6_PMTUDISC_PROBE              = 0x3
+       IPV6_PMTUDISC_WANT               = 0x1
+       IPV6_RECVDSTOPTS                 = 0x3a
+       IPV6_RECVERR                     = 0x19
+       IPV6_RECVHOPLIMIT                = 0x33
+       IPV6_RECVHOPOPTS                 = 0x35
+       IPV6_RECVPKTINFO                 = 0x31
+       IPV6_RECVRTHDR                   = 0x38
+       IPV6_RECVTCLASS                  = 0x42
+       IPV6_ROUTER_ALERT                = 0x16
+       IPV6_RTHDR                       = 0x39
+       IPV6_RTHDRDSTOPTS                = 0x37
+       IPV6_RTHDR_LOOSE                 = 0x0
+       IPV6_RTHDR_STRICT                = 0x1
+       IPV6_RTHDR_TYPE_0                = 0x0
+       IPV6_RXDSTOPTS                   = 0x3b
+       IPV6_RXHOPOPTS                   = 0x36
+       IPV6_TCLASS                      = 0x43
+       IPV6_UNICAST_HOPS                = 0x10
+       IPV6_V6ONLY                      = 0x1a
+       IPV6_XFRM_POLICY                 = 0x23
+       IP_ADD_MEMBERSHIP                = 0x23
+       IP_ADD_SOURCE_MEMBERSHIP         = 0x27
+       IP_BLOCK_SOURCE                  = 0x26
+       IP_DEFAULT_MULTICAST_LOOP        = 0x1
+       IP_DEFAULT_MULTICAST_TTL         = 0x1
+       IP_DF                            = 0x4000
+       IP_DROP_MEMBERSHIP               = 0x24
+       IP_DROP_SOURCE_MEMBERSHIP        = 0x28
+       IP_FREEBIND                      = 0xf
+       IP_HDRINCL                       = 0x3
+       IP_IPSEC_POLICY                  = 0x10
+       IP_MAXPACKET                     = 0xffff
+       IP_MAX_MEMBERSHIPS               = 0x14
+       IP_MF                            = 0x2000
+       IP_MINTTL                        = 0x15
+       IP_MSFILTER                      = 0x29
+       IP_MSS                           = 0x240
+       IP_MTU                           = 0xe
+       IP_MTU_DISCOVER                  = 0xa
+       IP_MULTICAST_ALL                 = 0x31
+       IP_MULTICAST_IF                  = 0x20
+       IP_MULTICAST_LOOP                = 0x22
+       IP_MULTICAST_TTL                 = 0x21
+       IP_OFFMASK                       = 0x1fff
+       IP_OPTIONS                       = 0x4
+       IP_ORIGDSTADDR                   = 0x14
+       IP_PASSSEC                       = 0x12
+       IP_PKTINFO                       = 0x8
+       IP_PKTOPTIONS                    = 0x9
+       IP_PMTUDISC                      = 0xa
+       IP_PMTUDISC_DO                   = 0x2
+       IP_PMTUDISC_DONT                 = 0x0
+       IP_PMTUDISC_PROBE                = 0x3
+       IP_PMTUDISC_WANT                 = 0x1
+       IP_RECVERR                       = 0xb
+       IP_RECVOPTS                      = 0x6
+       IP_RECVORIGDSTADDR               = 0x14
+       IP_RECVRETOPTS                   = 0x7
+       IP_RECVTOS                       = 0xd
+       IP_RECVTTL                       = 0xc
+       IP_RETOPTS                       = 0x7
+       IP_RF                            = 0x8000
+       IP_ROUTER_ALERT                  = 0x5
+       IP_TOS                           = 0x1
+       IP_TRANSPARENT                   = 0x13
+       IP_TTL                           = 0x2
+       IP_UNBLOCK_SOURCE                = 0x25
+       IP_XFRM_POLICY                   = 0x11
+       ISIG                             = 0x1
+       ISTRIP                           = 0x20
+       IUCLC                            = 0x200
+       IUTF8                            = 0x4000
+       IXANY                            = 0x800
+       IXOFF                            = 0x1000
+       IXON                             = 0x400
+       LINUX_REBOOT_CMD_CAD_OFF         = 0x0
+       LINUX_REBOOT_CMD_CAD_ON          = 0x89abcdef
+       LINUX_REBOOT_CMD_HALT            = 0xcdef0123
+       LINUX_REBOOT_CMD_KEXEC           = 0x45584543
+       LINUX_REBOOT_CMD_POWER_OFF       = 0x4321fedc
+       LINUX_REBOOT_CMD_RESTART         = 0x1234567
+       LINUX_REBOOT_CMD_RESTART2        = 0xa1b2c3d4
+       LINUX_REBOOT_CMD_SW_SUSPEND      = 0xd000fce2
+       LINUX_REBOOT_MAGIC1              = 0xfee1dead
+       LINUX_REBOOT_MAGIC2              = 0x28121969
+       LOCK_EX                          = 0x2
+       LOCK_NB                          = 0x4
+       LOCK_SH                          = 0x1
+       LOCK_UN                          = 0x8
+       MADV_DOFORK                      = 0xb
+       MADV_DONTFORK                    = 0xa
+       MADV_DONTNEED                    = 0x4
+       MADV_HUGEPAGE                    = 0xe
+       MADV_HWPOISON                    = 0x64
+       MADV_MERGEABLE                   = 0xc
+       MADV_NOHUGEPAGE                  = 0xf
+       MADV_NORMAL                      = 0x0
+       MADV_RANDOM                      = 0x1
+       MADV_REMOVE                      = 0x9
+       MADV_SEQUENTIAL                  = 0x2
+       MADV_UNMERGEABLE                 = 0xd
+       MADV_WILLNEED                    = 0x3
+       MAP_32BIT                        = 0x40
+       MAP_ANON                         = 0x20
+       MAP_ANONYMOUS                    = 0x20
+       MAP_DENYWRITE                    = 0x800
+       MAP_EXECUTABLE                   = 0x1000
+       MAP_FILE                         = 0x0
+       MAP_FIXED                        = 0x10
+       MAP_GROWSDOWN                    = 0x100
+       MAP_HUGETLB                      = 0x40000
+       MAP_LOCKED                       = 0x2000
+       MAP_NONBLOCK                     = 0x10000
+       MAP_NORESERVE                    = 0x4000
+       MAP_POPULATE                     = 0x8000
+       MAP_PRIVATE                      = 0x2
+       MAP_SHARED                       = 0x1
+       MAP_STACK                        = 0x20000
+       MAP_TYPE                         = 0xf
+       MCL_CURRENT                      = 0x1
+       MCL_FUTURE                       = 0x2
+       MNT_DETACH                       = 0x2
+       MNT_EXPIRE                       = 0x4
+       MNT_FORCE                        = 0x1
+       MSG_CMSG_CLOEXEC                 = 0x40000000
+       MSG_CONFIRM                      = 0x800
+       MSG_CTRUNC                       = 0x8
+       MSG_DONTROUTE                    = 0x4
+       MSG_DONTWAIT                     = 0x40
+       MSG_EOR                          = 0x80
+       MSG_ERRQUEUE                     = 0x2000
+       MSG_FASTOPEN                     = 0x20000000
+       MSG_FIN                          = 0x200
+       MSG_MORE                         = 0x8000
+       MSG_NOSIGNAL                     = 0x4000
+       MSG_OOB                          = 0x1
+       MSG_PEEK                         = 0x2
+       MSG_PROXY                        = 0x10
+       MSG_RST                          = 0x1000
+       MSG_SYN                          = 0x400
+       MSG_TRUNC                        = 0x20
+       MSG_TRYHARD                      = 0x4
+       MSG_WAITALL                      = 0x100
+       MSG_WAITFORONE                   = 0x10000
+       MS_ACTIVE                        = 0x40000000
+       MS_ASYNC                         = 0x1
+       MS_BIND                          = 0x1000
+       MS_DIRSYNC                       = 0x80
+       MS_INVALIDATE                    = 0x2
+       MS_I_VERSION                     = 0x800000
+       MS_KERNMOUNT                     = 0x400000
+       MS_MANDLOCK                      = 0x40
+       MS_MGC_MSK                       = 0xffff0000
+       MS_MGC_VAL                       = 0xc0ed0000
+       MS_MOVE                          = 0x2000
+       MS_NOATIME                       = 0x400
+       MS_NODEV                         = 0x4
+       MS_NODIRATIME                    = 0x800
+       MS_NOEXEC                        = 0x8
+       MS_NOSUID                        = 0x2
+       MS_NOUSER                        = -0x80000000
+       MS_POSIXACL                      = 0x10000
+       MS_PRIVATE                       = 0x40000
+       MS_RDONLY                        = 0x1
+       MS_REC                           = 0x4000
+       MS_RELATIME                      = 0x200000
+       MS_REMOUNT                       = 0x20
+       MS_RMT_MASK                      = 0x800051
+       MS_SHARED                        = 0x100000
+       MS_SILENT                        = 0x8000
+       MS_SLAVE                         = 0x80000
+       MS_STRICTATIME                   = 0x1000000
+       MS_SYNC                          = 0x4
+       MS_SYNCHRONOUS                   = 0x10
+       MS_UNBINDABLE                    = 0x20000
+       NAME_MAX                         = 0xff
+       NETLINK_ADD_MEMBERSHIP           = 0x1
+       NETLINK_AUDIT                    = 0x9
+       NETLINK_BROADCAST_ERROR          = 0x4
+       NETLINK_CONNECTOR                = 0xb
+       NETLINK_CRYPTO                   = 0x15
+       NETLINK_DNRTMSG                  = 0xe
+       NETLINK_DROP_MEMBERSHIP          = 0x2
+       NETLINK_ECRYPTFS                 = 0x13
+       NETLINK_FIB_LOOKUP               = 0xa
+       NETLINK_FIREWALL                 = 0x3
+       NETLINK_GENERIC                  = 0x10
+       NETLINK_INET_DIAG                = 0x4
+       NETLINK_IP6_FW                   = 0xd
+       NETLINK_ISCSI                    = 0x8
+       NETLINK_KOBJECT_UEVENT           = 0xf
+       NETLINK_NETFILTER                = 0xc
+       NETLINK_NFLOG                    = 0x5
+       NETLINK_NO_ENOBUFS               = 0x5
+       NETLINK_PKTINFO                  = 0x3
+       NETLINK_RDMA                     = 0x14
+       NETLINK_ROUTE                    = 0x0
+       NETLINK_SCSITRANSPORT            = 0x12
+       NETLINK_SELINUX                  = 0x7
+       NETLINK_UNUSED                   = 0x1
+       NETLINK_USERSOCK                 = 0x2
+       NETLINK_XFRM                     = 0x6
+       NL0                              = 0x0
+       NL1                              = 0x100
+       NLA_ALIGNTO                      = 0x4
+       NLA_F_NESTED                     = 0x8000
+       NLA_F_NET_BYTEORDER              = 0x4000
+       NLA_HDRLEN                       = 0x4
+       NLDLY                            = 0x100
+       NLMSG_ALIGNTO                    = 0x4
+       NLMSG_DONE                       = 0x3
+       NLMSG_ERROR                      = 0x2
+       NLMSG_HDRLEN                     = 0x10
+       NLMSG_MIN_TYPE                   = 0x10
+       NLMSG_NOOP                       = 0x1
+       NLMSG_OVERRUN                    = 0x4
+       NLM_F_ACK                        = 0x4
+       NLM_F_APPEND                     = 0x800
+       NLM_F_ATOMIC                     = 0x400
+       NLM_F_CREATE                     = 0x400
+       NLM_F_DUMP                       = 0x300
+       NLM_F_DUMP_INTR                  = 0x10
+       NLM_F_ECHO                       = 0x8
+       NLM_F_EXCL                       = 0x200
+       NLM_F_MATCH                      = 0x200
+       NLM_F_MULTI                      = 0x2
+       NLM_F_REPLACE                    = 0x100
+       NLM_F_REQUEST                    = 0x1
+       NLM_F_ROOT                       = 0x100
+       NOFLSH                           = 0x80
+       OCRNL                            = 0x8
+       OFDEL                            = 0x80
+       OFILL                            = 0x40
+       OLCUC                            = 0x2
+       ONLCR                            = 0x4
+       ONLRET                           = 0x20
+       ONOCR                            = 0x10
+       OPOST                            = 0x1
+       O_ACCMODE                        = 0x3
+       O_APPEND                         = 0x400
+       O_ASYNC                          = 0x2000
+       O_CLOEXEC                        = 0x80000
+       O_CREAT                          = 0x40
+       O_DIRECT                         = 0x4000
+       O_DIRECTORY                      = 0x10000
+       O_DSYNC                          = 0x1000
+       O_EXCL                           = 0x80
+       O_FSYNC                          = 0x101000
+       O_LARGEFILE                      = 0x8000
+       O_NDELAY                         = 0x800
+       O_NOATIME                        = 0x40000
+       O_NOCTTY                         = 0x100
+       O_NOFOLLOW                       = 0x20000
+       O_NONBLOCK                       = 0x800
+       O_PATH                           = 0x200000
+       O_RDONLY                         = 0x0
+       O_RDWR                           = 0x2
+       O_RSYNC                          = 0x101000
+       O_SYNC                           = 0x101000
+       O_TRUNC                          = 0x200
+       O_WRONLY                         = 0x1
+       PACKET_ADD_MEMBERSHIP            = 0x1
+       PACKET_AUXDATA                   = 0x8
+       PACKET_BROADCAST                 = 0x1
+       PACKET_COPY_THRESH               = 0x7
+       PACKET_DROP_MEMBERSHIP           = 0x2
+       PACKET_FANOUT                    = 0x12
+       PACKET_FANOUT_CPU                = 0x2
+       PACKET_FANOUT_FLAG_DEFRAG        = 0x8000
+       PACKET_FANOUT_HASH               = 0x0
+       PACKET_FANOUT_LB                 = 0x1
+       PACKET_FASTROUTE                 = 0x6
+       PACKET_HDRLEN                    = 0xb
+       PACKET_HOST                      = 0x0
+       PACKET_LOOPBACK                  = 0x5
+       PACKET_LOSS                      = 0xe
+       PACKET_MR_ALLMULTI               = 0x2
+       PACKET_MR_MULTICAST              = 0x0
+       PACKET_MR_PROMISC                = 0x1
+       PACKET_MR_UNICAST                = 0x3
+       PACKET_MULTICAST                 = 0x2
+       PACKET_ORIGDEV                   = 0x9
+       PACKET_OTHERHOST                 = 0x3
+       PACKET_OUTGOING                  = 0x4
+       PACKET_RECV_OUTPUT               = 0x3
+       PACKET_RESERVE                   = 0xc
+       PACKET_RX_RING                   = 0x5
+       PACKET_STATISTICS                = 0x6
+       PACKET_TIMESTAMP                 = 0x11
+       PACKET_TX_RING                   = 0xd
+       PACKET_TX_TIMESTAMP              = 0x10
+       PACKET_VERSION                   = 0xa
+       PACKET_VNET_HDR                  = 0xf
+       PARENB                           = 0x100
+       PARITY_CRC16_PR0                 = 0x2
+       PARITY_CRC16_PR0_CCITT           = 0x4
+       PARITY_CRC16_PR1                 = 0x3
+       PARITY_CRC16_PR1_CCITT           = 0x5
+       PARITY_CRC32_PR0_CCITT           = 0x6
+       PARITY_CRC32_PR1_CCITT           = 0x7
+       PARITY_DEFAULT                   = 0x0
+       PARITY_NONE                      = 0x1
+       PARMRK                           = 0x8
+       PARODD                           = 0x200
+       PENDIN                           = 0x4000
+       PRIO_PGRP                        = 0x1
+       PRIO_PROCESS                     = 0x0
+       PRIO_USER                        = 0x2
+       PROT_EXEC                        = 0x4
+       PROT_GROWSDOWN                   = 0x1000000
+       PROT_GROWSUP                     = 0x2000000
+       PROT_NONE                        = 0x0
+       PROT_READ                        = 0x1
+       PROT_WRITE                       = 0x2
+       PR_CAPBSET_DROP                  = 0x18
+       PR_CAPBSET_READ                  = 0x17
+       PR_ENDIAN_BIG                    = 0x0
+       PR_ENDIAN_LITTLE                 = 0x1
+       PR_ENDIAN_PPC_LITTLE             = 0x2
+       PR_FPEMU_NOPRINT                 = 0x1
+       PR_FPEMU_SIGFPE                  = 0x2
+       PR_FP_EXC_ASYNC                  = 0x2
+       PR_FP_EXC_DISABLED               = 0x0
+       PR_FP_EXC_DIV                    = 0x10000
+       PR_FP_EXC_INV                    = 0x100000
+       PR_FP_EXC_NONRECOV               = 0x1
+       PR_FP_EXC_OVF                    = 0x20000
+       PR_FP_EXC_PRECISE                = 0x3
+       PR_FP_EXC_RES                    = 0x80000
+       PR_FP_EXC_SW_ENABLE              = 0x80
+       PR_FP_EXC_UND                    = 0x40000
+       PR_GET_DUMPABLE                  = 0x3
+       PR_GET_ENDIAN                    = 0x13
+       PR_GET_FPEMU                     = 0x9
+       PR_GET_FPEXC                     = 0xb
+       PR_GET_KEEPCAPS                  = 0x7
+       PR_GET_NAME                      = 0x10
+       PR_GET_NO_NEW_PRIVS              = 0x27
+       PR_GET_PDEATHSIG                 = 0x2
+       PR_GET_SECCOMP                   = 0x15
+       PR_GET_SECUREBITS                = 0x1b
+       PR_GET_TIMERSLACK                = 0x1e
+       PR_GET_TIMING                    = 0xd
+       PR_GET_TSC                       = 0x19
+       PR_GET_UNALIGN                   = 0x5
+       PR_MCE_KILL                      = 0x21
+       PR_MCE_KILL_CLEAR                = 0x0
+       PR_MCE_KILL_DEFAULT              = 0x2
+       PR_MCE_KILL_EARLY                = 0x1
+       PR_MCE_KILL_GET                  = 0x22
+       PR_MCE_KILL_LATE                 = 0x0
+       PR_MCE_KILL_SET                  = 0x1
+       PR_SET_DUMPABLE                  = 0x4
+       PR_SET_ENDIAN                    = 0x14
+       PR_SET_FPEMU                     = 0xa
+       PR_SET_FPEXC                     = 0xc
+       PR_SET_KEEPCAPS                  = 0x8
+       PR_SET_MM                        = 0x23
+       PR_SET_MM_BRK                    = 0x7
+       PR_SET_MM_END_CODE               = 0x2
+       PR_SET_MM_END_DATA               = 0x4
+       PR_SET_MM_START_BRK              = 0x6
+       PR_SET_MM_START_CODE             = 0x1
+       PR_SET_MM_START_DATA             = 0x3
+       PR_SET_MM_START_STACK            = 0x5
+       PR_SET_NAME                      = 0xf
+       PR_SET_NO_NEW_PRIVS              = 0x26
+       PR_SET_PDEATHSIG                 = 0x1
+       PR_SET_PTRACER                   = 0x59616d61
+       PR_SET_PTRACER_ANY               = 0xffffffff
+       PR_SET_SECCOMP                   = 0x16
+       PR_SET_SECUREBITS                = 0x1c
+       PR_SET_TIMERSLACK                = 0x1d
+       PR_SET_TIMING                    = 0xe
+       PR_SET_TSC                       = 0x1a
+       PR_SET_UNALIGN                   = 0x6
+       PR_TASK_PERF_EVENTS_DISABLE      = 0x1f
+       PR_TASK_PERF_EVENTS_ENABLE       = 0x20
+       PR_TIMING_STATISTICAL            = 0x0
+       PR_TIMING_TIMESTAMP              = 0x1
+       PR_TSC_ENABLE                    = 0x1
+       PR_TSC_SIGSEGV                   = 0x2
+       PR_UNALIGN_NOPRINT               = 0x1
+       PR_UNALIGN_SIGBUS                = 0x2
+       PTRACE_ATTACH                    = 0x10
+       PTRACE_CONT                      = 0x7
+       PTRACE_DETACH                    = 0x11
+       PTRACE_EVENT_CLONE               = 0x3
+       PTRACE_EVENT_EXEC                = 0x4
+       PTRACE_EVENT_EXIT                = 0x6
+       PTRACE_EVENT_FORK                = 0x1
+       PTRACE_EVENT_SECCOMP             = 0x7
+       PTRACE_EVENT_STOP                = 0x80
+       PTRACE_EVENT_VFORK               = 0x2
+       PTRACE_EVENT_VFORK_DONE          = 0x5
+       PTRACE_GETEVENTMSG               = 0x4201
+       PTRACE_GETFPREGS                 = 0xe
+       PTRACE_GETFPXREGS                = 0x12
+       PTRACE_GETREGS                   = 0xc
+       PTRACE_GETREGSET                 = 0x4204
+       PTRACE_GETSIGINFO                = 0x4202
+       PTRACE_GET_THREAD_AREA           = 0x19
+       PTRACE_INTERRUPT                 = 0x4207
+       PTRACE_KILL                      = 0x8
+       PTRACE_LISTEN                    = 0x4208
+       PTRACE_OLDSETOPTIONS             = 0x15
+       PTRACE_O_MASK                    = 0xff
+       PTRACE_O_TRACECLONE              = 0x8
+       PTRACE_O_TRACEEXEC               = 0x10
+       PTRACE_O_TRACEEXIT               = 0x40
+       PTRACE_O_TRACEFORK               = 0x2
+       PTRACE_O_TRACESECCOMP            = 0x80
+       PTRACE_O_TRACESYSGOOD            = 0x1
+       PTRACE_O_TRACEVFORK              = 0x4
+       PTRACE_O_TRACEVFORKDONE          = 0x20
+       PTRACE_PEEKDATA                  = 0x2
+       PTRACE_PEEKTEXT                  = 0x1
+       PTRACE_PEEKUSR                   = 0x3
+       PTRACE_POKEDATA                  = 0x5
+       PTRACE_POKETEXT                  = 0x4
+       PTRACE_POKEUSR                   = 0x6
+       PTRACE_SEIZE                     = 0x4206
+       PTRACE_SEIZE_DEVEL               = 0x80000000
+       PTRACE_SETFPREGS                 = 0xf
+       PTRACE_SETFPXREGS                = 0x13
+       PTRACE_SETOPTIONS                = 0x4200
+       PTRACE_SETREGS                   = 0xd
+       PTRACE_SETREGSET                 = 0x4205
+       PTRACE_SETSIGINFO                = 0x4203
+       PTRACE_SET_THREAD_AREA           = 0x1a
+       PTRACE_SINGLEBLOCK               = 0x21
+       PTRACE_SINGLESTEP                = 0x9
+       PTRACE_SYSCALL                   = 0x18
+       PTRACE_SYSEMU                    = 0x1f
+       PTRACE_SYSEMU_SINGLESTEP         = 0x20
+       PTRACE_TRACEME                   = 0x0
+       RLIMIT_AS                        = 0x9
+       RLIMIT_CORE                      = 0x4
+       RLIMIT_CPU                       = 0x0
+       RLIMIT_DATA                      = 0x2
+       RLIMIT_FSIZE                     = 0x1
+       RLIMIT_NOFILE                    = 0x7
+       RLIMIT_STACK                     = 0x3
+       RLIM_INFINITY                    = -0x1
+       RTAX_ADVMSS                      = 0x8
+       RTAX_CWND                        = 0x7
+       RTAX_FEATURES                    = 0xc
+       RTAX_FEATURE_ALLFRAG             = 0x8
+       RTAX_FEATURE_ECN                 = 0x1
+       RTAX_FEATURE_SACK                = 0x2
+       RTAX_FEATURE_TIMESTAMP           = 0x4
+       RTAX_HOPLIMIT                    = 0xa
+       RTAX_INITCWND                    = 0xb
+       RTAX_INITRWND                    = 0xe
+       RTAX_LOCK                        = 0x1
+       RTAX_MAX                         = 0xe
+       RTAX_MTU                         = 0x2
+       RTAX_REORDERING                  = 0x9
+       RTAX_RTO_MIN                     = 0xd
+       RTAX_RTT                         = 0x4
+       RTAX_RTTVAR                      = 0x5
+       RTAX_SSTHRESH                    = 0x6
+       RTAX_UNSPEC                      = 0x0
+       RTAX_WINDOW                      = 0x3
+       RTA_ALIGNTO                      = 0x4
+       RTA_MAX                          = 0x10
+       RTCF_DIRECTSRC                   = 0x4000000
+       RTCF_DOREDIRECT                  = 0x1000000
+       RTCF_LOG                         = 0x2000000
+       RTCF_MASQ                        = 0x400000
+       RTCF_NAT                         = 0x800000
+       RTCF_VALVE                       = 0x200000
+       RTF_ADDRCLASSMASK                = 0xf8000000
+       RTF_ADDRCONF                     = 0x40000
+       RTF_ALLONLINK                    = 0x20000
+       RTF_BROADCAST                    = 0x10000000
+       RTF_CACHE                        = 0x1000000
+       RTF_DEFAULT                      = 0x10000
+       RTF_DYNAMIC                      = 0x10
+       RTF_FLOW                         = 0x2000000
+       RTF_GATEWAY                      = 0x2
+       RTF_HOST                         = 0x4
+       RTF_INTERFACE                    = 0x40000000
+       RTF_IRTT                         = 0x100
+       RTF_LINKRT                       = 0x100000
+       RTF_LOCAL                        = 0x80000000
+       RTF_MODIFIED                     = 0x20
+       RTF_MSS                          = 0x40
+       RTF_MTU                          = 0x40
+       RTF_MULTICAST                    = 0x20000000
+       RTF_NAT                          = 0x8000000
+       RTF_NOFORWARD                    = 0x1000
+       RTF_NONEXTHOP                    = 0x200000
+       RTF_NOPMTUDISC                   = 0x4000
+       RTF_POLICY                       = 0x4000000
+       RTF_REINSTATE                    = 0x8
+       RTF_REJECT                       = 0x200
+       RTF_STATIC                       = 0x400
+       RTF_THROW                        = 0x2000
+       RTF_UP                           = 0x1
+       RTF_WINDOW                       = 0x80
+       RTF_XRESOLVE                     = 0x800
+       RTM_BASE                         = 0x10
+       RTM_DELACTION                    = 0x31
+       RTM_DELADDR                      = 0x15
+       RTM_DELADDRLABEL                 = 0x49
+       RTM_DELLINK                      = 0x11
+       RTM_DELNEIGH                     = 0x1d
+       RTM_DELQDISC                     = 0x25
+       RTM_DELROUTE                     = 0x19
+       RTM_DELRULE                      = 0x21
+       RTM_DELTCLASS                    = 0x29
+       RTM_DELTFILTER                   = 0x2d
+       RTM_F_CLONED                     = 0x200
+       RTM_F_EQUALIZE                   = 0x400
+       RTM_F_NOTIFY                     = 0x100
+       RTM_F_PREFIX                     = 0x800
+       RTM_GETACTION                    = 0x32
+       RTM_GETADDR                      = 0x16
+       RTM_GETADDRLABEL                 = 0x4a
+       RTM_GETANYCAST                   = 0x3e
+       RTM_GETDCB                       = 0x4e
+       RTM_GETLINK                      = 0x12
+       RTM_GETMULTICAST                 = 0x3a
+       RTM_GETNEIGH                     = 0x1e
+       RTM_GETNEIGHTBL                  = 0x42
+       RTM_GETQDISC                     = 0x26
+       RTM_GETROUTE                     = 0x1a
+       RTM_GETRULE                      = 0x22
+       RTM_GETTCLASS                    = 0x2a
+       RTM_GETTFILTER                   = 0x2e
+       RTM_MAX                          = 0x4f
+       RTM_NEWACTION                    = 0x30
+       RTM_NEWADDR                      = 0x14
+       RTM_NEWADDRLABEL                 = 0x48
+       RTM_NEWLINK                      = 0x10
+       RTM_NEWNDUSEROPT                 = 0x44
+       RTM_NEWNEIGH                     = 0x1c
+       RTM_NEWNEIGHTBL                  = 0x40
+       RTM_NEWPREFIX                    = 0x34
+       RTM_NEWQDISC                     = 0x24
+       RTM_NEWROUTE                     = 0x18
+       RTM_NEWRULE                      = 0x20
+       RTM_NEWTCLASS                    = 0x28
+       RTM_NEWTFILTER                   = 0x2c
+       RTM_NR_FAMILIES                  = 0x10
+       RTM_NR_MSGTYPES                  = 0x40
+       RTM_SETDCB                       = 0x4f
+       RTM_SETLINK                      = 0x13
+       RTM_SETNEIGHTBL                  = 0x43
+       RTNH_ALIGNTO                     = 0x4
+       RTNH_F_DEAD                      = 0x1
+       RTNH_F_ONLINK                    = 0x4
+       RTNH_F_PERVASIVE                 = 0x2
+       RTN_MAX                          = 0xb
+       RTPROT_BIRD                      = 0xc
+       RTPROT_BOOT                      = 0x3
+       RTPROT_DHCP                      = 0x10
+       RTPROT_DNROUTED                  = 0xd
+       RTPROT_GATED                     = 0x8
+       RTPROT_KERNEL                    = 0x2
+       RTPROT_MRT                       = 0xa
+       RTPROT_NTK                       = 0xf
+       RTPROT_RA                        = 0x9
+       RTPROT_REDIRECT                  = 0x1
+       RTPROT_STATIC                    = 0x4
+       RTPROT_UNSPEC                    = 0x0
+       RTPROT_XORP                      = 0xe
+       RTPROT_ZEBRA                     = 0xb
+       RT_CLASS_DEFAULT                 = 0xfd
+       RT_CLASS_LOCAL                   = 0xff
+       RT_CLASS_MAIN                    = 0xfe
+       RT_CLASS_MAX                     = 0xff
+       RT_CLASS_UNSPEC                  = 0x0
+       RUSAGE_CHILDREN                  = -0x1
+       RUSAGE_SELF                      = 0x0
+       RUSAGE_THREAD                    = 0x1
+       SCM_CREDENTIALS                  = 0x2
+       SCM_RIGHTS                       = 0x1
+       SCM_TIMESTAMP                    = 0x1d
+       SCM_TIMESTAMPING                 = 0x25
+       SCM_TIMESTAMPNS                  = 0x23
+       SHUT_RD                          = 0x0
+       SHUT_RDWR                        = 0x2
+       SHUT_WR                          = 0x1
+       SIOCADDDLCI                      = 0x8980
+       SIOCADDMULTI                     = 0x8931
+       SIOCADDRT                        = 0x890b
+       SIOCATMARK                       = 0x8905
+       SIOCDARP                         = 0x8953
+       SIOCDELDLCI                      = 0x8981
+       SIOCDELMULTI                     = 0x8932
+       SIOCDELRT                        = 0x890c
+       SIOCDEVPRIVATE                   = 0x89f0
+       SIOCDIFADDR                      = 0x8936
+       SIOCDRARP                        = 0x8960
+       SIOCGARP                         = 0x8954
+       SIOCGIFADDR                      = 0x8915
+       SIOCGIFBR                        = 0x8940
+       SIOCGIFBRDADDR                   = 0x8919
+       SIOCGIFCONF                      = 0x8912
+       SIOCGIFCOUNT                     = 0x8938
+       SIOCGIFDSTADDR                   = 0x8917
+       SIOCGIFENCAP                     = 0x8925
+       SIOCGIFFLAGS                     = 0x8913
+       SIOCGIFHWADDR                    = 0x8927
+       SIOCGIFINDEX                     = 0x8933
+       SIOCGIFMAP                       = 0x8970
+       SIOCGIFMEM                       = 0x891f
+       SIOCGIFMETRIC                    = 0x891d
+       SIOCGIFMTU                       = 0x8921
+       SIOCGIFNAME                      = 0x8910
+       SIOCGIFNETMASK                   = 0x891b
+       SIOCGIFPFLAGS                    = 0x8935
+       SIOCGIFSLAVE                     = 0x8929
+       SIOCGIFTXQLEN                    = 0x8942
+       SIOCGPGRP                        = 0x8904
+       SIOCGRARP                        = 0x8961
+       SIOCGSTAMP                       = 0x8906
+       SIOCGSTAMPNS                     = 0x8907
+       SIOCPROTOPRIVATE                 = 0x89e0
+       SIOCRTMSG                        = 0x890d
+       SIOCSARP                         = 0x8955
+       SIOCSIFADDR                      = 0x8916
+       SIOCSIFBR                        = 0x8941
+       SIOCSIFBRDADDR                   = 0x891a
+       SIOCSIFDSTADDR                   = 0x8918
+       SIOCSIFENCAP                     = 0x8926
+       SIOCSIFFLAGS                     = 0x8914
+       SIOCSIFHWADDR                    = 0x8924
+       SIOCSIFHWBROADCAST               = 0x8937
+       SIOCSIFLINK                      = 0x8911
+       SIOCSIFMAP                       = 0x8971
+       SIOCSIFMEM                       = 0x8920
+       SIOCSIFMETRIC                    = 0x891e
+       SIOCSIFMTU                       = 0x8922
+       SIOCSIFNAME                      = 0x8923
+       SIOCSIFNETMASK                   = 0x891c
+       SIOCSIFPFLAGS                    = 0x8934
+       SIOCSIFSLAVE                     = 0x8930
+       SIOCSIFTXQLEN                    = 0x8943
+       SIOCSPGRP                        = 0x8902
+       SIOCSRARP                        = 0x8962
+       SOCK_CLOEXEC                     = 0x80000
+       SOCK_DCCP                        = 0x6
+       SOCK_DGRAM                       = 0x2
+       SOCK_NONBLOCK                    = 0x800
+       SOCK_PACKET                      = 0xa
+       SOCK_RAW                         = 0x3
+       SOCK_RDM                         = 0x4
+       SOCK_SEQPACKET                   = 0x5
+       SOCK_STREAM                      = 0x1
+       SOL_AAL                          = 0x109
+       SOL_ATM                          = 0x108
+       SOL_DECNET                       = 0x105
+       SOL_ICMPV6                       = 0x3a
+       SOL_IP                           = 0x0
+       SOL_IPV6                         = 0x29
+       SOL_IRDA                         = 0x10a
+       SOL_PACKET                       = 0x107
+       SOL_RAW                          = 0xff
+       SOL_SOCKET                       = 0x1
+       SOL_TCP                          = 0x6
+       SOL_X25                          = 0x106
+       SOMAXCONN                        = 0x80
+       SO_ACCEPTCONN                    = 0x1e
+       SO_ATTACH_FILTER                 = 0x1a
+       SO_BINDTODEVICE                  = 0x19
+       SO_BROADCAST                     = 0x6
+       SO_BSDCOMPAT                     = 0xe
+       SO_DEBUG                         = 0x1
+       SO_DETACH_FILTER                 = 0x1b
+       SO_DOMAIN                        = 0x27
+       SO_DONTROUTE                     = 0x5
+       SO_ERROR                         = 0x4
+       SO_KEEPALIVE                     = 0x9
+       SO_LINGER                        = 0xd
+       SO_MARK                          = 0x24
+       SO_NO_CHECK                      = 0xb
+       SO_OOBINLINE                     = 0xa
+       SO_PASSCRED                      = 0x10
+       SO_PASSSEC                       = 0x22
+       SO_PEERCRED                      = 0x11
+       SO_PEERNAME                      = 0x1c
+       SO_PEERSEC                       = 0x1f
+       SO_PRIORITY                      = 0xc
+       SO_PROTOCOL                      = 0x26
+       SO_RCVBUF                        = 0x8
+       SO_RCVBUFFORCE                   = 0x21
+       SO_RCVLOWAT                      = 0x12
+       SO_RCVTIMEO                      = 0x14
+       SO_REUSEADDR                     = 0x2
+       SO_RXQ_OVFL                      = 0x28
+       SO_SECURITY_AUTHENTICATION       = 0x16
+       SO_SECURITY_ENCRYPTION_NETWORK   = 0x18
+       SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
+       SO_SNDBUF                        = 0x7
+       SO_SNDBUFFORCE                   = 0x20
+       SO_SNDLOWAT                      = 0x13
+       SO_SNDTIMEO                      = 0x15
+       SO_TIMESTAMP                     = 0x1d
+       SO_TIMESTAMPING                  = 0x25
+       SO_TIMESTAMPNS                   = 0x23
+       SO_TYPE                          = 0x3
+       S_BLKSIZE                        = 0x200
+       S_IEXEC                          = 0x40
+       S_IFBLK                          = 0x6000
+       S_IFCHR                          = 0x2000
+       S_IFDIR                          = 0x4000
+       S_IFIFO                          = 0x1000
+       S_IFLNK                          = 0xa000
+       S_IFMT                           = 0xf000
+       S_IFREG                          = 0x8000
+       S_IFSOCK                         = 0xc000
+       S_IREAD                          = 0x100
+       S_IRGRP                          = 0x20
+       S_IROTH                          = 0x4
+       S_IRUSR                          = 0x100
+       S_IRWXG                          = 0x38
+       S_IRWXO                          = 0x7
+       S_IRWXU                          = 0x1c0
+       S_ISGID                          = 0x400
+       S_ISUID                          = 0x800
+       S_ISVTX                          = 0x200
+       S_IWGRP                          = 0x10
+       S_IWOTH                          = 0x2
+       S_IWRITE                         = 0x80
+       S_IWUSR                          = 0x80
+       S_IXGRP                          = 0x8
+       S_IXOTH                          = 0x1
+       S_IXUSR                          = 0x40
+       TAB0                             = 0x0
+       TAB1                             = 0x800
+       TAB2                             = 0x1000
+       TAB3                             = 0x1800
+       TABDLY                           = 0x1800
+       TCFLSH                           = 0x540b
+       TCGETA                           = 0x5405
+       TCGETS                           = 0x5401
+       TCGETS2                          = 0x802c542a
+       TCGETX                           = 0x5432
+       TCIFLUSH                         = 0x0
+       TCIOFF                           = 0x2
+       TCIOFLUSH                        = 0x2
+       TCION                            = 0x3
+       TCOFLUSH                         = 0x1
+       TCOOFF                           = 0x0
+       TCOON                            = 0x1
+       TCP_CONGESTION                   = 0xd
+       TCP_CORK                         = 0x3
+       TCP_DEFER_ACCEPT                 = 0x9
+       TCP_INFO                         = 0xb
+       TCP_KEEPCNT                      = 0x6
+       TCP_KEEPIDLE                     = 0x4
+       TCP_KEEPINTVL                    = 0x5
+       TCP_LINGER2                      = 0x8
+       TCP_MAXSEG                       = 0x2
+       TCP_MAXWIN                       = 0xffff
+       TCP_MAX_WINSHIFT                 = 0xe
+       TCP_MD5SIG                       = 0xe
+       TCP_MD5SIG_MAXKEYLEN             = 0x50
+       TCP_MSS                          = 0x200
+       TCP_NODELAY                      = 0x1
+       TCP_QUICKACK                     = 0xc
+       TCP_SYNCNT                       = 0x7
+       TCP_WINDOW_CLAMP                 = 0xa
+       TCSAFLUSH                        = 0x2
+       TCSBRK                           = 0x5409
+       TCSBRKP                          = 0x5425
+       TCSETA                           = 0x5406
+       TCSETAF                          = 0x5408
+       TCSETAW                          = 0x5407
+       TCSETS                           = 0x5402
+       TCSETS2                          = 0x402c542b
+       TCSETSF                          = 0x5404
+       TCSETSF2                         = 0x402c542d
+       TCSETSW                          = 0x5403
+       TCSETSW2                         = 0x402c542c
+       TCSETX                           = 0x5433
+       TCSETXF                          = 0x5434
+       TCSETXW                          = 0x5435
+       TCXONC                           = 0x540a
+       TIOCCBRK                         = 0x5428
+       TIOCCONS                         = 0x541d
+       TIOCEXCL                         = 0x540c
+       TIOCGDEV                         = 0x80045432
+       TIOCGETD                         = 0x5424
+       TIOCGEXCL                        = 0x80045440
+       TIOCGICOUNT                      = 0x545d
+       TIOCGLCKTRMIOS                   = 0x5456
+       TIOCGPGRP                        = 0x540f
+       TIOCGPKT                         = 0x80045438
+       TIOCGPTLCK                       = 0x80045439
+       TIOCGPTN                         = 0x80045430
+       TIOCGRS485                       = 0x542e
+       TIOCGSERIAL                      = 0x541e
+       TIOCGSID                         = 0x5429
+       TIOCGSOFTCAR                     = 0x5419
+       TIOCGWINSZ                       = 0x5413
+       TIOCINQ                          = 0x541b
+       TIOCLINUX                        = 0x541c
+       TIOCMBIC                         = 0x5417
+       TIOCMBIS                         = 0x5416
+       TIOCMGET                         = 0x5415
+       TIOCMIWAIT                       = 0x545c
+       TIOCMSET                         = 0x5418
+       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                        = 0x5422
+       TIOCNXCL                         = 0x540d
+       TIOCOUTQ                         = 0x5411
+       TIOCPKT                          = 0x5420
+       TIOCPKT_DATA                     = 0x0
+       TIOCPKT_DOSTOP                   = 0x20
+       TIOCPKT_FLUSHREAD                = 0x1
+       TIOCPKT_FLUSHWRITE               = 0x2
+       TIOCPKT_IOCTL                    = 0x40
+       TIOCPKT_NOSTOP                   = 0x10
+       TIOCPKT_START                    = 0x8
+       TIOCPKT_STOP                     = 0x4
+       TIOCSBRK                         = 0x5427
+       TIOCSCTTY                        = 0x540e
+       TIOCSERCONFIG                    = 0x5453
+       TIOCSERGETLSR                    = 0x5459
+       TIOCSERGETMULTI                  = 0x545a
+       TIOCSERGSTRUCT                   = 0x5458
+       TIOCSERGWILD                     = 0x5454
+       TIOCSERSETMULTI                  = 0x545b
+       TIOCSERSWILD                     = 0x5455
+       TIOCSER_TEMT                     = 0x1
+       TIOCSETD                         = 0x5423
+       TIOCSIG                          = 0x40045436
+       TIOCSLCKTRMIOS                   = 0x5457
+       TIOCSPGRP                        = 0x5410
+       TIOCSPTLCK                       = 0x40045431
+       TIOCSRS485                       = 0x542f
+       TIOCSSERIAL                      = 0x541f
+       TIOCSSOFTCAR                     = 0x541a
+       TIOCSTI                          = 0x5412
+       TIOCSWINSZ                       = 0x5414
+       TIOCVHANGUP                      = 0x5437
+       TOSTOP                           = 0x100
+       TUNATTACHFILTER                  = 0x400854d5
+       TUNDETACHFILTER                  = 0x400854d6
+       TUNGETFEATURES                   = 0x800454cf
+       TUNGETIFF                        = 0x800454d2
+       TUNGETSNDBUF                     = 0x800454d3
+       TUNGETVNETHDRSZ                  = 0x800454d7
+       TUNSETDEBUG                      = 0x400454c9
+       TUNSETGROUP                      = 0x400454ce
+       TUNSETIFF                        = 0x400454ca
+       TUNSETLINK                       = 0x400454cd
+       TUNSETNOCSUM                     = 0x400454c8
+       TUNSETOFFLOAD                    = 0x400454d0
+       TUNSETOWNER                      = 0x400454cc
+       TUNSETPERSIST                    = 0x400454cb
+       TUNSETSNDBUF                     = 0x400454d4
+       TUNSETTXFILTER                   = 0x400454d1
+       TUNSETVNETHDRSZ                  = 0x400454d8
+       VDISCARD                         = 0xd
+       VEOF                             = 0x4
+       VEOL                             = 0xb
+       VEOL2                            = 0x10
+       VERASE                           = 0x2
+       VINTR                            = 0x0
+       VKILL                            = 0x3
+       VLNEXT                           = 0xf
+       VMIN                             = 0x6
+       VQUIT                            = 0x1
+       VREPRINT                         = 0xc
+       VSTART                           = 0x8
+       VSTOP                            = 0x9
+       VSUSP                            = 0xa
+       VSWTC                            = 0x7
+       VT0                              = 0x0
+       VT1                              = 0x4000
+       VTDLY                            = 0x4000
+       VTIME                            = 0x5
+       VWERASE                          = 0xe
+       WALL                             = 0x40000000
+       WCLONE                           = 0x80000000
+       WCONTINUED                       = 0x8
+       WEXITED                          = 0x4
+       WNOHANG                          = 0x1
+       WNOTHREAD                        = 0x20000000
+       WNOWAIT                          = 0x1000000
+       WORDSIZE                         = 0x20
+       WSTOPPED                         = 0x2
+       WUNTRACED                        = 0x2
+       XCASE                            = 0x4
+       XTABS                            = 0x1800
+)
+
+// Errors
+const (
+       E2BIG           = syscall.Errno(0x7)
+       EACCES          = syscall.Errno(0xd)
+       EADDRINUSE      = syscall.Errno(0x62)
+       EADDRNOTAVAIL   = syscall.Errno(0x63)
+       EADV            = syscall.Errno(0x44)
+       EAFNOSUPPORT    = syscall.Errno(0x61)
+       EAGAIN          = syscall.Errno(0xb)
+       EALREADY        = syscall.Errno(0x72)
+       EBADE           = syscall.Errno(0x34)
+       EBADF           = syscall.Errno(0x9)
+       EBADFD          = syscall.Errno(0x4d)
+       EBADMSG         = syscall.Errno(0x4a)
+       EBADR           = syscall.Errno(0x35)
+       EBADRQC         = syscall.Errno(0x38)
+       EBADSLT         = syscall.Errno(0x39)
+       EBFONT          = syscall.Errno(0x3b)
+       EBUSY           = syscall.Errno(0x10)
+       ECANCELED       = syscall.Errno(0x7d)
+       ECHILD          = syscall.Errno(0xa)
+       ECHRNG          = syscall.Errno(0x2c)
+       ECOMM           = syscall.Errno(0x46)
+       ECONNABORTED    = syscall.Errno(0x67)
+       ECONNREFUSED    = syscall.Errno(0x6f)
+       ECONNRESET      = syscall.Errno(0x68)
+       EDEADLK         = syscall.Errno(0x23)
+       EDEADLOCK       = syscall.Errno(0x23)
+       EDESTADDRREQ    = syscall.Errno(0x59)
+       EDOM            = syscall.Errno(0x21)
+       EDOTDOT         = syscall.Errno(0x49)
+       EDQUOT          = syscall.Errno(0x7a)
+       EEXIST          = syscall.Errno(0x11)
+       EFAULT          = syscall.Errno(0xe)
+       EFBIG           = syscall.Errno(0x1b)
+       EHOSTDOWN       = syscall.Errno(0x70)
+       EHOSTUNREACH    = syscall.Errno(0x71)
+       EHWPOISON       = syscall.Errno(0x85)
+       EIDRM           = syscall.Errno(0x2b)
+       EILSEQ          = syscall.Errno(0x54)
+       EINPROGRESS     = syscall.Errno(0x73)
+       EINTR           = syscall.Errno(0x4)
+       EINVAL          = syscall.Errno(0x16)
+       EIO             = syscall.Errno(0x5)
+       EISCONN         = syscall.Errno(0x6a)
+       EISDIR          = syscall.Errno(0x15)
+       EISNAM          = syscall.Errno(0x78)
+       EKEYEXPIRED     = syscall.Errno(0x7f)
+       EKEYREJECTED    = syscall.Errno(0x81)
+       EKEYREVOKED     = syscall.Errno(0x80)
+       EL2HLT          = syscall.Errno(0x33)
+       EL2NSYNC        = syscall.Errno(0x2d)
+       EL3HLT          = syscall.Errno(0x2e)
+       EL3RST          = syscall.Errno(0x2f)
+       ELIBACC         = syscall.Errno(0x4f)
+       ELIBBAD         = syscall.Errno(0x50)
+       ELIBEXEC        = syscall.Errno(0x53)
+       ELIBMAX         = syscall.Errno(0x52)
+       ELIBSCN         = syscall.Errno(0x51)
+       ELNRNG          = syscall.Errno(0x30)
+       ELOOP           = syscall.Errno(0x28)
+       EMEDIUMTYPE     = syscall.Errno(0x7c)
+       EMFILE          = syscall.Errno(0x18)
+       EMLINK          = syscall.Errno(0x1f)
+       EMSGSIZE        = syscall.Errno(0x5a)
+       EMULTIHOP       = syscall.Errno(0x48)
+       ENAMETOOLONG    = syscall.Errno(0x24)
+       ENAVAIL         = syscall.Errno(0x77)
+       ENETDOWN        = syscall.Errno(0x64)
+       ENETRESET       = syscall.Errno(0x66)
+       ENETUNREACH     = syscall.Errno(0x65)
+       ENFILE          = syscall.Errno(0x17)
+       ENOANO          = syscall.Errno(0x37)
+       ENOBUFS         = syscall.Errno(0x69)
+       ENOCSI          = syscall.Errno(0x32)
+       ENODATA         = syscall.Errno(0x3d)
+       ENODEV          = syscall.Errno(0x13)
+       ENOENT          = syscall.Errno(0x2)
+       ENOEXEC         = syscall.Errno(0x8)
+       ENOKEY          = syscall.Errno(0x7e)
+       ENOLCK          = syscall.Errno(0x25)
+       ENOLINK         = syscall.Errno(0x43)
+       ENOMEDIUM       = syscall.Errno(0x7b)
+       ENOMEM          = syscall.Errno(0xc)
+       ENOMSG          = syscall.Errno(0x2a)
+       ENONET          = syscall.Errno(0x40)
+       ENOPKG          = syscall.Errno(0x41)
+       ENOPROTOOPT     = syscall.Errno(0x5c)
+       ENOSPC          = syscall.Errno(0x1c)
+       ENOSR           = syscall.Errno(0x3f)
+       ENOSTR          = syscall.Errno(0x3c)
+       ENOSYS          = syscall.Errno(0x26)
+       ENOTBLK         = syscall.Errno(0xf)
+       ENOTCONN        = syscall.Errno(0x6b)
+       ENOTDIR         = syscall.Errno(0x14)
+       ENOTEMPTY       = syscall.Errno(0x27)
+       ENOTNAM         = syscall.Errno(0x76)
+       ENOTRECOVERABLE = syscall.Errno(0x83)
+       ENOTSOCK        = syscall.Errno(0x58)
+       ENOTSUP         = syscall.Errno(0x5f)
+       ENOTTY          = syscall.Errno(0x19)
+       ENOTUNIQ        = syscall.Errno(0x4c)
+       ENXIO           = syscall.Errno(0x6)
+       EOPNOTSUPP      = syscall.Errno(0x5f)
+       EOVERFLOW       = syscall.Errno(0x4b)
+       EOWNERDEAD      = syscall.Errno(0x82)
+       EPERM           = syscall.Errno(0x1)
+       EPFNOSUPPORT    = syscall.Errno(0x60)
+       EPIPE           = syscall.Errno(0x20)
+       EPROTO          = syscall.Errno(0x47)
+       EPROTONOSUPPORT = syscall.Errno(0x5d)
+       EPROTOTYPE      = syscall.Errno(0x5b)
+       ERANGE          = syscall.Errno(0x22)
+       EREMCHG         = syscall.Errno(0x4e)
+       EREMOTE         = syscall.Errno(0x42)
+       EREMOTEIO       = syscall.Errno(0x79)
+       ERESTART        = syscall.Errno(0x55)
+       ERFKILL         = syscall.Errno(0x84)
+       EROFS           = syscall.Errno(0x1e)
+       ESHUTDOWN       = syscall.Errno(0x6c)
+       ESOCKTNOSUPPORT = syscall.Errno(0x5e)
+       ESPIPE          = syscall.Errno(0x1d)
+       ESRCH           = syscall.Errno(0x3)
+       ESRMNT          = syscall.Errno(0x45)
+       ESTALE          = syscall.Errno(0x74)
+       ESTRPIPE        = syscall.Errno(0x56)
+       ETIME           = syscall.Errno(0x3e)
+       ETIMEDOUT       = syscall.Errno(0x6e)
+       ETOOMANYREFS    = syscall.Errno(0x6d)
+       ETXTBSY         = syscall.Errno(0x1a)
+       EUCLEAN         = syscall.Errno(0x75)
+       EUNATCH         = syscall.Errno(0x31)
+       EUSERS          = syscall.Errno(0x57)
+       EWOULDBLOCK     = syscall.Errno(0xb)
+       EXDEV           = syscall.Errno(0x12)
+       EXFULL          = syscall.Errno(0x36)
+)
+
+// Signals
+const (
+       SIGABRT   = syscall.Signal(0x6)
+       SIGALRM   = syscall.Signal(0xe)
+       SIGBUS    = syscall.Signal(0x7)
+       SIGCHLD   = syscall.Signal(0x11)
+       SIGCLD    = syscall.Signal(0x11)
+       SIGCONT   = syscall.Signal(0x12)
+       SIGFPE    = syscall.Signal(0x8)
+       SIGHUP    = syscall.Signal(0x1)
+       SIGILL    = syscall.Signal(0x4)
+       SIGINT    = syscall.Signal(0x2)
+       SIGIO     = syscall.Signal(0x1d)
+       SIGIOT    = syscall.Signal(0x6)
+       SIGKILL   = syscall.Signal(0x9)
+       SIGPIPE   = syscall.Signal(0xd)
+       SIGPOLL   = syscall.Signal(0x1d)
+       SIGPROF   = syscall.Signal(0x1b)
+       SIGPWR    = syscall.Signal(0x1e)
+       SIGQUIT   = syscall.Signal(0x3)
+       SIGSEGV   = syscall.Signal(0xb)
+       SIGSTKFLT = syscall.Signal(0x10)
+       SIGSTOP   = syscall.Signal(0x13)
+       SIGSYS    = syscall.Signal(0x1f)
+       SIGTERM   = syscall.Signal(0xf)
+       SIGTRAP   = syscall.Signal(0x5)
+       SIGTSTP   = syscall.Signal(0x14)
+       SIGTTIN   = syscall.Signal(0x15)
+       SIGTTOU   = syscall.Signal(0x16)
+       SIGUNUSED = syscall.Signal(0x1f)
+       SIGURG    = syscall.Signal(0x17)
+       SIGUSR1   = syscall.Signal(0xa)
+       SIGUSR2   = syscall.Signal(0xc)
+       SIGVTALRM = syscall.Signal(0x1a)
+       SIGWINCH  = syscall.Signal(0x1c)
+       SIGXCPU   = syscall.Signal(0x18)
+       SIGXFSZ   = syscall.Signal(0x19)
+)
+
+// 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:   "no such device or address",
+       7:   "argument list too long",
+       8:   "exec format error",
+       9:   "bad file descriptor",
+       10:  "no child processes",
+       11:  "resource temporarily unavailable",
+       12:  "cannot allocate memory",
+       13:  "permission denied",
+       14:  "bad address",
+       15:  "block device required",
+       16:  "device or resource busy",
+       17:  "file exists",
+       18:  "invalid cross-device link",
+       19:  "no such 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:  "numerical result out of range",
+       35:  "resource deadlock avoided",
+       36:  "file name too long",
+       37:  "no locks available",
+       38:  "function not implemented",
+       39:  "directory not empty",
+       40:  "too many levels of symbolic links",
+       42:  "no message of desired type",
+       43:  "identifier removed",
+       44:  "channel number out of range",
+       45:  "level 2 not synchronized",
+       46:  "level 3 halted",
+       47:  "level 3 reset",
+       48:  "link number out of range",
+       49:  "protocol driver not attached",
+       50:  "no CSI structure available",
+       51:  "level 2 halted",
+       52:  "invalid exchange",
+       53:  "invalid request descriptor",
+       54:  "exchange full",
+       55:  "no anode",
+       56:  "invalid request code",
+       57:  "invalid slot",
+       59:  "bad font file format",
+       60:  "device not a stream",
+       61:  "no data available",
+       62:  "timer expired",
+       63:  "out of streams resources",
+       64:  "machine is not on the network",
+       65:  "package not installed",
+       66:  "object is remote",
+       67:  "link has been severed",
+       68:  "advertise error",
+       69:  "srmount error",
+       70:  "communication error on send",
+       71:  "protocol error",
+       72:  "multihop attempted",
+       73:  "RFS specific error",
+       74:  "bad message",
+       75:  "value too large for defined data type",
+       76:  "name not unique on network",
+       77:  "file descriptor in bad state",
+       78:  "remote address changed",
+       79:  "can not access a needed shared library",
+       80:  "accessing a corrupted shared library",
+       81:  ".lib section in a.out corrupted",
+       82:  "attempting to link in too many shared libraries",
+       83:  "cannot exec a shared library directly",
+       84:  "invalid or incomplete multibyte or wide character",
+       85:  "interrupted system call should be restarted",
+       86:  "streams pipe error",
+       87:  "too many users",
+       88:  "socket operation on non-socket",
+       89:  "destination address required",
+       90:  "message too long",
+       91:  "protocol wrong type for socket",
+       92:  "protocol not available",
+       93:  "protocol not supported",
+       94:  "socket type not supported",
+       95:  "operation not supported",
+       96:  "protocol family not supported",
+       97:  "address family not supported by protocol",
+       98:  "address already in use",
+       99:  "cannot assign requested address",
+       100: "network is down",
+       101: "network is unreachable",
+       102: "network dropped connection on reset",
+       103: "software caused connection abort",
+       104: "connection reset by peer",
+       105: "no buffer space available",
+       106: "transport endpoint is already connected",
+       107: "transport endpoint is not connected",
+       108: "cannot send after transport endpoint shutdown",
+       109: "too many references: cannot splice",
+       110: "connection timed out",
+       111: "connection refused",
+       112: "host is down",
+       113: "no route to host",
+       114: "operation already in progress",
+       115: "operation now in progress",
+       116: "stale NFS file handle",
+       117: "structure needs cleaning",
+       118: "not a XENIX named type file",
+       119: "no XENIX semaphores available",
+       120: "is a named type file",
+       121: "remote I/O error",
+       122: "disk quota exceeded",
+       123: "no medium found",
+       124: "wrong medium type",
+       125: "operation canceled",
+       126: "required key not available",
+       127: "key has expired",
+       128: "key has been revoked",
+       129: "key was rejected by service",
+       130: "owner died",
+       131: "state not recoverable",
+       132: "operation not possible due to RF-kill",
+       133: "unknown error 133",
+}
+
+// Signal table
+var signals = [...]string{
+       1:  "hangup",
+       2:  "interrupt",
+       3:  "quit",
+       4:  "illegal instruction",
+       5:  "trace/breakpoint trap",
+       6:  "aborted",
+       7:  "bus error",
+       8:  "floating point exception",
+       9:  "killed",
+       10: "user defined signal 1",
+       11: "segmentation fault",
+       12: "user defined signal 2",
+       13: "broken pipe",
+       14: "alarm clock",
+       15: "terminated",
+       16: "stack fault",
+       17: "child exited",
+       18: "continued",
+       19: "stopped (signal)",
+       20: "stopped",
+       21: "stopped (tty input)",
+       22: "stopped (tty output)",
+       23: "urgent I/O condition",
+       24: "CPU time limit exceeded",
+       25: "file size limit exceeded",
+       26: "virtual timer expired",
+       27: "profiling timer expired",
+       28: "window changed",
+       29: "I/O possible",
+       30: "power failure",
+       31: "bad system call",
+}
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go
new file mode 100644 (file)
index 0000000..b83fb40
--- /dev/null
@@ -0,0 +1,1818 @@
+// mkerrors.sh -m64
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m64 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+       AF_ALG                           = 0x26
+       AF_APPLETALK                     = 0x5
+       AF_ASH                           = 0x12
+       AF_ATMPVC                        = 0x8
+       AF_ATMSVC                        = 0x14
+       AF_AX25                          = 0x3
+       AF_BLUETOOTH                     = 0x1f
+       AF_BRIDGE                        = 0x7
+       AF_CAIF                          = 0x25
+       AF_CAN                           = 0x1d
+       AF_DECnet                        = 0xc
+       AF_ECONET                        = 0x13
+       AF_FILE                          = 0x1
+       AF_IEEE802154                    = 0x24
+       AF_INET                          = 0x2
+       AF_INET6                         = 0xa
+       AF_IPX                           = 0x4
+       AF_IRDA                          = 0x17
+       AF_ISDN                          = 0x22
+       AF_IUCV                          = 0x20
+       AF_KEY                           = 0xf
+       AF_LLC                           = 0x1a
+       AF_LOCAL                         = 0x1
+       AF_MAX                           = 0x28
+       AF_NETBEUI                       = 0xd
+       AF_NETLINK                       = 0x10
+       AF_NETROM                        = 0x6
+       AF_NFC                           = 0x27
+       AF_PACKET                        = 0x11
+       AF_PHONET                        = 0x23
+       AF_PPPOX                         = 0x18
+       AF_RDS                           = 0x15
+       AF_ROSE                          = 0xb
+       AF_ROUTE                         = 0x10
+       AF_RXRPC                         = 0x21
+       AF_SECURITY                      = 0xe
+       AF_SNA                           = 0x16
+       AF_TIPC                          = 0x1e
+       AF_UNIX                          = 0x1
+       AF_UNSPEC                        = 0x0
+       AF_WANPIPE                       = 0x19
+       AF_X25                           = 0x9
+       ARPHRD_ADAPT                     = 0x108
+       ARPHRD_APPLETLK                  = 0x8
+       ARPHRD_ARCNET                    = 0x7
+       ARPHRD_ASH                       = 0x30d
+       ARPHRD_ATM                       = 0x13
+       ARPHRD_AX25                      = 0x3
+       ARPHRD_BIF                       = 0x307
+       ARPHRD_CAIF                      = 0x336
+       ARPHRD_CAN                       = 0x118
+       ARPHRD_CHAOS                     = 0x5
+       ARPHRD_CISCO                     = 0x201
+       ARPHRD_CSLIP                     = 0x101
+       ARPHRD_CSLIP6                    = 0x103
+       ARPHRD_DDCMP                     = 0x205
+       ARPHRD_DLCI                      = 0xf
+       ARPHRD_ECONET                    = 0x30e
+       ARPHRD_EETHER                    = 0x2
+       ARPHRD_ETHER                     = 0x1
+       ARPHRD_EUI64                     = 0x1b
+       ARPHRD_FCAL                      = 0x311
+       ARPHRD_FCFABRIC                  = 0x313
+       ARPHRD_FCPL                      = 0x312
+       ARPHRD_FCPP                      = 0x310
+       ARPHRD_FDDI                      = 0x306
+       ARPHRD_FRAD                      = 0x302
+       ARPHRD_HDLC                      = 0x201
+       ARPHRD_HIPPI                     = 0x30c
+       ARPHRD_HWX25                     = 0x110
+       ARPHRD_IEEE1394                  = 0x18
+       ARPHRD_IEEE802                   = 0x6
+       ARPHRD_IEEE80211                 = 0x321
+       ARPHRD_IEEE80211_PRISM           = 0x322
+       ARPHRD_IEEE80211_RADIOTAP        = 0x323
+       ARPHRD_IEEE802154                = 0x324
+       ARPHRD_IEEE802_TR                = 0x320
+       ARPHRD_INFINIBAND                = 0x20
+       ARPHRD_IPDDP                     = 0x309
+       ARPHRD_IPGRE                     = 0x30a
+       ARPHRD_IRDA                      = 0x30f
+       ARPHRD_LAPB                      = 0x204
+       ARPHRD_LOCALTLK                  = 0x305
+       ARPHRD_LOOPBACK                  = 0x304
+       ARPHRD_METRICOM                  = 0x17
+       ARPHRD_NETROM                    = 0x0
+       ARPHRD_NONE                      = 0xfffe
+       ARPHRD_PHONET                    = 0x334
+       ARPHRD_PHONET_PIPE               = 0x335
+       ARPHRD_PIMREG                    = 0x30b
+       ARPHRD_PPP                       = 0x200
+       ARPHRD_PRONET                    = 0x4
+       ARPHRD_RAWHDLC                   = 0x206
+       ARPHRD_ROSE                      = 0x10e
+       ARPHRD_RSRVD                     = 0x104
+       ARPHRD_SIT                       = 0x308
+       ARPHRD_SKIP                      = 0x303
+       ARPHRD_SLIP                      = 0x100
+       ARPHRD_SLIP6                     = 0x102
+       ARPHRD_TUNNEL                    = 0x300
+       ARPHRD_TUNNEL6                   = 0x301
+       ARPHRD_VOID                      = 0xffff
+       ARPHRD_X25                       = 0x10f
+       B0                               = 0x0
+       B1000000                         = 0x1008
+       B110                             = 0x3
+       B115200                          = 0x1002
+       B1152000                         = 0x1009
+       B1200                            = 0x9
+       B134                             = 0x4
+       B150                             = 0x5
+       B1500000                         = 0x100a
+       B1800                            = 0xa
+       B19200                           = 0xe
+       B200                             = 0x6
+       B2000000                         = 0x100b
+       B230400                          = 0x1003
+       B2400                            = 0xb
+       B2500000                         = 0x100c
+       B300                             = 0x7
+       B3000000                         = 0x100d
+       B3500000                         = 0x100e
+       B38400                           = 0xf
+       B4000000                         = 0x100f
+       B460800                          = 0x1004
+       B4800                            = 0xc
+       B50                              = 0x1
+       B500000                          = 0x1005
+       B57600                           = 0x1001
+       B576000                          = 0x1006
+       B600                             = 0x8
+       B75                              = 0x2
+       B921600                          = 0x1007
+       B9600                            = 0xd
+       BOTHER                           = 0x1000
+       BPF_A                            = 0x10
+       BPF_ABS                          = 0x20
+       BPF_ADD                          = 0x0
+       BPF_ALU                          = 0x4
+       BPF_AND                          = 0x50
+       BPF_B                            = 0x10
+       BPF_DIV                          = 0x30
+       BPF_H                            = 0x8
+       BPF_IMM                          = 0x0
+       BPF_IND                          = 0x40
+       BPF_JA                           = 0x0
+       BPF_JEQ                          = 0x10
+       BPF_JGE                          = 0x30
+       BPF_JGT                          = 0x20
+       BPF_JMP                          = 0x5
+       BPF_JSET                         = 0x40
+       BPF_K                            = 0x0
+       BPF_LD                           = 0x0
+       BPF_LDX                          = 0x1
+       BPF_LEN                          = 0x80
+       BPF_LSH                          = 0x60
+       BPF_MAJOR_VERSION                = 0x1
+       BPF_MAXINSNS                     = 0x1000
+       BPF_MEM                          = 0x60
+       BPF_MEMWORDS                     = 0x10
+       BPF_MINOR_VERSION                = 0x1
+       BPF_MISC                         = 0x7
+       BPF_MSH                          = 0xa0
+       BPF_MUL                          = 0x20
+       BPF_NEG                          = 0x80
+       BPF_OR                           = 0x40
+       BPF_RET                          = 0x6
+       BPF_RSH                          = 0x70
+       BPF_ST                           = 0x2
+       BPF_STX                          = 0x3
+       BPF_SUB                          = 0x10
+       BPF_TAX                          = 0x0
+       BPF_TXA                          = 0x80
+       BPF_W                            = 0x0
+       BPF_X                            = 0x8
+       BRKINT                           = 0x2
+       BS0                              = 0x0
+       BS1                              = 0x2000
+       BSDLY                            = 0x2000
+       CBAUD                            = 0x100f
+       CBAUDEX                          = 0x1000
+       CFLUSH                           = 0xf
+       CIBAUD                           = 0x100f0000
+       CLOCAL                           = 0x800
+       CLOCK_BOOTTIME                   = 0x7
+       CLOCK_BOOTTIME_ALARM             = 0x9
+       CLOCK_DEFAULT                    = 0x0
+       CLOCK_EXT                        = 0x1
+       CLOCK_INT                        = 0x2
+       CLOCK_MONOTONIC                  = 0x1
+       CLOCK_MONOTONIC_COARSE           = 0x6
+       CLOCK_MONOTONIC_RAW              = 0x4
+       CLOCK_PROCESS_CPUTIME_ID         = 0x2
+       CLOCK_REALTIME                   = 0x0
+       CLOCK_REALTIME_ALARM             = 0x8
+       CLOCK_REALTIME_COARSE            = 0x5
+       CLOCK_THREAD_CPUTIME_ID          = 0x3
+       CLOCK_TXFROMRX                   = 0x4
+       CLOCK_TXINT                      = 0x3
+       CLONE_CHILD_CLEARTID             = 0x200000
+       CLONE_CHILD_SETTID               = 0x1000000
+       CLONE_DETACHED                   = 0x400000
+       CLONE_FILES                      = 0x400
+       CLONE_FS                         = 0x200
+       CLONE_IO                         = 0x80000000
+       CLONE_NEWIPC                     = 0x8000000
+       CLONE_NEWNET                     = 0x40000000
+       CLONE_NEWNS                      = 0x20000
+       CLONE_NEWPID                     = 0x20000000
+       CLONE_NEWUSER                    = 0x10000000
+       CLONE_NEWUTS                     = 0x4000000
+       CLONE_PARENT                     = 0x8000
+       CLONE_PARENT_SETTID              = 0x100000
+       CLONE_PTRACE                     = 0x2000
+       CLONE_SETTLS                     = 0x80000
+       CLONE_SIGHAND                    = 0x800
+       CLONE_SYSVSEM                    = 0x40000
+       CLONE_THREAD                     = 0x10000
+       CLONE_UNTRACED                   = 0x800000
+       CLONE_VFORK                      = 0x4000
+       CLONE_VM                         = 0x100
+       CMSPAR                           = 0x40000000
+       CR0                              = 0x0
+       CR1                              = 0x200
+       CR2                              = 0x400
+       CR3                              = 0x600
+       CRDLY                            = 0x600
+       CREAD                            = 0x80
+       CRTSCTS                          = 0x80000000
+       CS5                              = 0x0
+       CS6                              = 0x10
+       CS7                              = 0x20
+       CS8                              = 0x30
+       CSIGNAL                          = 0xff
+       CSIZE                            = 0x30
+       CSTART                           = 0x11
+       CSTATUS                          = 0x0
+       CSTOP                            = 0x13
+       CSTOPB                           = 0x40
+       CSUSP                            = 0x1a
+       DT_BLK                           = 0x6
+       DT_CHR                           = 0x2
+       DT_DIR                           = 0x4
+       DT_FIFO                          = 0x1
+       DT_LNK                           = 0xa
+       DT_REG                           = 0x8
+       DT_SOCK                          = 0xc
+       DT_UNKNOWN                       = 0x0
+       DT_WHT                           = 0xe
+       ECHO                             = 0x8
+       ECHOCTL                          = 0x200
+       ECHOE                            = 0x10
+       ECHOK                            = 0x20
+       ECHOKE                           = 0x800
+       ECHONL                           = 0x40
+       ECHOPRT                          = 0x400
+       ENCODING_DEFAULT                 = 0x0
+       ENCODING_FM_MARK                 = 0x3
+       ENCODING_FM_SPACE                = 0x4
+       ENCODING_MANCHESTER              = 0x5
+       ENCODING_NRZ                     = 0x1
+       ENCODING_NRZI                    = 0x2
+       EPOLLERR                         = 0x8
+       EPOLLET                          = 0x80000000
+       EPOLLHUP                         = 0x10
+       EPOLLIN                          = 0x1
+       EPOLLMSG                         = 0x400
+       EPOLLONESHOT                     = 0x40000000
+       EPOLLOUT                         = 0x4
+       EPOLLPRI                         = 0x2
+       EPOLLRDBAND                      = 0x80
+       EPOLLRDHUP                       = 0x2000
+       EPOLLRDNORM                      = 0x40
+       EPOLLWRBAND                      = 0x200
+       EPOLLWRNORM                      = 0x100
+       EPOLL_CLOEXEC                    = 0x80000
+       EPOLL_CTL_ADD                    = 0x1
+       EPOLL_CTL_DEL                    = 0x2
+       EPOLL_CTL_MOD                    = 0x3
+       EPOLL_NONBLOCK                   = 0x800
+       ETH_P_1588                       = 0x88f7
+       ETH_P_8021AD                     = 0x88a8
+       ETH_P_8021AH                     = 0x88e7
+       ETH_P_8021Q                      = 0x8100
+       ETH_P_802_2                      = 0x4
+       ETH_P_802_3                      = 0x1
+       ETH_P_AARP                       = 0x80f3
+       ETH_P_AF_IUCV                    = 0xfbfb
+       ETH_P_ALL                        = 0x3
+       ETH_P_AOE                        = 0x88a2
+       ETH_P_ARCNET                     = 0x1a
+       ETH_P_ARP                        = 0x806
+       ETH_P_ATALK                      = 0x809b
+       ETH_P_ATMFATE                    = 0x8884
+       ETH_P_ATMMPOA                    = 0x884c
+       ETH_P_AX25                       = 0x2
+       ETH_P_BPQ                        = 0x8ff
+       ETH_P_CAIF                       = 0xf7
+       ETH_P_CAN                        = 0xc
+       ETH_P_CONTROL                    = 0x16
+       ETH_P_CUST                       = 0x6006
+       ETH_P_DDCMP                      = 0x6
+       ETH_P_DEC                        = 0x6000
+       ETH_P_DIAG                       = 0x6005
+       ETH_P_DNA_DL                     = 0x6001
+       ETH_P_DNA_RC                     = 0x6002
+       ETH_P_DNA_RT                     = 0x6003
+       ETH_P_DSA                        = 0x1b
+       ETH_P_ECONET                     = 0x18
+       ETH_P_EDSA                       = 0xdada
+       ETH_P_FCOE                       = 0x8906
+       ETH_P_FIP                        = 0x8914
+       ETH_P_HDLC                       = 0x19
+       ETH_P_IEEE802154                 = 0xf6
+       ETH_P_IEEEPUP                    = 0xa00
+       ETH_P_IEEEPUPAT                  = 0xa01
+       ETH_P_IP                         = 0x800
+       ETH_P_IPV6                       = 0x86dd
+       ETH_P_IPX                        = 0x8137
+       ETH_P_IRDA                       = 0x17
+       ETH_P_LAT                        = 0x6004
+       ETH_P_LINK_CTL                   = 0x886c
+       ETH_P_LOCALTALK                  = 0x9
+       ETH_P_LOOP                       = 0x60
+       ETH_P_MOBITEX                    = 0x15
+       ETH_P_MPLS_MC                    = 0x8848
+       ETH_P_MPLS_UC                    = 0x8847
+       ETH_P_PAE                        = 0x888e
+       ETH_P_PAUSE                      = 0x8808
+       ETH_P_PHONET                     = 0xf5
+       ETH_P_PPPTALK                    = 0x10
+       ETH_P_PPP_DISC                   = 0x8863
+       ETH_P_PPP_MP                     = 0x8
+       ETH_P_PPP_SES                    = 0x8864
+       ETH_P_PUP                        = 0x200
+       ETH_P_PUPAT                      = 0x201
+       ETH_P_QINQ1                      = 0x9100
+       ETH_P_QINQ2                      = 0x9200
+       ETH_P_QINQ3                      = 0x9300
+       ETH_P_RARP                       = 0x8035
+       ETH_P_SCA                        = 0x6007
+       ETH_P_SLOW                       = 0x8809
+       ETH_P_SNAP                       = 0x5
+       ETH_P_TDLS                       = 0x890d
+       ETH_P_TEB                        = 0x6558
+       ETH_P_TIPC                       = 0x88ca
+       ETH_P_TRAILER                    = 0x1c
+       ETH_P_TR_802_2                   = 0x11
+       ETH_P_WAN_PPP                    = 0x7
+       ETH_P_WCCP                       = 0x883e
+       ETH_P_X25                        = 0x805
+       EXTA                             = 0xe
+       EXTB                             = 0xf
+       EXTPROC                          = 0x10000
+       FD_CLOEXEC                       = 0x1
+       FD_SETSIZE                       = 0x400
+       FF0                              = 0x0
+       FF1                              = 0x8000
+       FFDLY                            = 0x8000
+       FLUSHO                           = 0x1000
+       F_DUPFD                          = 0x0
+       F_DUPFD_CLOEXEC                  = 0x406
+       F_EXLCK                          = 0x4
+       F_GETFD                          = 0x1
+       F_GETFL                          = 0x3
+       F_GETLEASE                       = 0x401
+       F_GETLK                          = 0x5
+       F_GETLK64                        = 0x5
+       F_GETOWN                         = 0x9
+       F_GETOWN_EX                      = 0x10
+       F_GETPIPE_SZ                     = 0x408
+       F_GETSIG                         = 0xb
+       F_LOCK                           = 0x1
+       F_NOTIFY                         = 0x402
+       F_OK                             = 0x0
+       F_RDLCK                          = 0x0
+       F_SETFD                          = 0x2
+       F_SETFL                          = 0x4
+       F_SETLEASE                       = 0x400
+       F_SETLK                          = 0x6
+       F_SETLK64                        = 0x6
+       F_SETLKW                         = 0x7
+       F_SETLKW64                       = 0x7
+       F_SETOWN                         = 0x8
+       F_SETOWN_EX                      = 0xf
+       F_SETPIPE_SZ                     = 0x407
+       F_SETSIG                         = 0xa
+       F_SHLCK                          = 0x8
+       F_TEST                           = 0x3
+       F_TLOCK                          = 0x2
+       F_ULOCK                          = 0x0
+       F_UNLCK                          = 0x2
+       F_WRLCK                          = 0x1
+       HUPCL                            = 0x400
+       IBSHIFT                          = 0x10
+       ICANON                           = 0x2
+       ICMPV6_FILTER                    = 0x1
+       ICRNL                            = 0x100
+       IEXTEN                           = 0x8000
+       IFA_F_DADFAILED                  = 0x8
+       IFA_F_DEPRECATED                 = 0x20
+       IFA_F_HOMEADDRESS                = 0x10
+       IFA_F_NODAD                      = 0x2
+       IFA_F_OPTIMISTIC                 = 0x4
+       IFA_F_PERMANENT                  = 0x80
+       IFA_F_SECONDARY                  = 0x1
+       IFA_F_TEMPORARY                  = 0x1
+       IFA_F_TENTATIVE                  = 0x40
+       IFA_MAX                          = 0x7
+       IFF_802_1Q_VLAN                  = 0x1
+       IFF_ALLMULTI                     = 0x200
+       IFF_AUTOMEDIA                    = 0x4000
+       IFF_BONDING                      = 0x20
+       IFF_BRIDGE_PORT                  = 0x4000
+       IFF_BROADCAST                    = 0x2
+       IFF_DEBUG                        = 0x4
+       IFF_DISABLE_NETPOLL              = 0x1000
+       IFF_DONT_BRIDGE                  = 0x800
+       IFF_DORMANT                      = 0x20000
+       IFF_DYNAMIC                      = 0x8000
+       IFF_EBRIDGE                      = 0x2
+       IFF_ECHO                         = 0x40000
+       IFF_ISATAP                       = 0x80
+       IFF_LOOPBACK                     = 0x8
+       IFF_LOWER_UP                     = 0x10000
+       IFF_MACVLAN_PORT                 = 0x2000
+       IFF_MASTER                       = 0x400
+       IFF_MASTER_8023AD                = 0x8
+       IFF_MASTER_ALB                   = 0x10
+       IFF_MASTER_ARPMON                = 0x100
+       IFF_MULTICAST                    = 0x1000
+       IFF_NOARP                        = 0x80
+       IFF_NOTRAILERS                   = 0x20
+       IFF_NO_PI                        = 0x1000
+       IFF_ONE_QUEUE                    = 0x2000
+       IFF_OVS_DATAPATH                 = 0x8000
+       IFF_POINTOPOINT                  = 0x10
+       IFF_PORTSEL                      = 0x2000
+       IFF_PROMISC                      = 0x100
+       IFF_RUNNING                      = 0x40
+       IFF_SLAVE                        = 0x800
+       IFF_SLAVE_INACTIVE               = 0x4
+       IFF_SLAVE_NEEDARP                = 0x40
+       IFF_TAP                          = 0x2
+       IFF_TUN                          = 0x1
+       IFF_TUN_EXCL                     = 0x8000
+       IFF_TX_SKB_SHARING               = 0x10000
+       IFF_UNICAST_FLT                  = 0x20000
+       IFF_UP                           = 0x1
+       IFF_VNET_HDR                     = 0x4000
+       IFF_VOLATILE                     = 0x70c5a
+       IFF_WAN_HDLC                     = 0x200
+       IFF_XMIT_DST_RELEASE             = 0x400
+       IFNAMSIZ                         = 0x10
+       IGNBRK                           = 0x1
+       IGNCR                            = 0x80
+       IGNPAR                           = 0x4
+       IMAXBEL                          = 0x2000
+       INLCR                            = 0x40
+       INPCK                            = 0x10
+       IN_ACCESS                        = 0x1
+       IN_ALL_EVENTS                    = 0xfff
+       IN_ATTRIB                        = 0x4
+       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_CLOEXEC                       = 0x80000
+       IN_CLOSE                         = 0x18
+       IN_CLOSE_NOWRITE                 = 0x10
+       IN_CLOSE_WRITE                   = 0x8
+       IN_CREATE                        = 0x100
+       IN_DELETE                        = 0x200
+       IN_DELETE_SELF                   = 0x400
+       IN_DONT_FOLLOW                   = 0x2000000
+       IN_EXCL_UNLINK                   = 0x4000000
+       IN_IGNORED                       = 0x8000
+       IN_ISDIR                         = 0x40000000
+       IN_LOOPBACKNET                   = 0x7f
+       IN_MASK_ADD                      = 0x20000000
+       IN_MODIFY                        = 0x2
+       IN_MOVE                          = 0xc0
+       IN_MOVED_FROM                    = 0x40
+       IN_MOVED_TO                      = 0x80
+       IN_MOVE_SELF                     = 0x800
+       IN_NONBLOCK                      = 0x800
+       IN_ONESHOT                       = 0x80000000
+       IN_ONLYDIR                       = 0x1000000
+       IN_OPEN                          = 0x20
+       IN_Q_OVERFLOW                    = 0x4000
+       IN_UNMOUNT                       = 0x2000
+       IPPROTO_AH                       = 0x33
+       IPPROTO_COMP                     = 0x6c
+       IPPROTO_DCCP                     = 0x21
+       IPPROTO_DSTOPTS                  = 0x3c
+       IPPROTO_EGP                      = 0x8
+       IPPROTO_ENCAP                    = 0x62
+       IPPROTO_ESP                      = 0x32
+       IPPROTO_FRAGMENT                 = 0x2c
+       IPPROTO_GRE                      = 0x2f
+       IPPROTO_HOPOPTS                  = 0x0
+       IPPROTO_ICMP                     = 0x1
+       IPPROTO_ICMPV6                   = 0x3a
+       IPPROTO_IDP                      = 0x16
+       IPPROTO_IGMP                     = 0x2
+       IPPROTO_IP                       = 0x0
+       IPPROTO_IPIP                     = 0x4
+       IPPROTO_IPV6                     = 0x29
+       IPPROTO_MTP                      = 0x5c
+       IPPROTO_NONE                     = 0x3b
+       IPPROTO_PIM                      = 0x67
+       IPPROTO_PUP                      = 0xc
+       IPPROTO_RAW                      = 0xff
+       IPPROTO_ROUTING                  = 0x2b
+       IPPROTO_RSVP                     = 0x2e
+       IPPROTO_SCTP                     = 0x84
+       IPPROTO_TCP                      = 0x6
+       IPPROTO_TP                       = 0x1d
+       IPPROTO_UDP                      = 0x11
+       IPPROTO_UDPLITE                  = 0x88
+       IPV6_2292DSTOPTS                 = 0x4
+       IPV6_2292HOPLIMIT                = 0x8
+       IPV6_2292HOPOPTS                 = 0x3
+       IPV6_2292PKTINFO                 = 0x2
+       IPV6_2292PKTOPTIONS              = 0x6
+       IPV6_2292RTHDR                   = 0x5
+       IPV6_ADDRFORM                    = 0x1
+       IPV6_ADD_MEMBERSHIP              = 0x14
+       IPV6_AUTHHDR                     = 0xa
+       IPV6_CHECKSUM                    = 0x7
+       IPV6_DROP_MEMBERSHIP             = 0x15
+       IPV6_DSTOPTS                     = 0x3b
+       IPV6_HOPLIMIT                    = 0x34
+       IPV6_HOPOPTS                     = 0x36
+       IPV6_IPSEC_POLICY                = 0x22
+       IPV6_JOIN_ANYCAST                = 0x1b
+       IPV6_JOIN_GROUP                  = 0x14
+       IPV6_LEAVE_ANYCAST               = 0x1c
+       IPV6_LEAVE_GROUP                 = 0x15
+       IPV6_MTU                         = 0x18
+       IPV6_MTU_DISCOVER                = 0x17
+       IPV6_MULTICAST_HOPS              = 0x12
+       IPV6_MULTICAST_IF                = 0x11
+       IPV6_MULTICAST_LOOP              = 0x13
+       IPV6_NEXTHOP                     = 0x9
+       IPV6_PKTINFO                     = 0x32
+       IPV6_PMTUDISC_DO                 = 0x2
+       IPV6_PMTUDISC_DONT               = 0x0
+       IPV6_PMTUDISC_PROBE              = 0x3
+       IPV6_PMTUDISC_WANT               = 0x1
+       IPV6_RECVDSTOPTS                 = 0x3a
+       IPV6_RECVERR                     = 0x19
+       IPV6_RECVHOPLIMIT                = 0x33
+       IPV6_RECVHOPOPTS                 = 0x35
+       IPV6_RECVPKTINFO                 = 0x31
+       IPV6_RECVRTHDR                   = 0x38
+       IPV6_RECVTCLASS                  = 0x42
+       IPV6_ROUTER_ALERT                = 0x16
+       IPV6_RTHDR                       = 0x39
+       IPV6_RTHDRDSTOPTS                = 0x37
+       IPV6_RTHDR_LOOSE                 = 0x0
+       IPV6_RTHDR_STRICT                = 0x1
+       IPV6_RTHDR_TYPE_0                = 0x0
+       IPV6_RXDSTOPTS                   = 0x3b
+       IPV6_RXHOPOPTS                   = 0x36
+       IPV6_TCLASS                      = 0x43
+       IPV6_UNICAST_HOPS                = 0x10
+       IPV6_V6ONLY                      = 0x1a
+       IPV6_XFRM_POLICY                 = 0x23
+       IP_ADD_MEMBERSHIP                = 0x23
+       IP_ADD_SOURCE_MEMBERSHIP         = 0x27
+       IP_BLOCK_SOURCE                  = 0x26
+       IP_DEFAULT_MULTICAST_LOOP        = 0x1
+       IP_DEFAULT_MULTICAST_TTL         = 0x1
+       IP_DF                            = 0x4000
+       IP_DROP_MEMBERSHIP               = 0x24
+       IP_DROP_SOURCE_MEMBERSHIP        = 0x28
+       IP_FREEBIND                      = 0xf
+       IP_HDRINCL                       = 0x3
+       IP_IPSEC_POLICY                  = 0x10
+       IP_MAXPACKET                     = 0xffff
+       IP_MAX_MEMBERSHIPS               = 0x14
+       IP_MF                            = 0x2000
+       IP_MINTTL                        = 0x15
+       IP_MSFILTER                      = 0x29
+       IP_MSS                           = 0x240
+       IP_MTU                           = 0xe
+       IP_MTU_DISCOVER                  = 0xa
+       IP_MULTICAST_ALL                 = 0x31
+       IP_MULTICAST_IF                  = 0x20
+       IP_MULTICAST_LOOP                = 0x22
+       IP_MULTICAST_TTL                 = 0x21
+       IP_OFFMASK                       = 0x1fff
+       IP_OPTIONS                       = 0x4
+       IP_ORIGDSTADDR                   = 0x14
+       IP_PASSSEC                       = 0x12
+       IP_PKTINFO                       = 0x8
+       IP_PKTOPTIONS                    = 0x9
+       IP_PMTUDISC                      = 0xa
+       IP_PMTUDISC_DO                   = 0x2
+       IP_PMTUDISC_DONT                 = 0x0
+       IP_PMTUDISC_PROBE                = 0x3
+       IP_PMTUDISC_WANT                 = 0x1
+       IP_RECVERR                       = 0xb
+       IP_RECVOPTS                      = 0x6
+       IP_RECVORIGDSTADDR               = 0x14
+       IP_RECVRETOPTS                   = 0x7
+       IP_RECVTOS                       = 0xd
+       IP_RECVTTL                       = 0xc
+       IP_RETOPTS                       = 0x7
+       IP_RF                            = 0x8000
+       IP_ROUTER_ALERT                  = 0x5
+       IP_TOS                           = 0x1
+       IP_TRANSPARENT                   = 0x13
+       IP_TTL                           = 0x2
+       IP_UNBLOCK_SOURCE                = 0x25
+       IP_XFRM_POLICY                   = 0x11
+       ISIG                             = 0x1
+       ISTRIP                           = 0x20
+       IUCLC                            = 0x200
+       IUTF8                            = 0x4000
+       IXANY                            = 0x800
+       IXOFF                            = 0x1000
+       IXON                             = 0x400
+       LINUX_REBOOT_CMD_CAD_OFF         = 0x0
+       LINUX_REBOOT_CMD_CAD_ON          = 0x89abcdef
+       LINUX_REBOOT_CMD_HALT            = 0xcdef0123
+       LINUX_REBOOT_CMD_KEXEC           = 0x45584543
+       LINUX_REBOOT_CMD_POWER_OFF       = 0x4321fedc
+       LINUX_REBOOT_CMD_RESTART         = 0x1234567
+       LINUX_REBOOT_CMD_RESTART2        = 0xa1b2c3d4
+       LINUX_REBOOT_CMD_SW_SUSPEND      = 0xd000fce2
+       LINUX_REBOOT_MAGIC1              = 0xfee1dead
+       LINUX_REBOOT_MAGIC2              = 0x28121969
+       LOCK_EX                          = 0x2
+       LOCK_NB                          = 0x4
+       LOCK_SH                          = 0x1
+       LOCK_UN                          = 0x8
+       MADV_DOFORK                      = 0xb
+       MADV_DONTFORK                    = 0xa
+       MADV_DONTNEED                    = 0x4
+       MADV_HUGEPAGE                    = 0xe
+       MADV_HWPOISON                    = 0x64
+       MADV_MERGEABLE                   = 0xc
+       MADV_NOHUGEPAGE                  = 0xf
+       MADV_NORMAL                      = 0x0
+       MADV_RANDOM                      = 0x1
+       MADV_REMOVE                      = 0x9
+       MADV_SEQUENTIAL                  = 0x2
+       MADV_UNMERGEABLE                 = 0xd
+       MADV_WILLNEED                    = 0x3
+       MAP_32BIT                        = 0x40
+       MAP_ANON                         = 0x20
+       MAP_ANONYMOUS                    = 0x20
+       MAP_DENYWRITE                    = 0x800
+       MAP_EXECUTABLE                   = 0x1000
+       MAP_FILE                         = 0x0
+       MAP_FIXED                        = 0x10
+       MAP_GROWSDOWN                    = 0x100
+       MAP_HUGETLB                      = 0x40000
+       MAP_LOCKED                       = 0x2000
+       MAP_NONBLOCK                     = 0x10000
+       MAP_NORESERVE                    = 0x4000
+       MAP_POPULATE                     = 0x8000
+       MAP_PRIVATE                      = 0x2
+       MAP_SHARED                       = 0x1
+       MAP_STACK                        = 0x20000
+       MAP_TYPE                         = 0xf
+       MCL_CURRENT                      = 0x1
+       MCL_FUTURE                       = 0x2
+       MNT_DETACH                       = 0x2
+       MNT_EXPIRE                       = 0x4
+       MNT_FORCE                        = 0x1
+       MSG_CMSG_CLOEXEC                 = 0x40000000
+       MSG_CONFIRM                      = 0x800
+       MSG_CTRUNC                       = 0x8
+       MSG_DONTROUTE                    = 0x4
+       MSG_DONTWAIT                     = 0x40
+       MSG_EOR                          = 0x80
+       MSG_ERRQUEUE                     = 0x2000
+       MSG_FASTOPEN                     = 0x20000000
+       MSG_FIN                          = 0x200
+       MSG_MORE                         = 0x8000
+       MSG_NOSIGNAL                     = 0x4000
+       MSG_OOB                          = 0x1
+       MSG_PEEK                         = 0x2
+       MSG_PROXY                        = 0x10
+       MSG_RST                          = 0x1000
+       MSG_SYN                          = 0x400
+       MSG_TRUNC                        = 0x20
+       MSG_TRYHARD                      = 0x4
+       MSG_WAITALL                      = 0x100
+       MSG_WAITFORONE                   = 0x10000
+       MS_ACTIVE                        = 0x40000000
+       MS_ASYNC                         = 0x1
+       MS_BIND                          = 0x1000
+       MS_DIRSYNC                       = 0x80
+       MS_INVALIDATE                    = 0x2
+       MS_I_VERSION                     = 0x800000
+       MS_KERNMOUNT                     = 0x400000
+       MS_MANDLOCK                      = 0x40
+       MS_MGC_MSK                       = 0xffff0000
+       MS_MGC_VAL                       = 0xc0ed0000
+       MS_MOVE                          = 0x2000
+       MS_NOATIME                       = 0x400
+       MS_NODEV                         = 0x4
+       MS_NODIRATIME                    = 0x800
+       MS_NOEXEC                        = 0x8
+       MS_NOSUID                        = 0x2
+       MS_NOUSER                        = -0x80000000
+       MS_POSIXACL                      = 0x10000
+       MS_PRIVATE                       = 0x40000
+       MS_RDONLY                        = 0x1
+       MS_REC                           = 0x4000
+       MS_RELATIME                      = 0x200000
+       MS_REMOUNT                       = 0x20
+       MS_RMT_MASK                      = 0x800051
+       MS_SHARED                        = 0x100000
+       MS_SILENT                        = 0x8000
+       MS_SLAVE                         = 0x80000
+       MS_STRICTATIME                   = 0x1000000
+       MS_SYNC                          = 0x4
+       MS_SYNCHRONOUS                   = 0x10
+       MS_UNBINDABLE                    = 0x20000
+       NAME_MAX                         = 0xff
+       NETLINK_ADD_MEMBERSHIP           = 0x1
+       NETLINK_AUDIT                    = 0x9
+       NETLINK_BROADCAST_ERROR          = 0x4
+       NETLINK_CONNECTOR                = 0xb
+       NETLINK_CRYPTO                   = 0x15
+       NETLINK_DNRTMSG                  = 0xe
+       NETLINK_DROP_MEMBERSHIP          = 0x2
+       NETLINK_ECRYPTFS                 = 0x13
+       NETLINK_FIB_LOOKUP               = 0xa
+       NETLINK_FIREWALL                 = 0x3
+       NETLINK_GENERIC                  = 0x10
+       NETLINK_INET_DIAG                = 0x4
+       NETLINK_IP6_FW                   = 0xd
+       NETLINK_ISCSI                    = 0x8
+       NETLINK_KOBJECT_UEVENT           = 0xf
+       NETLINK_NETFILTER                = 0xc
+       NETLINK_NFLOG                    = 0x5
+       NETLINK_NO_ENOBUFS               = 0x5
+       NETLINK_PKTINFO                  = 0x3
+       NETLINK_RDMA                     = 0x14
+       NETLINK_ROUTE                    = 0x0
+       NETLINK_SCSITRANSPORT            = 0x12
+       NETLINK_SELINUX                  = 0x7
+       NETLINK_UNUSED                   = 0x1
+       NETLINK_USERSOCK                 = 0x2
+       NETLINK_XFRM                     = 0x6
+       NL0                              = 0x0
+       NL1                              = 0x100
+       NLA_ALIGNTO                      = 0x4
+       NLA_F_NESTED                     = 0x8000
+       NLA_F_NET_BYTEORDER              = 0x4000
+       NLA_HDRLEN                       = 0x4
+       NLDLY                            = 0x100
+       NLMSG_ALIGNTO                    = 0x4
+       NLMSG_DONE                       = 0x3
+       NLMSG_ERROR                      = 0x2
+       NLMSG_HDRLEN                     = 0x10
+       NLMSG_MIN_TYPE                   = 0x10
+       NLMSG_NOOP                       = 0x1
+       NLMSG_OVERRUN                    = 0x4
+       NLM_F_ACK                        = 0x4
+       NLM_F_APPEND                     = 0x800
+       NLM_F_ATOMIC                     = 0x400
+       NLM_F_CREATE                     = 0x400
+       NLM_F_DUMP                       = 0x300
+       NLM_F_DUMP_INTR                  = 0x10
+       NLM_F_ECHO                       = 0x8
+       NLM_F_EXCL                       = 0x200
+       NLM_F_MATCH                      = 0x200
+       NLM_F_MULTI                      = 0x2
+       NLM_F_REPLACE                    = 0x100
+       NLM_F_REQUEST                    = 0x1
+       NLM_F_ROOT                       = 0x100
+       NOFLSH                           = 0x80
+       OCRNL                            = 0x8
+       OFDEL                            = 0x80
+       OFILL                            = 0x40
+       OLCUC                            = 0x2
+       ONLCR                            = 0x4
+       ONLRET                           = 0x20
+       ONOCR                            = 0x10
+       OPOST                            = 0x1
+       O_ACCMODE                        = 0x3
+       O_APPEND                         = 0x400
+       O_ASYNC                          = 0x2000
+       O_CLOEXEC                        = 0x80000
+       O_CREAT                          = 0x40
+       O_DIRECT                         = 0x4000
+       O_DIRECTORY                      = 0x10000
+       O_DSYNC                          = 0x1000
+       O_EXCL                           = 0x80
+       O_FSYNC                          = 0x101000
+       O_LARGEFILE                      = 0x0
+       O_NDELAY                         = 0x800
+       O_NOATIME                        = 0x40000
+       O_NOCTTY                         = 0x100
+       O_NOFOLLOW                       = 0x20000
+       O_NONBLOCK                       = 0x800
+       O_PATH                           = 0x200000
+       O_RDONLY                         = 0x0
+       O_RDWR                           = 0x2
+       O_RSYNC                          = 0x101000
+       O_SYNC                           = 0x101000
+       O_TRUNC                          = 0x200
+       O_WRONLY                         = 0x1
+       PACKET_ADD_MEMBERSHIP            = 0x1
+       PACKET_AUXDATA                   = 0x8
+       PACKET_BROADCAST                 = 0x1
+       PACKET_COPY_THRESH               = 0x7
+       PACKET_DROP_MEMBERSHIP           = 0x2
+       PACKET_FANOUT                    = 0x12
+       PACKET_FANOUT_CPU                = 0x2
+       PACKET_FANOUT_FLAG_DEFRAG        = 0x8000
+       PACKET_FANOUT_HASH               = 0x0
+       PACKET_FANOUT_LB                 = 0x1
+       PACKET_FASTROUTE                 = 0x6
+       PACKET_HDRLEN                    = 0xb
+       PACKET_HOST                      = 0x0
+       PACKET_LOOPBACK                  = 0x5
+       PACKET_LOSS                      = 0xe
+       PACKET_MR_ALLMULTI               = 0x2
+       PACKET_MR_MULTICAST              = 0x0
+       PACKET_MR_PROMISC                = 0x1
+       PACKET_MR_UNICAST                = 0x3
+       PACKET_MULTICAST                 = 0x2
+       PACKET_ORIGDEV                   = 0x9
+       PACKET_OTHERHOST                 = 0x3
+       PACKET_OUTGOING                  = 0x4
+       PACKET_RECV_OUTPUT               = 0x3
+       PACKET_RESERVE                   = 0xc
+       PACKET_RX_RING                   = 0x5
+       PACKET_STATISTICS                = 0x6
+       PACKET_TIMESTAMP                 = 0x11
+       PACKET_TX_RING                   = 0xd
+       PACKET_TX_TIMESTAMP              = 0x10
+       PACKET_VERSION                   = 0xa
+       PACKET_VNET_HDR                  = 0xf
+       PARENB                           = 0x100
+       PARITY_CRC16_PR0                 = 0x2
+       PARITY_CRC16_PR0_CCITT           = 0x4
+       PARITY_CRC16_PR1                 = 0x3
+       PARITY_CRC16_PR1_CCITT           = 0x5
+       PARITY_CRC32_PR0_CCITT           = 0x6
+       PARITY_CRC32_PR1_CCITT           = 0x7
+       PARITY_DEFAULT                   = 0x0
+       PARITY_NONE                      = 0x1
+       PARMRK                           = 0x8
+       PARODD                           = 0x200
+       PENDIN                           = 0x4000
+       PRIO_PGRP                        = 0x1
+       PRIO_PROCESS                     = 0x0
+       PRIO_USER                        = 0x2
+       PROT_EXEC                        = 0x4
+       PROT_GROWSDOWN                   = 0x1000000
+       PROT_GROWSUP                     = 0x2000000
+       PROT_NONE                        = 0x0
+       PROT_READ                        = 0x1
+       PROT_WRITE                       = 0x2
+       PR_CAPBSET_DROP                  = 0x18
+       PR_CAPBSET_READ                  = 0x17
+       PR_ENDIAN_BIG                    = 0x0
+       PR_ENDIAN_LITTLE                 = 0x1
+       PR_ENDIAN_PPC_LITTLE             = 0x2
+       PR_FPEMU_NOPRINT                 = 0x1
+       PR_FPEMU_SIGFPE                  = 0x2
+       PR_FP_EXC_ASYNC                  = 0x2
+       PR_FP_EXC_DISABLED               = 0x0
+       PR_FP_EXC_DIV                    = 0x10000
+       PR_FP_EXC_INV                    = 0x100000
+       PR_FP_EXC_NONRECOV               = 0x1
+       PR_FP_EXC_OVF                    = 0x20000
+       PR_FP_EXC_PRECISE                = 0x3
+       PR_FP_EXC_RES                    = 0x80000
+       PR_FP_EXC_SW_ENABLE              = 0x80
+       PR_FP_EXC_UND                    = 0x40000
+       PR_GET_DUMPABLE                  = 0x3
+       PR_GET_ENDIAN                    = 0x13
+       PR_GET_FPEMU                     = 0x9
+       PR_GET_FPEXC                     = 0xb
+       PR_GET_KEEPCAPS                  = 0x7
+       PR_GET_NAME                      = 0x10
+       PR_GET_NO_NEW_PRIVS              = 0x27
+       PR_GET_PDEATHSIG                 = 0x2
+       PR_GET_SECCOMP                   = 0x15
+       PR_GET_SECUREBITS                = 0x1b
+       PR_GET_TIMERSLACK                = 0x1e
+       PR_GET_TIMING                    = 0xd
+       PR_GET_TSC                       = 0x19
+       PR_GET_UNALIGN                   = 0x5
+       PR_MCE_KILL                      = 0x21
+       PR_MCE_KILL_CLEAR                = 0x0
+       PR_MCE_KILL_DEFAULT              = 0x2
+       PR_MCE_KILL_EARLY                = 0x1
+       PR_MCE_KILL_GET                  = 0x22
+       PR_MCE_KILL_LATE                 = 0x0
+       PR_MCE_KILL_SET                  = 0x1
+       PR_SET_DUMPABLE                  = 0x4
+       PR_SET_ENDIAN                    = 0x14
+       PR_SET_FPEMU                     = 0xa
+       PR_SET_FPEXC                     = 0xc
+       PR_SET_KEEPCAPS                  = 0x8
+       PR_SET_MM                        = 0x23
+       PR_SET_MM_BRK                    = 0x7
+       PR_SET_MM_END_CODE               = 0x2
+       PR_SET_MM_END_DATA               = 0x4
+       PR_SET_MM_START_BRK              = 0x6
+       PR_SET_MM_START_CODE             = 0x1
+       PR_SET_MM_START_DATA             = 0x3
+       PR_SET_MM_START_STACK            = 0x5
+       PR_SET_NAME                      = 0xf
+       PR_SET_NO_NEW_PRIVS              = 0x26
+       PR_SET_PDEATHSIG                 = 0x1
+       PR_SET_PTRACER                   = 0x59616d61
+       PR_SET_PTRACER_ANY               = -0x1
+       PR_SET_SECCOMP                   = 0x16
+       PR_SET_SECUREBITS                = 0x1c
+       PR_SET_TIMERSLACK                = 0x1d
+       PR_SET_TIMING                    = 0xe
+       PR_SET_TSC                       = 0x1a
+       PR_SET_UNALIGN                   = 0x6
+       PR_TASK_PERF_EVENTS_DISABLE      = 0x1f
+       PR_TASK_PERF_EVENTS_ENABLE       = 0x20
+       PR_TIMING_STATISTICAL            = 0x0
+       PR_TIMING_TIMESTAMP              = 0x1
+       PR_TSC_ENABLE                    = 0x1
+       PR_TSC_SIGSEGV                   = 0x2
+       PR_UNALIGN_NOPRINT               = 0x1
+       PR_UNALIGN_SIGBUS                = 0x2
+       PTRACE_ARCH_PRCTL                = 0x1e
+       PTRACE_ATTACH                    = 0x10
+       PTRACE_CONT                      = 0x7
+       PTRACE_DETACH                    = 0x11
+       PTRACE_EVENT_CLONE               = 0x3
+       PTRACE_EVENT_EXEC                = 0x4
+       PTRACE_EVENT_EXIT                = 0x6
+       PTRACE_EVENT_FORK                = 0x1
+       PTRACE_EVENT_SECCOMP             = 0x7
+       PTRACE_EVENT_STOP                = 0x80
+       PTRACE_EVENT_VFORK               = 0x2
+       PTRACE_EVENT_VFORK_DONE          = 0x5
+       PTRACE_GETEVENTMSG               = 0x4201
+       PTRACE_GETFPREGS                 = 0xe
+       PTRACE_GETFPXREGS                = 0x12
+       PTRACE_GETREGS                   = 0xc
+       PTRACE_GETREGSET                 = 0x4204
+       PTRACE_GETSIGINFO                = 0x4202
+       PTRACE_GET_THREAD_AREA           = 0x19
+       PTRACE_INTERRUPT                 = 0x4207
+       PTRACE_KILL                      = 0x8
+       PTRACE_LISTEN                    = 0x4208
+       PTRACE_OLDSETOPTIONS             = 0x15
+       PTRACE_O_MASK                    = 0xff
+       PTRACE_O_TRACECLONE              = 0x8
+       PTRACE_O_TRACEEXEC               = 0x10
+       PTRACE_O_TRACEEXIT               = 0x40
+       PTRACE_O_TRACEFORK               = 0x2
+       PTRACE_O_TRACESECCOMP            = 0x80
+       PTRACE_O_TRACESYSGOOD            = 0x1
+       PTRACE_O_TRACEVFORK              = 0x4
+       PTRACE_O_TRACEVFORKDONE          = 0x20
+       PTRACE_PEEKDATA                  = 0x2
+       PTRACE_PEEKTEXT                  = 0x1
+       PTRACE_PEEKUSR                   = 0x3
+       PTRACE_POKEDATA                  = 0x5
+       PTRACE_POKETEXT                  = 0x4
+       PTRACE_POKEUSR                   = 0x6
+       PTRACE_SEIZE                     = 0x4206
+       PTRACE_SEIZE_DEVEL               = 0x80000000
+       PTRACE_SETFPREGS                 = 0xf
+       PTRACE_SETFPXREGS                = 0x13
+       PTRACE_SETOPTIONS                = 0x4200
+       PTRACE_SETREGS                   = 0xd
+       PTRACE_SETREGSET                 = 0x4205
+       PTRACE_SETSIGINFO                = 0x4203
+       PTRACE_SET_THREAD_AREA           = 0x1a
+       PTRACE_SINGLEBLOCK               = 0x21
+       PTRACE_SINGLESTEP                = 0x9
+       PTRACE_SYSCALL                   = 0x18
+       PTRACE_SYSEMU                    = 0x1f
+       PTRACE_SYSEMU_SINGLESTEP         = 0x20
+       PTRACE_TRACEME                   = 0x0
+       RLIMIT_AS                        = 0x9
+       RLIMIT_CORE                      = 0x4
+       RLIMIT_CPU                       = 0x0
+       RLIMIT_DATA                      = 0x2
+       RLIMIT_FSIZE                     = 0x1
+       RLIMIT_NOFILE                    = 0x7
+       RLIMIT_STACK                     = 0x3
+       RLIM_INFINITY                    = -0x1
+       RTAX_ADVMSS                      = 0x8
+       RTAX_CWND                        = 0x7
+       RTAX_FEATURES                    = 0xc
+       RTAX_FEATURE_ALLFRAG             = 0x8
+       RTAX_FEATURE_ECN                 = 0x1
+       RTAX_FEATURE_SACK                = 0x2
+       RTAX_FEATURE_TIMESTAMP           = 0x4
+       RTAX_HOPLIMIT                    = 0xa
+       RTAX_INITCWND                    = 0xb
+       RTAX_INITRWND                    = 0xe
+       RTAX_LOCK                        = 0x1
+       RTAX_MAX                         = 0xe
+       RTAX_MTU                         = 0x2
+       RTAX_REORDERING                  = 0x9
+       RTAX_RTO_MIN                     = 0xd
+       RTAX_RTT                         = 0x4
+       RTAX_RTTVAR                      = 0x5
+       RTAX_SSTHRESH                    = 0x6
+       RTAX_UNSPEC                      = 0x0
+       RTAX_WINDOW                      = 0x3
+       RTA_ALIGNTO                      = 0x4
+       RTA_MAX                          = 0x10
+       RTCF_DIRECTSRC                   = 0x4000000
+       RTCF_DOREDIRECT                  = 0x1000000
+       RTCF_LOG                         = 0x2000000
+       RTCF_MASQ                        = 0x400000
+       RTCF_NAT                         = 0x800000
+       RTCF_VALVE                       = 0x200000
+       RTF_ADDRCLASSMASK                = 0xf8000000
+       RTF_ADDRCONF                     = 0x40000
+       RTF_ALLONLINK                    = 0x20000
+       RTF_BROADCAST                    = 0x10000000
+       RTF_CACHE                        = 0x1000000
+       RTF_DEFAULT                      = 0x10000
+       RTF_DYNAMIC                      = 0x10
+       RTF_FLOW                         = 0x2000000
+       RTF_GATEWAY                      = 0x2
+       RTF_HOST                         = 0x4
+       RTF_INTERFACE                    = 0x40000000
+       RTF_IRTT                         = 0x100
+       RTF_LINKRT                       = 0x100000
+       RTF_LOCAL                        = 0x80000000
+       RTF_MODIFIED                     = 0x20
+       RTF_MSS                          = 0x40
+       RTF_MTU                          = 0x40
+       RTF_MULTICAST                    = 0x20000000
+       RTF_NAT                          = 0x8000000
+       RTF_NOFORWARD                    = 0x1000
+       RTF_NONEXTHOP                    = 0x200000
+       RTF_NOPMTUDISC                   = 0x4000
+       RTF_POLICY                       = 0x4000000
+       RTF_REINSTATE                    = 0x8
+       RTF_REJECT                       = 0x200
+       RTF_STATIC                       = 0x400
+       RTF_THROW                        = 0x2000
+       RTF_UP                           = 0x1
+       RTF_WINDOW                       = 0x80
+       RTF_XRESOLVE                     = 0x800
+       RTM_BASE                         = 0x10
+       RTM_DELACTION                    = 0x31
+       RTM_DELADDR                      = 0x15
+       RTM_DELADDRLABEL                 = 0x49
+       RTM_DELLINK                      = 0x11
+       RTM_DELNEIGH                     = 0x1d
+       RTM_DELQDISC                     = 0x25
+       RTM_DELROUTE                     = 0x19
+       RTM_DELRULE                      = 0x21
+       RTM_DELTCLASS                    = 0x29
+       RTM_DELTFILTER                   = 0x2d
+       RTM_F_CLONED                     = 0x200
+       RTM_F_EQUALIZE                   = 0x400
+       RTM_F_NOTIFY                     = 0x100
+       RTM_F_PREFIX                     = 0x800
+       RTM_GETACTION                    = 0x32
+       RTM_GETADDR                      = 0x16
+       RTM_GETADDRLABEL                 = 0x4a
+       RTM_GETANYCAST                   = 0x3e
+       RTM_GETDCB                       = 0x4e
+       RTM_GETLINK                      = 0x12
+       RTM_GETMULTICAST                 = 0x3a
+       RTM_GETNEIGH                     = 0x1e
+       RTM_GETNEIGHTBL                  = 0x42
+       RTM_GETQDISC                     = 0x26
+       RTM_GETROUTE                     = 0x1a
+       RTM_GETRULE                      = 0x22
+       RTM_GETTCLASS                    = 0x2a
+       RTM_GETTFILTER                   = 0x2e
+       RTM_MAX                          = 0x4f
+       RTM_NEWACTION                    = 0x30
+       RTM_NEWADDR                      = 0x14
+       RTM_NEWADDRLABEL                 = 0x48
+       RTM_NEWLINK                      = 0x10
+       RTM_NEWNDUSEROPT                 = 0x44
+       RTM_NEWNEIGH                     = 0x1c
+       RTM_NEWNEIGHTBL                  = 0x40
+       RTM_NEWPREFIX                    = 0x34
+       RTM_NEWQDISC                     = 0x24
+       RTM_NEWROUTE                     = 0x18
+       RTM_NEWRULE                      = 0x20
+       RTM_NEWTCLASS                    = 0x28
+       RTM_NEWTFILTER                   = 0x2c
+       RTM_NR_FAMILIES                  = 0x10
+       RTM_NR_MSGTYPES                  = 0x40
+       RTM_SETDCB                       = 0x4f
+       RTM_SETLINK                      = 0x13
+       RTM_SETNEIGHTBL                  = 0x43
+       RTNH_ALIGNTO                     = 0x4
+       RTNH_F_DEAD                      = 0x1
+       RTNH_F_ONLINK                    = 0x4
+       RTNH_F_PERVASIVE                 = 0x2
+       RTN_MAX                          = 0xb
+       RTPROT_BIRD                      = 0xc
+       RTPROT_BOOT                      = 0x3
+       RTPROT_DHCP                      = 0x10
+       RTPROT_DNROUTED                  = 0xd
+       RTPROT_GATED                     = 0x8
+       RTPROT_KERNEL                    = 0x2
+       RTPROT_MRT                       = 0xa
+       RTPROT_NTK                       = 0xf
+       RTPROT_RA                        = 0x9
+       RTPROT_REDIRECT                  = 0x1
+       RTPROT_STATIC                    = 0x4
+       RTPROT_UNSPEC                    = 0x0
+       RTPROT_XORP                      = 0xe
+       RTPROT_ZEBRA                     = 0xb
+       RT_CLASS_DEFAULT                 = 0xfd
+       RT_CLASS_LOCAL                   = 0xff
+       RT_CLASS_MAIN                    = 0xfe
+       RT_CLASS_MAX                     = 0xff
+       RT_CLASS_UNSPEC                  = 0x0
+       RUSAGE_CHILDREN                  = -0x1
+       RUSAGE_SELF                      = 0x0
+       RUSAGE_THREAD                    = 0x1
+       SCM_CREDENTIALS                  = 0x2
+       SCM_RIGHTS                       = 0x1
+       SCM_TIMESTAMP                    = 0x1d
+       SCM_TIMESTAMPING                 = 0x25
+       SCM_TIMESTAMPNS                  = 0x23
+       SHUT_RD                          = 0x0
+       SHUT_RDWR                        = 0x2
+       SHUT_WR                          = 0x1
+       SIOCADDDLCI                      = 0x8980
+       SIOCADDMULTI                     = 0x8931
+       SIOCADDRT                        = 0x890b
+       SIOCATMARK                       = 0x8905
+       SIOCDARP                         = 0x8953
+       SIOCDELDLCI                      = 0x8981
+       SIOCDELMULTI                     = 0x8932
+       SIOCDELRT                        = 0x890c
+       SIOCDEVPRIVATE                   = 0x89f0
+       SIOCDIFADDR                      = 0x8936
+       SIOCDRARP                        = 0x8960
+       SIOCGARP                         = 0x8954
+       SIOCGIFADDR                      = 0x8915
+       SIOCGIFBR                        = 0x8940
+       SIOCGIFBRDADDR                   = 0x8919
+       SIOCGIFCONF                      = 0x8912
+       SIOCGIFCOUNT                     = 0x8938
+       SIOCGIFDSTADDR                   = 0x8917
+       SIOCGIFENCAP                     = 0x8925
+       SIOCGIFFLAGS                     = 0x8913
+       SIOCGIFHWADDR                    = 0x8927
+       SIOCGIFINDEX                     = 0x8933
+       SIOCGIFMAP                       = 0x8970
+       SIOCGIFMEM                       = 0x891f
+       SIOCGIFMETRIC                    = 0x891d
+       SIOCGIFMTU                       = 0x8921
+       SIOCGIFNAME                      = 0x8910
+       SIOCGIFNETMASK                   = 0x891b
+       SIOCGIFPFLAGS                    = 0x8935
+       SIOCGIFSLAVE                     = 0x8929
+       SIOCGIFTXQLEN                    = 0x8942
+       SIOCGPGRP                        = 0x8904
+       SIOCGRARP                        = 0x8961
+       SIOCGSTAMP                       = 0x8906
+       SIOCGSTAMPNS                     = 0x8907
+       SIOCPROTOPRIVATE                 = 0x89e0
+       SIOCRTMSG                        = 0x890d
+       SIOCSARP                         = 0x8955
+       SIOCSIFADDR                      = 0x8916
+       SIOCSIFBR                        = 0x8941
+       SIOCSIFBRDADDR                   = 0x891a
+       SIOCSIFDSTADDR                   = 0x8918
+       SIOCSIFENCAP                     = 0x8926
+       SIOCSIFFLAGS                     = 0x8914
+       SIOCSIFHWADDR                    = 0x8924
+       SIOCSIFHWBROADCAST               = 0x8937
+       SIOCSIFLINK                      = 0x8911
+       SIOCSIFMAP                       = 0x8971
+       SIOCSIFMEM                       = 0x8920
+       SIOCSIFMETRIC                    = 0x891e
+       SIOCSIFMTU                       = 0x8922
+       SIOCSIFNAME                      = 0x8923
+       SIOCSIFNETMASK                   = 0x891c
+       SIOCSIFPFLAGS                    = 0x8934
+       SIOCSIFSLAVE                     = 0x8930
+       SIOCSIFTXQLEN                    = 0x8943
+       SIOCSPGRP                        = 0x8902
+       SIOCSRARP                        = 0x8962
+       SOCK_CLOEXEC                     = 0x80000
+       SOCK_DCCP                        = 0x6
+       SOCK_DGRAM                       = 0x2
+       SOCK_NONBLOCK                    = 0x800
+       SOCK_PACKET                      = 0xa
+       SOCK_RAW                         = 0x3
+       SOCK_RDM                         = 0x4
+       SOCK_SEQPACKET                   = 0x5
+       SOCK_STREAM                      = 0x1
+       SOL_AAL                          = 0x109
+       SOL_ATM                          = 0x108
+       SOL_DECNET                       = 0x105
+       SOL_ICMPV6                       = 0x3a
+       SOL_IP                           = 0x0
+       SOL_IPV6                         = 0x29
+       SOL_IRDA                         = 0x10a
+       SOL_PACKET                       = 0x107
+       SOL_RAW                          = 0xff
+       SOL_SOCKET                       = 0x1
+       SOL_TCP                          = 0x6
+       SOL_X25                          = 0x106
+       SOMAXCONN                        = 0x80
+       SO_ACCEPTCONN                    = 0x1e
+       SO_ATTACH_FILTER                 = 0x1a
+       SO_BINDTODEVICE                  = 0x19
+       SO_BROADCAST                     = 0x6
+       SO_BSDCOMPAT                     = 0xe
+       SO_DEBUG                         = 0x1
+       SO_DETACH_FILTER                 = 0x1b
+       SO_DOMAIN                        = 0x27
+       SO_DONTROUTE                     = 0x5
+       SO_ERROR                         = 0x4
+       SO_KEEPALIVE                     = 0x9
+       SO_LINGER                        = 0xd
+       SO_MARK                          = 0x24
+       SO_NO_CHECK                      = 0xb
+       SO_OOBINLINE                     = 0xa
+       SO_PASSCRED                      = 0x10
+       SO_PASSSEC                       = 0x22
+       SO_PEERCRED                      = 0x11
+       SO_PEERNAME                      = 0x1c
+       SO_PEERSEC                       = 0x1f
+       SO_PRIORITY                      = 0xc
+       SO_PROTOCOL                      = 0x26
+       SO_RCVBUF                        = 0x8
+       SO_RCVBUFFORCE                   = 0x21
+       SO_RCVLOWAT                      = 0x12
+       SO_RCVTIMEO                      = 0x14
+       SO_REUSEADDR                     = 0x2
+       SO_RXQ_OVFL                      = 0x28
+       SO_SECURITY_AUTHENTICATION       = 0x16
+       SO_SECURITY_ENCRYPTION_NETWORK   = 0x18
+       SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
+       SO_SNDBUF                        = 0x7
+       SO_SNDBUFFORCE                   = 0x20
+       SO_SNDLOWAT                      = 0x13
+       SO_SNDTIMEO                      = 0x15
+       SO_TIMESTAMP                     = 0x1d
+       SO_TIMESTAMPING                  = 0x25
+       SO_TIMESTAMPNS                   = 0x23
+       SO_TYPE                          = 0x3
+       S_BLKSIZE                        = 0x200
+       S_IEXEC                          = 0x40
+       S_IFBLK                          = 0x6000
+       S_IFCHR                          = 0x2000
+       S_IFDIR                          = 0x4000
+       S_IFIFO                          = 0x1000
+       S_IFLNK                          = 0xa000
+       S_IFMT                           = 0xf000
+       S_IFREG                          = 0x8000
+       S_IFSOCK                         = 0xc000
+       S_IREAD                          = 0x100
+       S_IRGRP                          = 0x20
+       S_IROTH                          = 0x4
+       S_IRUSR                          = 0x100
+       S_IRWXG                          = 0x38
+       S_IRWXO                          = 0x7
+       S_IRWXU                          = 0x1c0
+       S_ISGID                          = 0x400
+       S_ISUID                          = 0x800
+       S_ISVTX                          = 0x200
+       S_IWGRP                          = 0x10
+       S_IWOTH                          = 0x2
+       S_IWRITE                         = 0x80
+       S_IWUSR                          = 0x80
+       S_IXGRP                          = 0x8
+       S_IXOTH                          = 0x1
+       S_IXUSR                          = 0x40
+       TAB0                             = 0x0
+       TAB1                             = 0x800
+       TAB2                             = 0x1000
+       TAB3                             = 0x1800
+       TABDLY                           = 0x1800
+       TCFLSH                           = 0x540b
+       TCGETA                           = 0x5405
+       TCGETS                           = 0x5401
+       TCGETS2                          = 0x802c542a
+       TCGETX                           = 0x5432
+       TCIFLUSH                         = 0x0
+       TCIOFF                           = 0x2
+       TCIOFLUSH                        = 0x2
+       TCION                            = 0x3
+       TCOFLUSH                         = 0x1
+       TCOOFF                           = 0x0
+       TCOON                            = 0x1
+       TCP_CONGESTION                   = 0xd
+       TCP_CORK                         = 0x3
+       TCP_DEFER_ACCEPT                 = 0x9
+       TCP_INFO                         = 0xb
+       TCP_KEEPCNT                      = 0x6
+       TCP_KEEPIDLE                     = 0x4
+       TCP_KEEPINTVL                    = 0x5
+       TCP_LINGER2                      = 0x8
+       TCP_MAXSEG                       = 0x2
+       TCP_MAXWIN                       = 0xffff
+       TCP_MAX_WINSHIFT                 = 0xe
+       TCP_MD5SIG                       = 0xe
+       TCP_MD5SIG_MAXKEYLEN             = 0x50
+       TCP_MSS                          = 0x200
+       TCP_NODELAY                      = 0x1
+       TCP_QUICKACK                     = 0xc
+       TCP_SYNCNT                       = 0x7
+       TCP_WINDOW_CLAMP                 = 0xa
+       TCSAFLUSH                        = 0x2
+       TCSBRK                           = 0x5409
+       TCSBRKP                          = 0x5425
+       TCSETA                           = 0x5406
+       TCSETAF                          = 0x5408
+       TCSETAW                          = 0x5407
+       TCSETS                           = 0x5402
+       TCSETS2                          = 0x402c542b
+       TCSETSF                          = 0x5404
+       TCSETSF2                         = 0x402c542d
+       TCSETSW                          = 0x5403
+       TCSETSW2                         = 0x402c542c
+       TCSETX                           = 0x5433
+       TCSETXF                          = 0x5434
+       TCSETXW                          = 0x5435
+       TCXONC                           = 0x540a
+       TIOCCBRK                         = 0x5428
+       TIOCCONS                         = 0x541d
+       TIOCEXCL                         = 0x540c
+       TIOCGDEV                         = 0x80045432
+       TIOCGETD                         = 0x5424
+       TIOCGEXCL                        = 0x80045440
+       TIOCGICOUNT                      = 0x545d
+       TIOCGLCKTRMIOS                   = 0x5456
+       TIOCGPGRP                        = 0x540f
+       TIOCGPKT                         = 0x80045438
+       TIOCGPTLCK                       = 0x80045439
+       TIOCGPTN                         = 0x80045430
+       TIOCGRS485                       = 0x542e
+       TIOCGSERIAL                      = 0x541e
+       TIOCGSID                         = 0x5429
+       TIOCGSOFTCAR                     = 0x5419
+       TIOCGWINSZ                       = 0x5413
+       TIOCINQ                          = 0x541b
+       TIOCLINUX                        = 0x541c
+       TIOCMBIC                         = 0x5417
+       TIOCMBIS                         = 0x5416
+       TIOCMGET                         = 0x5415
+       TIOCMIWAIT                       = 0x545c
+       TIOCMSET                         = 0x5418
+       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                        = 0x5422
+       TIOCNXCL                         = 0x540d
+       TIOCOUTQ                         = 0x5411
+       TIOCPKT                          = 0x5420
+       TIOCPKT_DATA                     = 0x0
+       TIOCPKT_DOSTOP                   = 0x20
+       TIOCPKT_FLUSHREAD                = 0x1
+       TIOCPKT_FLUSHWRITE               = 0x2
+       TIOCPKT_IOCTL                    = 0x40
+       TIOCPKT_NOSTOP                   = 0x10
+       TIOCPKT_START                    = 0x8
+       TIOCPKT_STOP                     = 0x4
+       TIOCSBRK                         = 0x5427
+       TIOCSCTTY                        = 0x540e
+       TIOCSERCONFIG                    = 0x5453
+       TIOCSERGETLSR                    = 0x5459
+       TIOCSERGETMULTI                  = 0x545a
+       TIOCSERGSTRUCT                   = 0x5458
+       TIOCSERGWILD                     = 0x5454
+       TIOCSERSETMULTI                  = 0x545b
+       TIOCSERSWILD                     = 0x5455
+       TIOCSER_TEMT                     = 0x1
+       TIOCSETD                         = 0x5423
+       TIOCSIG                          = 0x40045436
+       TIOCSLCKTRMIOS                   = 0x5457
+       TIOCSPGRP                        = 0x5410
+       TIOCSPTLCK                       = 0x40045431
+       TIOCSRS485                       = 0x542f
+       TIOCSSERIAL                      = 0x541f
+       TIOCSSOFTCAR                     = 0x541a
+       TIOCSTI                          = 0x5412
+       TIOCSWINSZ                       = 0x5414
+       TIOCVHANGUP                      = 0x5437
+       TOSTOP                           = 0x100
+       TUNATTACHFILTER                  = 0x401054d5
+       TUNDETACHFILTER                  = 0x401054d6
+       TUNGETFEATURES                   = 0x800454cf
+       TUNGETIFF                        = 0x800454d2
+       TUNGETSNDBUF                     = 0x800454d3
+       TUNGETVNETHDRSZ                  = 0x800454d7
+       TUNSETDEBUG                      = 0x400454c9
+       TUNSETGROUP                      = 0x400454ce
+       TUNSETIFF                        = 0x400454ca
+       TUNSETLINK                       = 0x400454cd
+       TUNSETNOCSUM                     = 0x400454c8
+       TUNSETOFFLOAD                    = 0x400454d0
+       TUNSETOWNER                      = 0x400454cc
+       TUNSETPERSIST                    = 0x400454cb
+       TUNSETSNDBUF                     = 0x400454d4
+       TUNSETTXFILTER                   = 0x400454d1
+       TUNSETVNETHDRSZ                  = 0x400454d8
+       VDISCARD                         = 0xd
+       VEOF                             = 0x4
+       VEOL                             = 0xb
+       VEOL2                            = 0x10
+       VERASE                           = 0x2
+       VINTR                            = 0x0
+       VKILL                            = 0x3
+       VLNEXT                           = 0xf
+       VMIN                             = 0x6
+       VQUIT                            = 0x1
+       VREPRINT                         = 0xc
+       VSTART                           = 0x8
+       VSTOP                            = 0x9
+       VSUSP                            = 0xa
+       VSWTC                            = 0x7
+       VT0                              = 0x0
+       VT1                              = 0x4000
+       VTDLY                            = 0x4000
+       VTIME                            = 0x5
+       VWERASE                          = 0xe
+       WALL                             = 0x40000000
+       WCLONE                           = 0x80000000
+       WCONTINUED                       = 0x8
+       WEXITED                          = 0x4
+       WNOHANG                          = 0x1
+       WNOTHREAD                        = 0x20000000
+       WNOWAIT                          = 0x1000000
+       WORDSIZE                         = 0x40
+       WSTOPPED                         = 0x2
+       WUNTRACED                        = 0x2
+       XCASE                            = 0x4
+       XTABS                            = 0x1800
+)
+
+// Errors
+const (
+       E2BIG           = syscall.Errno(0x7)
+       EACCES          = syscall.Errno(0xd)
+       EADDRINUSE      = syscall.Errno(0x62)
+       EADDRNOTAVAIL   = syscall.Errno(0x63)
+       EADV            = syscall.Errno(0x44)
+       EAFNOSUPPORT    = syscall.Errno(0x61)
+       EAGAIN          = syscall.Errno(0xb)
+       EALREADY        = syscall.Errno(0x72)
+       EBADE           = syscall.Errno(0x34)
+       EBADF           = syscall.Errno(0x9)
+       EBADFD          = syscall.Errno(0x4d)
+       EBADMSG         = syscall.Errno(0x4a)
+       EBADR           = syscall.Errno(0x35)
+       EBADRQC         = syscall.Errno(0x38)
+       EBADSLT         = syscall.Errno(0x39)
+       EBFONT          = syscall.Errno(0x3b)
+       EBUSY           = syscall.Errno(0x10)
+       ECANCELED       = syscall.Errno(0x7d)
+       ECHILD          = syscall.Errno(0xa)
+       ECHRNG          = syscall.Errno(0x2c)
+       ECOMM           = syscall.Errno(0x46)
+       ECONNABORTED    = syscall.Errno(0x67)
+       ECONNREFUSED    = syscall.Errno(0x6f)
+       ECONNRESET      = syscall.Errno(0x68)
+       EDEADLK         = syscall.Errno(0x23)
+       EDEADLOCK       = syscall.Errno(0x23)
+       EDESTADDRREQ    = syscall.Errno(0x59)
+       EDOM            = syscall.Errno(0x21)
+       EDOTDOT         = syscall.Errno(0x49)
+       EDQUOT          = syscall.Errno(0x7a)
+       EEXIST          = syscall.Errno(0x11)
+       EFAULT          = syscall.Errno(0xe)
+       EFBIG           = syscall.Errno(0x1b)
+       EHOSTDOWN       = syscall.Errno(0x70)
+       EHOSTUNREACH    = syscall.Errno(0x71)
+       EHWPOISON       = syscall.Errno(0x85)
+       EIDRM           = syscall.Errno(0x2b)
+       EILSEQ          = syscall.Errno(0x54)
+       EINPROGRESS     = syscall.Errno(0x73)
+       EINTR           = syscall.Errno(0x4)
+       EINVAL          = syscall.Errno(0x16)
+       EIO             = syscall.Errno(0x5)
+       EISCONN         = syscall.Errno(0x6a)
+       EISDIR          = syscall.Errno(0x15)
+       EISNAM          = syscall.Errno(0x78)
+       EKEYEXPIRED     = syscall.Errno(0x7f)
+       EKEYREJECTED    = syscall.Errno(0x81)
+       EKEYREVOKED     = syscall.Errno(0x80)
+       EL2HLT          = syscall.Errno(0x33)
+       EL2NSYNC        = syscall.Errno(0x2d)
+       EL3HLT          = syscall.Errno(0x2e)
+       EL3RST          = syscall.Errno(0x2f)
+       ELIBACC         = syscall.Errno(0x4f)
+       ELIBBAD         = syscall.Errno(0x50)
+       ELIBEXEC        = syscall.Errno(0x53)
+       ELIBMAX         = syscall.Errno(0x52)
+       ELIBSCN         = syscall.Errno(0x51)
+       ELNRNG          = syscall.Errno(0x30)
+       ELOOP           = syscall.Errno(0x28)
+       EMEDIUMTYPE     = syscall.Errno(0x7c)
+       EMFILE          = syscall.Errno(0x18)
+       EMLINK          = syscall.Errno(0x1f)
+       EMSGSIZE        = syscall.Errno(0x5a)
+       EMULTIHOP       = syscall.Errno(0x48)
+       ENAMETOOLONG    = syscall.Errno(0x24)
+       ENAVAIL         = syscall.Errno(0x77)
+       ENETDOWN        = syscall.Errno(0x64)
+       ENETRESET       = syscall.Errno(0x66)
+       ENETUNREACH     = syscall.Errno(0x65)
+       ENFILE          = syscall.Errno(0x17)
+       ENOANO          = syscall.Errno(0x37)
+       ENOBUFS         = syscall.Errno(0x69)
+       ENOCSI          = syscall.Errno(0x32)
+       ENODATA         = syscall.Errno(0x3d)
+       ENODEV          = syscall.Errno(0x13)
+       ENOENT          = syscall.Errno(0x2)
+       ENOEXEC         = syscall.Errno(0x8)
+       ENOKEY          = syscall.Errno(0x7e)
+       ENOLCK          = syscall.Errno(0x25)
+       ENOLINK         = syscall.Errno(0x43)
+       ENOMEDIUM       = syscall.Errno(0x7b)
+       ENOMEM          = syscall.Errno(0xc)
+       ENOMSG          = syscall.Errno(0x2a)
+       ENONET          = syscall.Errno(0x40)
+       ENOPKG          = syscall.Errno(0x41)
+       ENOPROTOOPT     = syscall.Errno(0x5c)
+       ENOSPC          = syscall.Errno(0x1c)
+       ENOSR           = syscall.Errno(0x3f)
+       ENOSTR          = syscall.Errno(0x3c)
+       ENOSYS          = syscall.Errno(0x26)
+       ENOTBLK         = syscall.Errno(0xf)
+       ENOTCONN        = syscall.Errno(0x6b)
+       ENOTDIR         = syscall.Errno(0x14)
+       ENOTEMPTY       = syscall.Errno(0x27)
+       ENOTNAM         = syscall.Errno(0x76)
+       ENOTRECOVERABLE = syscall.Errno(0x83)
+       ENOTSOCK        = syscall.Errno(0x58)
+       ENOTSUP         = syscall.Errno(0x5f)
+       ENOTTY          = syscall.Errno(0x19)
+       ENOTUNIQ        = syscall.Errno(0x4c)
+       ENXIO           = syscall.Errno(0x6)
+       EOPNOTSUPP      = syscall.Errno(0x5f)
+       EOVERFLOW       = syscall.Errno(0x4b)
+       EOWNERDEAD      = syscall.Errno(0x82)
+       EPERM           = syscall.Errno(0x1)
+       EPFNOSUPPORT    = syscall.Errno(0x60)
+       EPIPE           = syscall.Errno(0x20)
+       EPROTO          = syscall.Errno(0x47)
+       EPROTONOSUPPORT = syscall.Errno(0x5d)
+       EPROTOTYPE      = syscall.Errno(0x5b)
+       ERANGE          = syscall.Errno(0x22)
+       EREMCHG         = syscall.Errno(0x4e)
+       EREMOTE         = syscall.Errno(0x42)
+       EREMOTEIO       = syscall.Errno(0x79)
+       ERESTART        = syscall.Errno(0x55)
+       ERFKILL         = syscall.Errno(0x84)
+       EROFS           = syscall.Errno(0x1e)
+       ESHUTDOWN       = syscall.Errno(0x6c)
+       ESOCKTNOSUPPORT = syscall.Errno(0x5e)
+       ESPIPE          = syscall.Errno(0x1d)
+       ESRCH           = syscall.Errno(0x3)
+       ESRMNT          = syscall.Errno(0x45)
+       ESTALE          = syscall.Errno(0x74)
+       ESTRPIPE        = syscall.Errno(0x56)
+       ETIME           = syscall.Errno(0x3e)
+       ETIMEDOUT       = syscall.Errno(0x6e)
+       ETOOMANYREFS    = syscall.Errno(0x6d)
+       ETXTBSY         = syscall.Errno(0x1a)
+       EUCLEAN         = syscall.Errno(0x75)
+       EUNATCH         = syscall.Errno(0x31)
+       EUSERS          = syscall.Errno(0x57)
+       EWOULDBLOCK     = syscall.Errno(0xb)
+       EXDEV           = syscall.Errno(0x12)
+       EXFULL          = syscall.Errno(0x36)
+)
+
+// Signals
+const (
+       SIGABRT   = syscall.Signal(0x6)
+       SIGALRM   = syscall.Signal(0xe)
+       SIGBUS    = syscall.Signal(0x7)
+       SIGCHLD   = syscall.Signal(0x11)
+       SIGCLD    = syscall.Signal(0x11)
+       SIGCONT   = syscall.Signal(0x12)
+       SIGFPE    = syscall.Signal(0x8)
+       SIGHUP    = syscall.Signal(0x1)
+       SIGILL    = syscall.Signal(0x4)
+       SIGINT    = syscall.Signal(0x2)
+       SIGIO     = syscall.Signal(0x1d)
+       SIGIOT    = syscall.Signal(0x6)
+       SIGKILL   = syscall.Signal(0x9)
+       SIGPIPE   = syscall.Signal(0xd)
+       SIGPOLL   = syscall.Signal(0x1d)
+       SIGPROF   = syscall.Signal(0x1b)
+       SIGPWR    = syscall.Signal(0x1e)
+       SIGQUIT   = syscall.Signal(0x3)
+       SIGSEGV   = syscall.Signal(0xb)
+       SIGSTKFLT = syscall.Signal(0x10)
+       SIGSTOP   = syscall.Signal(0x13)
+       SIGSYS    = syscall.Signal(0x1f)
+       SIGTERM   = syscall.Signal(0xf)
+       SIGTRAP   = syscall.Signal(0x5)
+       SIGTSTP   = syscall.Signal(0x14)
+       SIGTTIN   = syscall.Signal(0x15)
+       SIGTTOU   = syscall.Signal(0x16)
+       SIGUNUSED = syscall.Signal(0x1f)
+       SIGURG    = syscall.Signal(0x17)
+       SIGUSR1   = syscall.Signal(0xa)
+       SIGUSR2   = syscall.Signal(0xc)
+       SIGVTALRM = syscall.Signal(0x1a)
+       SIGWINCH  = syscall.Signal(0x1c)
+       SIGXCPU   = syscall.Signal(0x18)
+       SIGXFSZ   = syscall.Signal(0x19)
+)
+
+// 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:   "no such device or address",
+       7:   "argument list too long",
+       8:   "exec format error",
+       9:   "bad file descriptor",
+       10:  "no child processes",
+       11:  "resource temporarily unavailable",
+       12:  "cannot allocate memory",
+       13:  "permission denied",
+       14:  "bad address",
+       15:  "block device required",
+       16:  "device or resource busy",
+       17:  "file exists",
+       18:  "invalid cross-device link",
+       19:  "no such 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:  "numerical result out of range",
+       35:  "resource deadlock avoided",
+       36:  "file name too long",
+       37:  "no locks available",
+       38:  "function not implemented",
+       39:  "directory not empty",
+       40:  "too many levels of symbolic links",
+       42:  "no message of desired type",
+       43:  "identifier removed",
+       44:  "channel number out of range",
+       45:  "level 2 not synchronized",
+       46:  "level 3 halted",
+       47:  "level 3 reset",
+       48:  "link number out of range",
+       49:  "protocol driver not attached",
+       50:  "no CSI structure available",
+       51:  "level 2 halted",
+       52:  "invalid exchange",
+       53:  "invalid request descriptor",
+       54:  "exchange full",
+       55:  "no anode",
+       56:  "invalid request code",
+       57:  "invalid slot",
+       59:  "bad font file format",
+       60:  "device not a stream",
+       61:  "no data available",
+       62:  "timer expired",
+       63:  "out of streams resources",
+       64:  "machine is not on the network",
+       65:  "package not installed",
+       66:  "object is remote",
+       67:  "link has been severed",
+       68:  "advertise error",
+       69:  "srmount error",
+       70:  "communication error on send",
+       71:  "protocol error",
+       72:  "multihop attempted",
+       73:  "RFS specific error",
+       74:  "bad message",
+       75:  "value too large for defined data type",
+       76:  "name not unique on network",
+       77:  "file descriptor in bad state",
+       78:  "remote address changed",
+       79:  "can not access a needed shared library",
+       80:  "accessing a corrupted shared library",
+       81:  ".lib section in a.out corrupted",
+       82:  "attempting to link in too many shared libraries",
+       83:  "cannot exec a shared library directly",
+       84:  "invalid or incomplete multibyte or wide character",
+       85:  "interrupted system call should be restarted",
+       86:  "streams pipe error",
+       87:  "too many users",
+       88:  "socket operation on non-socket",
+       89:  "destination address required",
+       90:  "message too long",
+       91:  "protocol wrong type for socket",
+       92:  "protocol not available",
+       93:  "protocol not supported",
+       94:  "socket type not supported",
+       95:  "operation not supported",
+       96:  "protocol family not supported",
+       97:  "address family not supported by protocol",
+       98:  "address already in use",
+       99:  "cannot assign requested address",
+       100: "network is down",
+       101: "network is unreachable",
+       102: "network dropped connection on reset",
+       103: "software caused connection abort",
+       104: "connection reset by peer",
+       105: "no buffer space available",
+       106: "transport endpoint is already connected",
+       107: "transport endpoint is not connected",
+       108: "cannot send after transport endpoint shutdown",
+       109: "too many references: cannot splice",
+       110: "connection timed out",
+       111: "connection refused",
+       112: "host is down",
+       113: "no route to host",
+       114: "operation already in progress",
+       115: "operation now in progress",
+       116: "stale NFS file handle",
+       117: "structure needs cleaning",
+       118: "not a XENIX named type file",
+       119: "no XENIX semaphores available",
+       120: "is a named type file",
+       121: "remote I/O error",
+       122: "disk quota exceeded",
+       123: "no medium found",
+       124: "wrong medium type",
+       125: "operation canceled",
+       126: "required key not available",
+       127: "key has expired",
+       128: "key has been revoked",
+       129: "key was rejected by service",
+       130: "owner died",
+       131: "state not recoverable",
+       132: "operation not possible due to RF-kill",
+       133: "unknown error 133",
+}
+
+// Signal table
+var signals = [...]string{
+       1:  "hangup",
+       2:  "interrupt",
+       3:  "quit",
+       4:  "illegal instruction",
+       5:  "trace/breakpoint trap",
+       6:  "aborted",
+       7:  "bus error",
+       8:  "floating point exception",
+       9:  "killed",
+       10: "user defined signal 1",
+       11: "segmentation fault",
+       12: "user defined signal 2",
+       13: "broken pipe",
+       14: "alarm clock",
+       15: "terminated",
+       16: "stack fault",
+       17: "child exited",
+       18: "continued",
+       19: "stopped (signal)",
+       20: "stopped",
+       21: "stopped (tty input)",
+       22: "stopped (tty output)",
+       23: "urgent I/O condition",
+       24: "CPU time limit exceeded",
+       25: "file size limit exceeded",
+       26: "virtual timer expired",
+       27: "profiling timer expired",
+       28: "window changed",
+       29: "I/O possible",
+       30: "power failure",
+       31: "bad system call",
+}
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go
new file mode 100644 (file)
index 0000000..1cc76a7
--- /dev/null
@@ -0,0 +1,1742 @@
+// mkerrors.sh
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build arm,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- _const.go
+
+package unix
+
+import "syscall"
+
+const (
+       AF_ALG                           = 0x26
+       AF_APPLETALK                     = 0x5
+       AF_ASH                           = 0x12
+       AF_ATMPVC                        = 0x8
+       AF_ATMSVC                        = 0x14
+       AF_AX25                          = 0x3
+       AF_BLUETOOTH                     = 0x1f
+       AF_BRIDGE                        = 0x7
+       AF_CAIF                          = 0x25
+       AF_CAN                           = 0x1d
+       AF_DECnet                        = 0xc
+       AF_ECONET                        = 0x13
+       AF_FILE                          = 0x1
+       AF_IEEE802154                    = 0x24
+       AF_INET                          = 0x2
+       AF_INET6                         = 0xa
+       AF_IPX                           = 0x4
+       AF_IRDA                          = 0x17
+       AF_ISDN                          = 0x22
+       AF_IUCV                          = 0x20
+       AF_KEY                           = 0xf
+       AF_LLC                           = 0x1a
+       AF_LOCAL                         = 0x1
+       AF_MAX                           = 0x27
+       AF_NETBEUI                       = 0xd
+       AF_NETLINK                       = 0x10
+       AF_NETROM                        = 0x6
+       AF_PACKET                        = 0x11
+       AF_PHONET                        = 0x23
+       AF_PPPOX                         = 0x18
+       AF_RDS                           = 0x15
+       AF_ROSE                          = 0xb
+       AF_ROUTE                         = 0x10
+       AF_RXRPC                         = 0x21
+       AF_SECURITY                      = 0xe
+       AF_SNA                           = 0x16
+       AF_TIPC                          = 0x1e
+       AF_UNIX                          = 0x1
+       AF_UNSPEC                        = 0x0
+       AF_WANPIPE                       = 0x19
+       AF_X25                           = 0x9
+       ARPHRD_ADAPT                     = 0x108
+       ARPHRD_APPLETLK                  = 0x8
+       ARPHRD_ARCNET                    = 0x7
+       ARPHRD_ASH                       = 0x30d
+       ARPHRD_ATM                       = 0x13
+       ARPHRD_AX25                      = 0x3
+       ARPHRD_BIF                       = 0x307
+       ARPHRD_CHAOS                     = 0x5
+       ARPHRD_CISCO                     = 0x201
+       ARPHRD_CSLIP                     = 0x101
+       ARPHRD_CSLIP6                    = 0x103
+       ARPHRD_DDCMP                     = 0x205
+       ARPHRD_DLCI                      = 0xf
+       ARPHRD_ECONET                    = 0x30e
+       ARPHRD_EETHER                    = 0x2
+       ARPHRD_ETHER                     = 0x1
+       ARPHRD_EUI64                     = 0x1b
+       ARPHRD_FCAL                      = 0x311
+       ARPHRD_FCFABRIC                  = 0x313
+       ARPHRD_FCPL                      = 0x312
+       ARPHRD_FCPP                      = 0x310
+       ARPHRD_FDDI                      = 0x306
+       ARPHRD_FRAD                      = 0x302
+       ARPHRD_HDLC                      = 0x201
+       ARPHRD_HIPPI                     = 0x30c
+       ARPHRD_HWX25                     = 0x110
+       ARPHRD_IEEE1394                  = 0x18
+       ARPHRD_IEEE802                   = 0x6
+       ARPHRD_IEEE80211                 = 0x321
+       ARPHRD_IEEE80211_PRISM           = 0x322
+       ARPHRD_IEEE80211_RADIOTAP        = 0x323
+       ARPHRD_IEEE802154                = 0x324
+       ARPHRD_IEEE802154_PHY            = 0x325
+       ARPHRD_IEEE802_TR                = 0x320
+       ARPHRD_INFINIBAND                = 0x20
+       ARPHRD_IPDDP                     = 0x309
+       ARPHRD_IPGRE                     = 0x30a
+       ARPHRD_IRDA                      = 0x30f
+       ARPHRD_LAPB                      = 0x204
+       ARPHRD_LOCALTLK                  = 0x305
+       ARPHRD_LOOPBACK                  = 0x304
+       ARPHRD_METRICOM                  = 0x17
+       ARPHRD_NETROM                    = 0x0
+       ARPHRD_NONE                      = 0xfffe
+       ARPHRD_PIMREG                    = 0x30b
+       ARPHRD_PPP                       = 0x200
+       ARPHRD_PRONET                    = 0x4
+       ARPHRD_RAWHDLC                   = 0x206
+       ARPHRD_ROSE                      = 0x10e
+       ARPHRD_RSRVD                     = 0x104
+       ARPHRD_SIT                       = 0x308
+       ARPHRD_SKIP                      = 0x303
+       ARPHRD_SLIP                      = 0x100
+       ARPHRD_SLIP6                     = 0x102
+       ARPHRD_TUNNEL                    = 0x300
+       ARPHRD_TUNNEL6                   = 0x301
+       ARPHRD_VOID                      = 0xffff
+       ARPHRD_X25                       = 0x10f
+       B0                               = 0x0
+       B1000000                         = 0x1008
+       B110                             = 0x3
+       B115200                          = 0x1002
+       B1152000                         = 0x1009
+       B1200                            = 0x9
+       B134                             = 0x4
+       B150                             = 0x5
+       B1500000                         = 0x100a
+       B1800                            = 0xa
+       B19200                           = 0xe
+       B200                             = 0x6
+       B2000000                         = 0x100b
+       B230400                          = 0x1003
+       B2400                            = 0xb
+       B2500000                         = 0x100c
+       B300                             = 0x7
+       B3000000                         = 0x100d
+       B3500000                         = 0x100e
+       B38400                           = 0xf
+       B4000000                         = 0x100f
+       B460800                          = 0x1004
+       B4800                            = 0xc
+       B50                              = 0x1
+       B500000                          = 0x1005
+       B57600                           = 0x1001
+       B576000                          = 0x1006
+       B600                             = 0x8
+       B75                              = 0x2
+       B921600                          = 0x1007
+       B9600                            = 0xd
+       BOTHER                           = 0x1000
+       BPF_A                            = 0x10
+       BPF_ABS                          = 0x20
+       BPF_ADD                          = 0x0
+       BPF_ALU                          = 0x4
+       BPF_AND                          = 0x50
+       BPF_B                            = 0x10
+       BPF_DIV                          = 0x30
+       BPF_H                            = 0x8
+       BPF_IMM                          = 0x0
+       BPF_IND                          = 0x40
+       BPF_JA                           = 0x0
+       BPF_JEQ                          = 0x10
+       BPF_JGE                          = 0x30
+       BPF_JGT                          = 0x20
+       BPF_JMP                          = 0x5
+       BPF_JSET                         = 0x40
+       BPF_K                            = 0x0
+       BPF_LD                           = 0x0
+       BPF_LDX                          = 0x1
+       BPF_LEN                          = 0x80
+       BPF_LSH                          = 0x60
+       BPF_MAJOR_VERSION                = 0x1
+       BPF_MAXINSNS                     = 0x1000
+       BPF_MEM                          = 0x60
+       BPF_MEMWORDS                     = 0x10
+       BPF_MINOR_VERSION                = 0x1
+       BPF_MISC                         = 0x7
+       BPF_MSH                          = 0xa0
+       BPF_MUL                          = 0x20
+       BPF_NEG                          = 0x80
+       BPF_OR                           = 0x40
+       BPF_RET                          = 0x6
+       BPF_RSH                          = 0x70
+       BPF_ST                           = 0x2
+       BPF_STX                          = 0x3
+       BPF_SUB                          = 0x10
+       BPF_TAX                          = 0x0
+       BPF_TXA                          = 0x80
+       BPF_W                            = 0x0
+       BPF_X                            = 0x8
+       BRKINT                           = 0x2
+       BS0                              = 0x0
+       BS1                              = 0x2000
+       BSDLY                            = 0x2000
+       CBAUD                            = 0x100f
+       CBAUDEX                          = 0x1000
+       CFLUSH                           = 0xf
+       CIBAUD                           = 0x100f0000
+       CLOCAL                           = 0x800
+       CLOCK_BOOTTIME                   = 0x7
+       CLOCK_BOOTTIME_ALARM             = 0x9
+       CLOCK_DEFAULT                    = 0x0
+       CLOCK_EXT                        = 0x1
+       CLOCK_INT                        = 0x2
+       CLOCK_MONOTONIC                  = 0x1
+       CLOCK_MONOTONIC_COARSE           = 0x6
+       CLOCK_MONOTONIC_RAW              = 0x4
+       CLOCK_PROCESS_CPUTIME_ID         = 0x2
+       CLOCK_REALTIME                   = 0x0
+       CLOCK_REALTIME_ALARM             = 0x8
+       CLOCK_REALTIME_COARSE            = 0x5
+       CLOCK_THREAD_CPUTIME_ID          = 0x3
+       CLOCK_TXFROMRX                   = 0x4
+       CLOCK_TXINT                      = 0x3
+       CLONE_CHILD_CLEARTID             = 0x200000
+       CLONE_CHILD_SETTID               = 0x1000000
+       CLONE_DETACHED                   = 0x400000
+       CLONE_FILES                      = 0x400
+       CLONE_FS                         = 0x200
+       CLONE_IO                         = 0x80000000
+       CLONE_NEWIPC                     = 0x8000000
+       CLONE_NEWNET                     = 0x40000000
+       CLONE_NEWNS                      = 0x20000
+       CLONE_NEWPID                     = 0x20000000
+       CLONE_NEWUSER                    = 0x10000000
+       CLONE_NEWUTS                     = 0x4000000
+       CLONE_PARENT                     = 0x8000
+       CLONE_PARENT_SETTID              = 0x100000
+       CLONE_PTRACE                     = 0x2000
+       CLONE_SETTLS                     = 0x80000
+       CLONE_SIGHAND                    = 0x800
+       CLONE_SYSVSEM                    = 0x40000
+       CLONE_THREAD                     = 0x10000
+       CLONE_UNTRACED                   = 0x800000
+       CLONE_VFORK                      = 0x4000
+       CLONE_VM                         = 0x100
+       CMSPAR                           = 0x40000000
+       CR0                              = 0x0
+       CR1                              = 0x200
+       CR2                              = 0x400
+       CR3                              = 0x600
+       CRDLY                            = 0x600
+       CREAD                            = 0x80
+       CRTSCTS                          = 0x80000000
+       CS5                              = 0x0
+       CS6                              = 0x10
+       CS7                              = 0x20
+       CS8                              = 0x30
+       CSIGNAL                          = 0xff
+       CSIZE                            = 0x30
+       CSTART                           = 0x11
+       CSTATUS                          = 0x0
+       CSTOP                            = 0x13
+       CSTOPB                           = 0x40
+       CSUSP                            = 0x1a
+       DT_BLK                           = 0x6
+       DT_CHR                           = 0x2
+       DT_DIR                           = 0x4
+       DT_FIFO                          = 0x1
+       DT_LNK                           = 0xa
+       DT_REG                           = 0x8
+       DT_SOCK                          = 0xc
+       DT_UNKNOWN                       = 0x0
+       DT_WHT                           = 0xe
+       ELF_NGREG                        = 0x12
+       ELF_PRARGSZ                      = 0x50
+       ECHO                             = 0x8
+       ECHOCTL                          = 0x200
+       ECHOE                            = 0x10
+       ECHOK                            = 0x20
+       ECHOKE                           = 0x800
+       ECHONL                           = 0x40
+       ECHOPRT                          = 0x400
+       EPOLLERR                         = 0x8
+       EPOLLET                          = -0x80000000
+       EPOLLHUP                         = 0x10
+       EPOLLIN                          = 0x1
+       EPOLLMSG                         = 0x400
+       EPOLLONESHOT                     = 0x40000000
+       EPOLLOUT                         = 0x4
+       EPOLLPRI                         = 0x2
+       EPOLLRDBAND                      = 0x80
+       EPOLLRDHUP                       = 0x2000
+       EPOLLRDNORM                      = 0x40
+       EPOLLWRBAND                      = 0x200
+       EPOLLWRNORM                      = 0x100
+       EPOLL_CLOEXEC                    = 0x80000
+       EPOLL_CTL_ADD                    = 0x1
+       EPOLL_CTL_DEL                    = 0x2
+       EPOLL_CTL_MOD                    = 0x3
+       EPOLL_NONBLOCK                   = 0x800
+       ETH_P_1588                       = 0x88f7
+       ETH_P_8021Q                      = 0x8100
+       ETH_P_802_2                      = 0x4
+       ETH_P_802_3                      = 0x1
+       ETH_P_AARP                       = 0x80f3
+       ETH_P_ALL                        = 0x3
+       ETH_P_AOE                        = 0x88a2
+       ETH_P_ARCNET                     = 0x1a
+       ETH_P_ARP                        = 0x806
+       ETH_P_ATALK                      = 0x809b
+       ETH_P_ATMFATE                    = 0x8884
+       ETH_P_ATMMPOA                    = 0x884c
+       ETH_P_AX25                       = 0x2
+       ETH_P_BPQ                        = 0x8ff
+       ETH_P_CAIF                       = 0xf7
+       ETH_P_CAN                        = 0xc
+       ETH_P_CONTROL                    = 0x16
+       ETH_P_CUST                       = 0x6006
+       ETH_P_DDCMP                      = 0x6
+       ETH_P_DEC                        = 0x6000
+       ETH_P_DIAG                       = 0x6005
+       ETH_P_DNA_DL                     = 0x6001
+       ETH_P_DNA_RC                     = 0x6002
+       ETH_P_DNA_RT                     = 0x6003
+       ETH_P_DSA                        = 0x1b
+       ETH_P_ECONET                     = 0x18
+       ETH_P_EDSA                       = 0xdada
+       ETH_P_FCOE                       = 0x8906
+       ETH_P_FIP                        = 0x8914
+       ETH_P_HDLC                       = 0x19
+       ETH_P_IEEE802154                 = 0xf6
+       ETH_P_IEEEPUP                    = 0xa00
+       ETH_P_IEEEPUPAT                  = 0xa01
+       ETH_P_IP                         = 0x800
+       ETH_P_IPV6                       = 0x86dd
+       ETH_P_IPX                        = 0x8137
+       ETH_P_IRDA                       = 0x17
+       ETH_P_LAT                        = 0x6004
+       ETH_P_LINK_CTL                   = 0x886c
+       ETH_P_LOCALTALK                  = 0x9
+       ETH_P_LOOP                       = 0x60
+       ETH_P_MOBITEX                    = 0x15
+       ETH_P_MPLS_MC                    = 0x8848
+       ETH_P_MPLS_UC                    = 0x8847
+       ETH_P_PAE                        = 0x888e
+       ETH_P_PAUSE                      = 0x8808
+       ETH_P_PHONET                     = 0xf5
+       ETH_P_PPPTALK                    = 0x10
+       ETH_P_PPP_DISC                   = 0x8863
+       ETH_P_PPP_MP                     = 0x8
+       ETH_P_PPP_SES                    = 0x8864
+       ETH_P_PUP                        = 0x200
+       ETH_P_PUPAT                      = 0x201
+       ETH_P_RARP                       = 0x8035
+       ETH_P_SCA                        = 0x6007
+       ETH_P_SLOW                       = 0x8809
+       ETH_P_SNAP                       = 0x5
+       ETH_P_TEB                        = 0x6558
+       ETH_P_TIPC                       = 0x88ca
+       ETH_P_TRAILER                    = 0x1c
+       ETH_P_TR_802_2                   = 0x11
+       ETH_P_WAN_PPP                    = 0x7
+       ETH_P_WCCP                       = 0x883e
+       ETH_P_X25                        = 0x805
+       EXTA                             = 0xe
+       EXTB                             = 0xf
+       EXTPROC                          = 0x10000
+       FD_CLOEXEC                       = 0x1
+       FD_SETSIZE                       = 0x400
+       FF0                              = 0x0
+       FF1                              = 0x8000
+       FFDLY                            = 0x8000
+       FLUSHO                           = 0x1000
+       F_DUPFD                          = 0x0
+       F_DUPFD_CLOEXEC                  = 0x406
+       F_EXLCK                          = 0x4
+       F_GETFD                          = 0x1
+       F_GETFL                          = 0x3
+       F_GETLEASE                       = 0x401
+       F_GETLK                          = 0xc
+       F_GETLK64                        = 0xc
+       F_GETOWN                         = 0x9
+       F_GETOWN_EX                      = 0x10
+       F_GETPIPE_SZ                     = 0x408
+       F_GETSIG                         = 0xb
+       F_LOCK                           = 0x1
+       F_NOTIFY                         = 0x402
+       F_OK                             = 0x0
+       F_RDLCK                          = 0x0
+       F_SETFD                          = 0x2
+       F_SETFL                          = 0x4
+       F_SETLEASE                       = 0x400
+       F_SETLK                          = 0xd
+       F_SETLK64                        = 0xd
+       F_SETLKW                         = 0xe
+       F_SETLKW64                       = 0xe
+       F_SETOWN                         = 0x8
+       F_SETOWN_EX                      = 0xf
+       F_SETPIPE_SZ                     = 0x407
+       F_SETSIG                         = 0xa
+       F_SHLCK                          = 0x8
+       F_TEST                           = 0x3
+       F_TLOCK                          = 0x2
+       F_ULOCK                          = 0x0
+       F_UNLCK                          = 0x2
+       F_WRLCK                          = 0x1
+       HUPCL                            = 0x400
+       IBSHIFT                          = 0x10
+       ICANON                           = 0x2
+       ICMPV6_FILTER                    = 0x1
+       ICRNL                            = 0x100
+       IEXTEN                           = 0x8000
+       IFA_F_DADFAILED                  = 0x8
+       IFA_F_DEPRECATED                 = 0x20
+       IFA_F_HOMEADDRESS                = 0x10
+       IFA_F_NODAD                      = 0x2
+       IFA_F_OPTIMISTIC                 = 0x4
+       IFA_F_PERMANENT                  = 0x80
+       IFA_F_SECONDARY                  = 0x1
+       IFA_F_TEMPORARY                  = 0x1
+       IFA_F_TENTATIVE                  = 0x40
+       IFA_MAX                          = 0x7
+       IFF_ALLMULTI                     = 0x200
+       IFF_AUTOMEDIA                    = 0x4000
+       IFF_BROADCAST                    = 0x2
+       IFF_DEBUG                        = 0x4
+       IFF_DYNAMIC                      = 0x8000
+       IFF_LOOPBACK                     = 0x8
+       IFF_MASTER                       = 0x400
+       IFF_MULTICAST                    = 0x1000
+       IFF_NOARP                        = 0x80
+       IFF_NOTRAILERS                   = 0x20
+       IFF_NO_PI                        = 0x1000
+       IFF_ONE_QUEUE                    = 0x2000
+       IFF_POINTOPOINT                  = 0x10
+       IFF_PORTSEL                      = 0x2000
+       IFF_PROMISC                      = 0x100
+       IFF_RUNNING                      = 0x40
+       IFF_SLAVE                        = 0x800
+       IFF_TAP                          = 0x2
+       IFF_TUN                          = 0x1
+       IFF_TUN_EXCL                     = 0x8000
+       IFF_UP                           = 0x1
+       IFF_VNET_HDR                     = 0x4000
+       IFNAMSIZ                         = 0x10
+       IGNBRK                           = 0x1
+       IGNCR                            = 0x80
+       IGNPAR                           = 0x4
+       IMAXBEL                          = 0x2000
+       INLCR                            = 0x40
+       INPCK                            = 0x10
+       IN_ACCESS                        = 0x1
+       IN_ALL_EVENTS                    = 0xfff
+       IN_ATTRIB                        = 0x4
+       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_CLOEXEC                       = 0x80000
+       IN_CLOSE                         = 0x18
+       IN_CLOSE_NOWRITE                 = 0x10
+       IN_CLOSE_WRITE                   = 0x8
+       IN_CREATE                        = 0x100
+       IN_DELETE                        = 0x200
+       IN_DELETE_SELF                   = 0x400
+       IN_DONT_FOLLOW                   = 0x2000000
+       IN_EXCL_UNLINK                   = 0x4000000
+       IN_IGNORED                       = 0x8000
+       IN_ISDIR                         = 0x40000000
+       IN_LOOPBACKNET                   = 0x7f
+       IN_MASK_ADD                      = 0x20000000
+       IN_MODIFY                        = 0x2
+       IN_MOVE                          = 0xc0
+       IN_MOVED_FROM                    = 0x40
+       IN_MOVED_TO                      = 0x80
+       IN_MOVE_SELF                     = 0x800
+       IN_NONBLOCK                      = 0x800
+       IN_ONESHOT                       = 0x80000000
+       IN_ONLYDIR                       = 0x1000000
+       IN_OPEN                          = 0x20
+       IN_Q_OVERFLOW                    = 0x4000
+       IN_UNMOUNT                       = 0x2000
+       IPPROTO_AH                       = 0x33
+       IPPROTO_COMP                     = 0x6c
+       IPPROTO_DCCP                     = 0x21
+       IPPROTO_DSTOPTS                  = 0x3c
+       IPPROTO_EGP                      = 0x8
+       IPPROTO_ENCAP                    = 0x62
+       IPPROTO_ESP                      = 0x32
+       IPPROTO_FRAGMENT                 = 0x2c
+       IPPROTO_GRE                      = 0x2f
+       IPPROTO_HOPOPTS                  = 0x0
+       IPPROTO_ICMP                     = 0x1
+       IPPROTO_ICMPV6                   = 0x3a
+       IPPROTO_IDP                      = 0x16
+       IPPROTO_IGMP                     = 0x2
+       IPPROTO_IP                       = 0x0
+       IPPROTO_IPIP                     = 0x4
+       IPPROTO_IPV6                     = 0x29
+       IPPROTO_MTP                      = 0x5c
+       IPPROTO_NONE                     = 0x3b
+       IPPROTO_PIM                      = 0x67
+       IPPROTO_PUP                      = 0xc
+       IPPROTO_RAW                      = 0xff
+       IPPROTO_ROUTING                  = 0x2b
+       IPPROTO_RSVP                     = 0x2e
+       IPPROTO_SCTP                     = 0x84
+       IPPROTO_TCP                      = 0x6
+       IPPROTO_TP                       = 0x1d
+       IPPROTO_UDP                      = 0x11
+       IPPROTO_UDPLITE                  = 0x88
+       IPV6_2292DSTOPTS                 = 0x4
+       IPV6_2292HOPLIMIT                = 0x8
+       IPV6_2292HOPOPTS                 = 0x3
+       IPV6_2292PKTINFO                 = 0x2
+       IPV6_2292PKTOPTIONS              = 0x6
+       IPV6_2292RTHDR                   = 0x5
+       IPV6_ADDRFORM                    = 0x1
+       IPV6_ADD_MEMBERSHIP              = 0x14
+       IPV6_AUTHHDR                     = 0xa
+       IPV6_CHECKSUM                    = 0x7
+       IPV6_DROP_MEMBERSHIP             = 0x15
+       IPV6_DSTOPTS                     = 0x3b
+       IPV6_HOPLIMIT                    = 0x34
+       IPV6_HOPOPTS                     = 0x36
+       IPV6_IPSEC_POLICY                = 0x22
+       IPV6_JOIN_ANYCAST                = 0x1b
+       IPV6_JOIN_GROUP                  = 0x14
+       IPV6_LEAVE_ANYCAST               = 0x1c
+       IPV6_LEAVE_GROUP                 = 0x15
+       IPV6_MTU                         = 0x18
+       IPV6_MTU_DISCOVER                = 0x17
+       IPV6_MULTICAST_HOPS              = 0x12
+       IPV6_MULTICAST_IF                = 0x11
+       IPV6_MULTICAST_LOOP              = 0x13
+       IPV6_NEXTHOP                     = 0x9
+       IPV6_PKTINFO                     = 0x32
+       IPV6_PMTUDISC_DO                 = 0x2
+       IPV6_PMTUDISC_DONT               = 0x0
+       IPV6_PMTUDISC_PROBE              = 0x3
+       IPV6_PMTUDISC_WANT               = 0x1
+       IPV6_RECVDSTOPTS                 = 0x3a
+       IPV6_RECVERR                     = 0x19
+       IPV6_RECVHOPLIMIT                = 0x33
+       IPV6_RECVHOPOPTS                 = 0x35
+       IPV6_RECVPKTINFO                 = 0x31
+       IPV6_RECVRTHDR                   = 0x38
+       IPV6_RECVTCLASS                  = 0x42
+       IPV6_ROUTER_ALERT                = 0x16
+       IPV6_RTHDR                       = 0x39
+       IPV6_RTHDRDSTOPTS                = 0x37
+       IPV6_RTHDR_LOOSE                 = 0x0
+       IPV6_RTHDR_STRICT                = 0x1
+       IPV6_RTHDR_TYPE_0                = 0x0
+       IPV6_RXDSTOPTS                   = 0x3b
+       IPV6_RXHOPOPTS                   = 0x36
+       IPV6_TCLASS                      = 0x43
+       IPV6_UNICAST_HOPS                = 0x10
+       IPV6_V6ONLY                      = 0x1a
+       IPV6_XFRM_POLICY                 = 0x23
+       IP_ADD_MEMBERSHIP                = 0x23
+       IP_ADD_SOURCE_MEMBERSHIP         = 0x27
+       IP_BLOCK_SOURCE                  = 0x26
+       IP_DEFAULT_MULTICAST_LOOP        = 0x1
+       IP_DEFAULT_MULTICAST_TTL         = 0x1
+       IP_DF                            = 0x4000
+       IP_DROP_MEMBERSHIP               = 0x24
+       IP_DROP_SOURCE_MEMBERSHIP        = 0x28
+       IP_FREEBIND                      = 0xf
+       IP_HDRINCL                       = 0x3
+       IP_IPSEC_POLICY                  = 0x10
+       IP_MAXPACKET                     = 0xffff
+       IP_MAX_MEMBERSHIPS               = 0x14
+       IP_MF                            = 0x2000
+       IP_MINTTL                        = 0x15
+       IP_MSFILTER                      = 0x29
+       IP_MSS                           = 0x240
+       IP_MTU                           = 0xe
+       IP_MTU_DISCOVER                  = 0xa
+       IP_MULTICAST_IF                  = 0x20
+       IP_MULTICAST_LOOP                = 0x22
+       IP_MULTICAST_TTL                 = 0x21
+       IP_OFFMASK                       = 0x1fff
+       IP_OPTIONS                       = 0x4
+       IP_ORIGDSTADDR                   = 0x14
+       IP_PASSSEC                       = 0x12
+       IP_PKTINFO                       = 0x8
+       IP_PKTOPTIONS                    = 0x9
+       IP_PMTUDISC                      = 0xa
+       IP_PMTUDISC_DO                   = 0x2
+       IP_PMTUDISC_DONT                 = 0x0
+       IP_PMTUDISC_PROBE                = 0x3
+       IP_PMTUDISC_WANT                 = 0x1
+       IP_RECVERR                       = 0xb
+       IP_RECVOPTS                      = 0x6
+       IP_RECVORIGDSTADDR               = 0x14
+       IP_RECVRETOPTS                   = 0x7
+       IP_RECVTOS                       = 0xd
+       IP_RECVTTL                       = 0xc
+       IP_RETOPTS                       = 0x7
+       IP_RF                            = 0x8000
+       IP_ROUTER_ALERT                  = 0x5
+       IP_TOS                           = 0x1
+       IP_TRANSPARENT                   = 0x13
+       IP_TTL                           = 0x2
+       IP_UNBLOCK_SOURCE                = 0x25
+       IP_XFRM_POLICY                   = 0x11
+       ISIG                             = 0x1
+       ISTRIP                           = 0x20
+       IUCLC                            = 0x200
+       IUTF8                            = 0x4000
+       IXANY                            = 0x800
+       IXOFF                            = 0x1000
+       IXON                             = 0x400
+       LINUX_REBOOT_CMD_CAD_OFF         = 0x0
+       LINUX_REBOOT_CMD_CAD_ON          = 0x89abcdef
+       LINUX_REBOOT_CMD_HALT            = 0xcdef0123
+       LINUX_REBOOT_CMD_KEXEC           = 0x45584543
+       LINUX_REBOOT_CMD_POWER_OFF       = 0x4321fedc
+       LINUX_REBOOT_CMD_RESTART         = 0x1234567
+       LINUX_REBOOT_CMD_RESTART2        = 0xa1b2c3d4
+       LINUX_REBOOT_CMD_SW_SUSPEND      = 0xd000fce2
+       LINUX_REBOOT_MAGIC1              = 0xfee1dead
+       LINUX_REBOOT_MAGIC2              = 0x28121969
+       LOCK_EX                          = 0x2
+       LOCK_NB                          = 0x4
+       LOCK_SH                          = 0x1
+       LOCK_UN                          = 0x8
+       MADV_DOFORK                      = 0xb
+       MADV_DONTFORK                    = 0xa
+       MADV_DONTNEED                    = 0x4
+       MADV_HUGEPAGE                    = 0xe
+       MADV_HWPOISON                    = 0x64
+       MADV_MERGEABLE                   = 0xc
+       MADV_NOHUGEPAGE                  = 0xf
+       MADV_NORMAL                      = 0x0
+       MADV_RANDOM                      = 0x1
+       MADV_REMOVE                      = 0x9
+       MADV_SEQUENTIAL                  = 0x2
+       MADV_UNMERGEABLE                 = 0xd
+       MADV_WILLNEED                    = 0x3
+       MAP_ANON                         = 0x20
+       MAP_ANONYMOUS                    = 0x20
+       MAP_DENYWRITE                    = 0x800
+       MAP_EXECUTABLE                   = 0x1000
+       MAP_FILE                         = 0x0
+       MAP_FIXED                        = 0x10
+       MAP_GROWSDOWN                    = 0x100
+       MAP_LOCKED                       = 0x2000
+       MAP_NONBLOCK                     = 0x10000
+       MAP_NORESERVE                    = 0x4000
+       MAP_POPULATE                     = 0x8000
+       MAP_PRIVATE                      = 0x2
+       MAP_SHARED                       = 0x1
+       MAP_TYPE                         = 0xf
+       MCL_CURRENT                      = 0x1
+       MCL_FUTURE                       = 0x2
+       MNT_DETACH                       = 0x2
+       MNT_EXPIRE                       = 0x4
+       MNT_FORCE                        = 0x1
+       MSG_CMSG_CLOEXEC                 = 0x40000000
+       MSG_CONFIRM                      = 0x800
+       MSG_CTRUNC                       = 0x8
+       MSG_DONTROUTE                    = 0x4
+       MSG_DONTWAIT                     = 0x40
+       MSG_EOR                          = 0x80
+       MSG_ERRQUEUE                     = 0x2000
+       MSG_FASTOPEN                     = 0x20000000
+       MSG_FIN                          = 0x200
+       MSG_MORE                         = 0x8000
+       MSG_NOSIGNAL                     = 0x4000
+       MSG_OOB                          = 0x1
+       MSG_PEEK                         = 0x2
+       MSG_PROXY                        = 0x10
+       MSG_RST                          = 0x1000
+       MSG_SYN                          = 0x400
+       MSG_TRUNC                        = 0x20
+       MSG_TRYHARD                      = 0x4
+       MSG_WAITALL                      = 0x100
+       MSG_WAITFORONE                   = 0x10000
+       MS_ACTIVE                        = 0x40000000
+       MS_ASYNC                         = 0x1
+       MS_BIND                          = 0x1000
+       MS_DIRSYNC                       = 0x80
+       MS_INVALIDATE                    = 0x2
+       MS_I_VERSION                     = 0x800000
+       MS_KERNMOUNT                     = 0x400000
+       MS_MANDLOCK                      = 0x40
+       MS_MGC_MSK                       = 0xffff0000
+       MS_MGC_VAL                       = 0xc0ed0000
+       MS_MOVE                          = 0x2000
+       MS_NOATIME                       = 0x400
+       MS_NODEV                         = 0x4
+       MS_NODIRATIME                    = 0x800
+       MS_NOEXEC                        = 0x8
+       MS_NOSUID                        = 0x2
+       MS_NOUSER                        = -0x80000000
+       MS_POSIXACL                      = 0x10000
+       MS_PRIVATE                       = 0x40000
+       MS_RDONLY                        = 0x1
+       MS_REC                           = 0x4000
+       MS_RELATIME                      = 0x200000
+       MS_REMOUNT                       = 0x20
+       MS_RMT_MASK                      = 0x800051
+       MS_SHARED                        = 0x100000
+       MS_SILENT                        = 0x8000
+       MS_SLAVE                         = 0x80000
+       MS_STRICTATIME                   = 0x1000000
+       MS_SYNC                          = 0x4
+       MS_SYNCHRONOUS                   = 0x10
+       MS_UNBINDABLE                    = 0x20000
+       NAME_MAX                         = 0xff
+       NETLINK_ADD_MEMBERSHIP           = 0x1
+       NETLINK_AUDIT                    = 0x9
+       NETLINK_BROADCAST_ERROR          = 0x4
+       NETLINK_CONNECTOR                = 0xb
+       NETLINK_DNRTMSG                  = 0xe
+       NETLINK_DROP_MEMBERSHIP          = 0x2
+       NETLINK_ECRYPTFS                 = 0x13
+       NETLINK_FIB_LOOKUP               = 0xa
+       NETLINK_FIREWALL                 = 0x3
+       NETLINK_GENERIC                  = 0x10
+       NETLINK_INET_DIAG                = 0x4
+       NETLINK_IP6_FW                   = 0xd
+       NETLINK_ISCSI                    = 0x8
+       NETLINK_KOBJECT_UEVENT           = 0xf
+       NETLINK_NETFILTER                = 0xc
+       NETLINK_NFLOG                    = 0x5
+       NETLINK_NO_ENOBUFS               = 0x5
+       NETLINK_PKTINFO                  = 0x3
+       NETLINK_RDMA                     = 0x14
+       NETLINK_ROUTE                    = 0x0
+       NETLINK_SCSITRANSPORT            = 0x12
+       NETLINK_SELINUX                  = 0x7
+       NETLINK_UNUSED                   = 0x1
+       NETLINK_USERSOCK                 = 0x2
+       NETLINK_XFRM                     = 0x6
+       NL0                              = 0x0
+       NL1                              = 0x100
+       NLA_ALIGNTO                      = 0x4
+       NLA_F_NESTED                     = 0x8000
+       NLA_F_NET_BYTEORDER              = 0x4000
+       NLA_HDRLEN                       = 0x4
+       NLDLY                            = 0x100
+       NLMSG_ALIGNTO                    = 0x4
+       NLMSG_DONE                       = 0x3
+       NLMSG_ERROR                      = 0x2
+       NLMSG_HDRLEN                     = 0x10
+       NLMSG_MIN_TYPE                   = 0x10
+       NLMSG_NOOP                       = 0x1
+       NLMSG_OVERRUN                    = 0x4
+       NLM_F_ACK                        = 0x4
+       NLM_F_APPEND                     = 0x800
+       NLM_F_ATOMIC                     = 0x400
+       NLM_F_CREATE                     = 0x400
+       NLM_F_DUMP                       = 0x300
+       NLM_F_ECHO                       = 0x8
+       NLM_F_EXCL                       = 0x200
+       NLM_F_MATCH                      = 0x200
+       NLM_F_MULTI                      = 0x2
+       NLM_F_REPLACE                    = 0x100
+       NLM_F_REQUEST                    = 0x1
+       NLM_F_ROOT                       = 0x100
+       NOFLSH                           = 0x80
+       OCRNL                            = 0x8
+       OFDEL                            = 0x80
+       OFILL                            = 0x40
+       OLCUC                            = 0x2
+       ONLCR                            = 0x4
+       ONLRET                           = 0x20
+       ONOCR                            = 0x10
+       OPOST                            = 0x1
+       O_ACCMODE                        = 0x3
+       O_APPEND                         = 0x400
+       O_ASYNC                          = 0x2000
+       O_CLOEXEC                        = 0x80000
+       O_CREAT                          = 0x40
+       O_DIRECT                         = 0x10000
+       O_DIRECTORY                      = 0x4000
+       O_DSYNC                          = 0x1000
+       O_EXCL                           = 0x80
+       O_FSYNC                          = 0x1000
+       O_LARGEFILE                      = 0x20000
+       O_NDELAY                         = 0x800
+       O_NOATIME                        = 0x40000
+       O_NOCTTY                         = 0x100
+       O_NOFOLLOW                       = 0x8000
+       O_NONBLOCK                       = 0x800
+       O_PATH                           = 0x200000
+       O_RDONLY                         = 0x0
+       O_RDWR                           = 0x2
+       O_RSYNC                          = 0x1000
+       O_SYNC                           = 0x1000
+       O_TRUNC                          = 0x200
+       O_WRONLY                         = 0x1
+       PACKET_ADD_MEMBERSHIP            = 0x1
+       PACKET_BROADCAST                 = 0x1
+       PACKET_DROP_MEMBERSHIP           = 0x2
+       PACKET_FASTROUTE                 = 0x6
+       PACKET_HOST                      = 0x0
+       PACKET_LOOPBACK                  = 0x5
+       PACKET_MR_ALLMULTI               = 0x2
+       PACKET_MR_MULTICAST              = 0x0
+       PACKET_MR_PROMISC                = 0x1
+       PACKET_MULTICAST                 = 0x2
+       PACKET_OTHERHOST                 = 0x3
+       PACKET_OUTGOING                  = 0x4
+       PACKET_RECV_OUTPUT               = 0x3
+       PACKET_RX_RING                   = 0x5
+       PACKET_STATISTICS                = 0x6
+       PARENB                           = 0x100
+       PARMRK                           = 0x8
+       PARODD                           = 0x200
+       PENDIN                           = 0x4000
+       PRIO_PGRP                        = 0x1
+       PRIO_PROCESS                     = 0x0
+       PRIO_USER                        = 0x2
+       PROT_EXEC                        = 0x4
+       PROT_GROWSDOWN                   = 0x1000000
+       PROT_GROWSUP                     = 0x2000000
+       PROT_NONE                        = 0x0
+       PROT_READ                        = 0x1
+       PROT_WRITE                       = 0x2
+       PR_CAPBSET_DROP                  = 0x18
+       PR_CAPBSET_READ                  = 0x17
+       PR_CLEAR_SECCOMP_FILTER          = 0x25
+       PR_ENDIAN_BIG                    = 0x0
+       PR_ENDIAN_LITTLE                 = 0x1
+       PR_ENDIAN_PPC_LITTLE             = 0x2
+       PR_FPEMU_NOPRINT                 = 0x1
+       PR_FPEMU_SIGFPE                  = 0x2
+       PR_FP_EXC_ASYNC                  = 0x2
+       PR_FP_EXC_DISABLED               = 0x0
+       PR_FP_EXC_DIV                    = 0x10000
+       PR_FP_EXC_INV                    = 0x100000
+       PR_FP_EXC_NONRECOV               = 0x1
+       PR_FP_EXC_OVF                    = 0x20000
+       PR_FP_EXC_PRECISE                = 0x3
+       PR_FP_EXC_RES                    = 0x80000
+       PR_FP_EXC_SW_ENABLE              = 0x80
+       PR_FP_EXC_UND                    = 0x40000
+       PR_GET_DUMPABLE                  = 0x3
+       PR_GET_ENDIAN                    = 0x13
+       PR_GET_FPEMU                     = 0x9
+       PR_GET_FPEXC                     = 0xb
+       PR_GET_KEEPCAPS                  = 0x7
+       PR_GET_NAME                      = 0x10
+       PR_GET_PDEATHSIG                 = 0x2
+       PR_GET_SECCOMP                   = 0x15
+       PR_GET_SECCOMP_FILTER            = 0x23
+       PR_GET_SECUREBITS                = 0x1b
+       PR_GET_TIMERSLACK                = 0x1e
+       PR_GET_TIMING                    = 0xd
+       PR_GET_TSC                       = 0x19
+       PR_GET_UNALIGN                   = 0x5
+       PR_MCE_KILL                      = 0x21
+       PR_MCE_KILL_CLEAR                = 0x0
+       PR_MCE_KILL_DEFAULT              = 0x2
+       PR_MCE_KILL_EARLY                = 0x1
+       PR_MCE_KILL_GET                  = 0x22
+       PR_MCE_KILL_LATE                 = 0x0
+       PR_MCE_KILL_SET                  = 0x1
+       PR_SECCOMP_FILTER_EVENT          = 0x1
+       PR_SECCOMP_FILTER_SYSCALL        = 0x0
+       PR_SET_DUMPABLE                  = 0x4
+       PR_SET_ENDIAN                    = 0x14
+       PR_SET_FPEMU                     = 0xa
+       PR_SET_FPEXC                     = 0xc
+       PR_SET_KEEPCAPS                  = 0x8
+       PR_SET_NAME                      = 0xf
+       PR_SET_PDEATHSIG                 = 0x1
+       PR_SET_PTRACER                   = 0x59616d61
+       PR_SET_SECCOMP                   = 0x16
+       PR_SET_SECCOMP_FILTER            = 0x24
+       PR_SET_SECUREBITS                = 0x1c
+       PR_SET_TIMERSLACK                = 0x1d
+       PR_SET_TIMING                    = 0xe
+       PR_SET_TSC                       = 0x1a
+       PR_SET_UNALIGN                   = 0x6
+       PR_TASK_PERF_EVENTS_DISABLE      = 0x1f
+       PR_TASK_PERF_EVENTS_ENABLE       = 0x20
+       PR_TIMING_STATISTICAL            = 0x0
+       PR_TIMING_TIMESTAMP              = 0x1
+       PR_TSC_ENABLE                    = 0x1
+       PR_TSC_SIGSEGV                   = 0x2
+       PR_UNALIGN_NOPRINT               = 0x1
+       PR_UNALIGN_SIGBUS                = 0x2
+       PTRACE_ATTACH                    = 0x10
+       PTRACE_CONT                      = 0x7
+       PTRACE_DETACH                    = 0x11
+       PTRACE_EVENT_CLONE               = 0x3
+       PTRACE_EVENT_EXEC                = 0x4
+       PTRACE_EVENT_EXIT                = 0x6
+       PTRACE_EVENT_FORK                = 0x1
+       PTRACE_EVENT_VFORK               = 0x2
+       PTRACE_EVENT_VFORK_DONE          = 0x5
+       PTRACE_GETCRUNCHREGS             = 0x19
+       PTRACE_GETEVENTMSG               = 0x4201
+       PTRACE_GETFPREGS                 = 0xe
+       PTRACE_GETHBPREGS                = 0x1d
+       PTRACE_GETREGS                   = 0xc
+       PTRACE_GETREGSET                 = 0x4204
+       PTRACE_GETSIGINFO                = 0x4202
+       PTRACE_GETVFPREGS                = 0x1b
+       PTRACE_GETWMMXREGS               = 0x12
+       PTRACE_GET_THREAD_AREA           = 0x16
+       PTRACE_KILL                      = 0x8
+       PTRACE_OLDSETOPTIONS             = 0x15
+       PTRACE_O_MASK                    = 0x7f
+       PTRACE_O_TRACECLONE              = 0x8
+       PTRACE_O_TRACEEXEC               = 0x10
+       PTRACE_O_TRACEEXIT               = 0x40
+       PTRACE_O_TRACEFORK               = 0x2
+       PTRACE_O_TRACESYSGOOD            = 0x1
+       PTRACE_O_TRACEVFORK              = 0x4
+       PTRACE_O_TRACEVFORKDONE          = 0x20
+       PTRACE_PEEKDATA                  = 0x2
+       PTRACE_PEEKTEXT                  = 0x1
+       PTRACE_PEEKUSR                   = 0x3
+       PTRACE_POKEDATA                  = 0x5
+       PTRACE_POKETEXT                  = 0x4
+       PTRACE_POKEUSR                   = 0x6
+       PTRACE_SETCRUNCHREGS             = 0x1a
+       PTRACE_SETFPREGS                 = 0xf
+       PTRACE_SETHBPREGS                = 0x1e
+       PTRACE_SETOPTIONS                = 0x4200
+       PTRACE_SETREGS                   = 0xd
+       PTRACE_SETREGSET                 = 0x4205
+       PTRACE_SETSIGINFO                = 0x4203
+       PTRACE_SETVFPREGS                = 0x1c
+       PTRACE_SETWMMXREGS               = 0x13
+       PTRACE_SET_SYSCALL               = 0x17
+       PTRACE_SINGLESTEP                = 0x9
+       PTRACE_SYSCALL                   = 0x18
+       PTRACE_TRACEME                   = 0x0
+       PT_DATA_ADDR                     = 0x10004
+       PT_TEXT_ADDR                     = 0x10000
+       PT_TEXT_END_ADDR                 = 0x10008
+       RLIMIT_AS                        = 0x9
+       RLIMIT_CORE                      = 0x4
+       RLIMIT_CPU                       = 0x0
+       RLIMIT_DATA                      = 0x2
+       RLIMIT_FSIZE                     = 0x1
+       RLIMIT_NOFILE                    = 0x7
+       RLIMIT_STACK                     = 0x3
+       RLIM_INFINITY                    = -0x1
+       RTAX_ADVMSS                      = 0x8
+       RTAX_CWND                        = 0x7
+       RTAX_FEATURES                    = 0xc
+       RTAX_FEATURE_ALLFRAG             = 0x8
+       RTAX_FEATURE_ECN                 = 0x1
+       RTAX_FEATURE_SACK                = 0x2
+       RTAX_FEATURE_TIMESTAMP           = 0x4
+       RTAX_HOPLIMIT                    = 0xa
+       RTAX_INITCWND                    = 0xb
+       RTAX_INITRWND                    = 0xe
+       RTAX_LOCK                        = 0x1
+       RTAX_MAX                         = 0xe
+       RTAX_MTU                         = 0x2
+       RTAX_REORDERING                  = 0x9
+       RTAX_RTO_MIN                     = 0xd
+       RTAX_RTT                         = 0x4
+       RTAX_RTTVAR                      = 0x5
+       RTAX_SSTHRESH                    = 0x6
+       RTAX_UNSPEC                      = 0x0
+       RTAX_WINDOW                      = 0x3
+       RTA_ALIGNTO                      = 0x4
+       RTA_MAX                          = 0x10
+       RTCF_DIRECTSRC                   = 0x4000000
+       RTCF_DOREDIRECT                  = 0x1000000
+       RTCF_LOG                         = 0x2000000
+       RTCF_MASQ                        = 0x400000
+       RTCF_NAT                         = 0x800000
+       RTCF_VALVE                       = 0x200000
+       RTF_ADDRCLASSMASK                = 0xf8000000
+       RTF_ADDRCONF                     = 0x40000
+       RTF_ALLONLINK                    = 0x20000
+       RTF_BROADCAST                    = 0x10000000
+       RTF_CACHE                        = 0x1000000
+       RTF_DEFAULT                      = 0x10000
+       RTF_DYNAMIC                      = 0x10
+       RTF_FLOW                         = 0x2000000
+       RTF_GATEWAY                      = 0x2
+       RTF_HOST                         = 0x4
+       RTF_INTERFACE                    = 0x40000000
+       RTF_IRTT                         = 0x100
+       RTF_LINKRT                       = 0x100000
+       RTF_LOCAL                        = 0x80000000
+       RTF_MODIFIED                     = 0x20
+       RTF_MSS                          = 0x40
+       RTF_MTU                          = 0x40
+       RTF_MULTICAST                    = 0x20000000
+       RTF_NAT                          = 0x8000000
+       RTF_NOFORWARD                    = 0x1000
+       RTF_NONEXTHOP                    = 0x200000
+       RTF_NOPMTUDISC                   = 0x4000
+       RTF_POLICY                       = 0x4000000
+       RTF_REINSTATE                    = 0x8
+       RTF_REJECT                       = 0x200
+       RTF_STATIC                       = 0x400
+       RTF_THROW                        = 0x2000
+       RTF_UP                           = 0x1
+       RTF_WINDOW                       = 0x80
+       RTF_XRESOLVE                     = 0x800
+       RTM_BASE                         = 0x10
+       RTM_DELACTION                    = 0x31
+       RTM_DELADDR                      = 0x15
+       RTM_DELADDRLABEL                 = 0x49
+       RTM_DELLINK                      = 0x11
+       RTM_DELNEIGH                     = 0x1d
+       RTM_DELQDISC                     = 0x25
+       RTM_DELROUTE                     = 0x19
+       RTM_DELRULE                      = 0x21
+       RTM_DELTCLASS                    = 0x29
+       RTM_DELTFILTER                   = 0x2d
+       RTM_F_CLONED                     = 0x200
+       RTM_F_EQUALIZE                   = 0x400
+       RTM_F_NOTIFY                     = 0x100
+       RTM_F_PREFIX                     = 0x800
+       RTM_GETACTION                    = 0x32
+       RTM_GETADDR                      = 0x16
+       RTM_GETADDRLABEL                 = 0x4a
+       RTM_GETANYCAST                   = 0x3e
+       RTM_GETDCB                       = 0x4e
+       RTM_GETLINK                      = 0x12
+       RTM_GETMULTICAST                 = 0x3a
+       RTM_GETNEIGH                     = 0x1e
+       RTM_GETNEIGHTBL                  = 0x42
+       RTM_GETQDISC                     = 0x26
+       RTM_GETROUTE                     = 0x1a
+       RTM_GETRULE                      = 0x22
+       RTM_GETTCLASS                    = 0x2a
+       RTM_GETTFILTER                   = 0x2e
+       RTM_MAX                          = 0x4f
+       RTM_NEWACTION                    = 0x30
+       RTM_NEWADDR                      = 0x14
+       RTM_NEWADDRLABEL                 = 0x48
+       RTM_NEWLINK                      = 0x10
+       RTM_NEWNDUSEROPT                 = 0x44
+       RTM_NEWNEIGH                     = 0x1c
+       RTM_NEWNEIGHTBL                  = 0x40
+       RTM_NEWPREFIX                    = 0x34
+       RTM_NEWQDISC                     = 0x24
+       RTM_NEWROUTE                     = 0x18
+       RTM_NEWRULE                      = 0x20
+       RTM_NEWTCLASS                    = 0x28
+       RTM_NEWTFILTER                   = 0x2c
+       RTM_NR_FAMILIES                  = 0x10
+       RTM_NR_MSGTYPES                  = 0x40
+       RTM_SETDCB                       = 0x4f
+       RTM_SETLINK                      = 0x13
+       RTM_SETNEIGHTBL                  = 0x43
+       RTNH_ALIGNTO                     = 0x4
+       RTNH_F_DEAD                      = 0x1
+       RTNH_F_ONLINK                    = 0x4
+       RTNH_F_PERVASIVE                 = 0x2
+       RTN_MAX                          = 0xb
+       RTPROT_BIRD                      = 0xc
+       RTPROT_BOOT                      = 0x3
+       RTPROT_DHCP                      = 0x10
+       RTPROT_DNROUTED                  = 0xd
+       RTPROT_GATED                     = 0x8
+       RTPROT_KERNEL                    = 0x2
+       RTPROT_MRT                       = 0xa
+       RTPROT_NTK                       = 0xf
+       RTPROT_RA                        = 0x9
+       RTPROT_REDIRECT                  = 0x1
+       RTPROT_STATIC                    = 0x4
+       RTPROT_UNSPEC                    = 0x0
+       RTPROT_XORP                      = 0xe
+       RTPROT_ZEBRA                     = 0xb
+       RT_CLASS_DEFAULT                 = 0xfd
+       RT_CLASS_LOCAL                   = 0xff
+       RT_CLASS_MAIN                    = 0xfe
+       RT_CLASS_MAX                     = 0xff
+       RT_CLASS_UNSPEC                  = 0x0
+       RUSAGE_CHILDREN                  = -0x1
+       RUSAGE_SELF                      = 0x0
+       RUSAGE_THREAD                    = 0x1
+       SCM_CREDENTIALS                  = 0x2
+       SCM_RIGHTS                       = 0x1
+       SCM_TIMESTAMP                    = 0x1d
+       SCM_TIMESTAMPING                 = 0x25
+       SCM_TIMESTAMPNS                  = 0x23
+       SHUT_RD                          = 0x0
+       SHUT_RDWR                        = 0x2
+       SHUT_WR                          = 0x1
+       SIOCADDDLCI                      = 0x8980
+       SIOCADDMULTI                     = 0x8931
+       SIOCADDRT                        = 0x890b
+       SIOCATMARK                       = 0x8905
+       SIOCDARP                         = 0x8953
+       SIOCDELDLCI                      = 0x8981
+       SIOCDELMULTI                     = 0x8932
+       SIOCDELRT                        = 0x890c
+       SIOCDEVPRIVATE                   = 0x89f0
+       SIOCDIFADDR                      = 0x8936
+       SIOCDRARP                        = 0x8960
+       SIOCGARP                         = 0x8954
+       SIOCGIFADDR                      = 0x8915
+       SIOCGIFBR                        = 0x8940
+       SIOCGIFBRDADDR                   = 0x8919
+       SIOCGIFCONF                      = 0x8912
+       SIOCGIFCOUNT                     = 0x8938
+       SIOCGIFDSTADDR                   = 0x8917
+       SIOCGIFENCAP                     = 0x8925
+       SIOCGIFFLAGS                     = 0x8913
+       SIOCGIFHWADDR                    = 0x8927
+       SIOCGIFINDEX                     = 0x8933
+       SIOCGIFMAP                       = 0x8970
+       SIOCGIFMEM                       = 0x891f
+       SIOCGIFMETRIC                    = 0x891d
+       SIOCGIFMTU                       = 0x8921
+       SIOCGIFNAME                      = 0x8910
+       SIOCGIFNETMASK                   = 0x891b
+       SIOCGIFPFLAGS                    = 0x8935
+       SIOCGIFSLAVE                     = 0x8929
+       SIOCGIFTXQLEN                    = 0x8942
+       SIOCGPGRP                        = 0x8904
+       SIOCGRARP                        = 0x8961
+       SIOCGSTAMP                       = 0x8906
+       SIOCGSTAMPNS                     = 0x8907
+       SIOCPROTOPRIVATE                 = 0x89e0
+       SIOCRTMSG                        = 0x890d
+       SIOCSARP                         = 0x8955
+       SIOCSIFADDR                      = 0x8916
+       SIOCSIFBR                        = 0x8941
+       SIOCSIFBRDADDR                   = 0x891a
+       SIOCSIFDSTADDR                   = 0x8918
+       SIOCSIFENCAP                     = 0x8926
+       SIOCSIFFLAGS                     = 0x8914
+       SIOCSIFHWADDR                    = 0x8924
+       SIOCSIFHWBROADCAST               = 0x8937
+       SIOCSIFLINK                      = 0x8911
+       SIOCSIFMAP                       = 0x8971
+       SIOCSIFMEM                       = 0x8920
+       SIOCSIFMETRIC                    = 0x891e
+       SIOCSIFMTU                       = 0x8922
+       SIOCSIFNAME                      = 0x8923
+       SIOCSIFNETMASK                   = 0x891c
+       SIOCSIFPFLAGS                    = 0x8934
+       SIOCSIFSLAVE                     = 0x8930
+       SIOCSIFTXQLEN                    = 0x8943
+       SIOCSPGRP                        = 0x8902
+       SIOCSRARP                        = 0x8962
+       SOCK_CLOEXEC                     = 0x80000
+       SOCK_DCCP                        = 0x6
+       SOCK_DGRAM                       = 0x2
+       SOCK_NONBLOCK                    = 0x800
+       SOCK_PACKET                      = 0xa
+       SOCK_RAW                         = 0x3
+       SOCK_RDM                         = 0x4
+       SOCK_SEQPACKET                   = 0x5
+       SOCK_STREAM                      = 0x1
+       SOL_AAL                          = 0x109
+       SOL_ATM                          = 0x108
+       SOL_DECNET                       = 0x105
+       SOL_ICMPV6                       = 0x3a
+       SOL_IP                           = 0x0
+       SOL_IPV6                         = 0x29
+       SOL_IRDA                         = 0x10a
+       SOL_PACKET                       = 0x107
+       SOL_RAW                          = 0xff
+       SOL_SOCKET                       = 0x1
+       SOL_TCP                          = 0x6
+       SOL_X25                          = 0x106
+       SOMAXCONN                        = 0x80
+       SO_ACCEPTCONN                    = 0x1e
+       SO_ATTACH_FILTER                 = 0x1a
+       SO_BINDTODEVICE                  = 0x19
+       SO_BROADCAST                     = 0x6
+       SO_BSDCOMPAT                     = 0xe
+       SO_DEBUG                         = 0x1
+       SO_DETACH_FILTER                 = 0x1b
+       SO_DOMAIN                        = 0x27
+       SO_DONTROUTE                     = 0x5
+       SO_ERROR                         = 0x4
+       SO_KEEPALIVE                     = 0x9
+       SO_LINGER                        = 0xd
+       SO_MARK                          = 0x24
+       SO_NO_CHECK                      = 0xb
+       SO_OOBINLINE                     = 0xa
+       SO_PASSCRED                      = 0x10
+       SO_PASSSEC                       = 0x22
+       SO_PEERCRED                      = 0x11
+       SO_PEERNAME                      = 0x1c
+       SO_PEERSEC                       = 0x1f
+       SO_PRIORITY                      = 0xc
+       SO_PROTOCOL                      = 0x26
+       SO_RCVBUF                        = 0x8
+       SO_RCVBUFFORCE                   = 0x21
+       SO_RCVLOWAT                      = 0x12
+       SO_RCVTIMEO                      = 0x14
+       SO_REUSEADDR                     = 0x2
+       SO_RXQ_OVFL                      = 0x28
+       SO_SECURITY_AUTHENTICATION       = 0x16
+       SO_SECURITY_ENCRYPTION_NETWORK   = 0x18
+       SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
+       SO_SNDBUF                        = 0x7
+       SO_SNDBUFFORCE                   = 0x20
+       SO_SNDLOWAT                      = 0x13
+       SO_SNDTIMEO                      = 0x15
+       SO_TIMESTAMP                     = 0x1d
+       SO_TIMESTAMPING                  = 0x25
+       SO_TIMESTAMPNS                   = 0x23
+       SO_TYPE                          = 0x3
+       S_BLKSIZE                        = 0x200
+       S_IEXEC                          = 0x40
+       S_IFBLK                          = 0x6000
+       S_IFCHR                          = 0x2000
+       S_IFDIR                          = 0x4000
+       S_IFIFO                          = 0x1000
+       S_IFLNK                          = 0xa000
+       S_IFMT                           = 0xf000
+       S_IFREG                          = 0x8000
+       S_IFSOCK                         = 0xc000
+       S_IREAD                          = 0x100
+       S_IRGRP                          = 0x20
+       S_IROTH                          = 0x4
+       S_IRUSR                          = 0x100
+       S_IRWXG                          = 0x38
+       S_IRWXO                          = 0x7
+       S_IRWXU                          = 0x1c0
+       S_ISGID                          = 0x400
+       S_ISUID                          = 0x800
+       S_ISVTX                          = 0x200
+       S_IWGRP                          = 0x10
+       S_IWOTH                          = 0x2
+       S_IWRITE                         = 0x80
+       S_IWUSR                          = 0x80
+       S_IXGRP                          = 0x8
+       S_IXOTH                          = 0x1
+       S_IXUSR                          = 0x40
+       TAB0                             = 0x0
+       TAB1                             = 0x800
+       TAB2                             = 0x1000
+       TAB3                             = 0x1800
+       TABDLY                           = 0x1800
+       TCFLSH                           = 0x540b
+       TCGETA                           = 0x5405
+       TCGETS                           = 0x5401
+       TCGETS2                          = 0x802c542a
+       TCGETX                           = 0x5432
+       TCIFLUSH                         = 0x0
+       TCIOFF                           = 0x2
+       TCIOFLUSH                        = 0x2
+       TCION                            = 0x3
+       TCOFLUSH                         = 0x1
+       TCOOFF                           = 0x0
+       TCOON                            = 0x1
+       TCP_CONGESTION                   = 0xd
+       TCP_CORK                         = 0x3
+       TCP_DEFER_ACCEPT                 = 0x9
+       TCP_INFO                         = 0xb
+       TCP_KEEPCNT                      = 0x6
+       TCP_KEEPIDLE                     = 0x4
+       TCP_KEEPINTVL                    = 0x5
+       TCP_LINGER2                      = 0x8
+       TCP_MAXSEG                       = 0x2
+       TCP_MAXWIN                       = 0xffff
+       TCP_MAX_WINSHIFT                 = 0xe
+       TCP_MD5SIG                       = 0xe
+       TCP_MD5SIG_MAXKEYLEN             = 0x50
+       TCP_MSS                          = 0x200
+       TCP_NODELAY                      = 0x1
+       TCP_QUICKACK                     = 0xc
+       TCP_SYNCNT                       = 0x7
+       TCP_WINDOW_CLAMP                 = 0xa
+       TCSAFLUSH                        = 0x2
+       TCSBRK                           = 0x5409
+       TCSBRKP                          = 0x5425
+       TCSETA                           = 0x5406
+       TCSETAF                          = 0x5408
+       TCSETAW                          = 0x5407
+       TCSETS                           = 0x5402
+       TCSETS2                          = 0x402c542b
+       TCSETSF                          = 0x5404
+       TCSETSF2                         = 0x402c542d
+       TCSETSW                          = 0x5403
+       TCSETSW2                         = 0x402c542c
+       TCSETX                           = 0x5433
+       TCSETXF                          = 0x5434
+       TCSETXW                          = 0x5435
+       TCXONC                           = 0x540a
+       TIOCCBRK                         = 0x5428
+       TIOCCONS                         = 0x541d
+       TIOCEXCL                         = 0x540c
+       TIOCGDEV                         = 0x80045432
+       TIOCGETD                         = 0x5424
+       TIOCGEXCL                        = 0x80045440
+       TIOCGICOUNT                      = 0x545d
+       TIOCGLCKTRMIOS                   = 0x5456
+       TIOCGPGRP                        = 0x540f
+       TIOCGPKT                         = 0x80045438
+       TIOCGPTLCK                       = 0x80045439
+       TIOCGPTN                         = 0x80045430
+       TIOCGRS485                       = 0x542e
+       TIOCGSERIAL                      = 0x541e
+       TIOCGSID                         = 0x5429
+       TIOCGSOFTCAR                     = 0x5419
+       TIOCGWINSZ                       = 0x5413
+       TIOCINQ                          = 0x541b
+       TIOCLINUX                        = 0x541c
+       TIOCMBIC                         = 0x5417
+       TIOCMBIS                         = 0x5416
+       TIOCMGET                         = 0x5415
+       TIOCMIWAIT                       = 0x545c
+       TIOCMSET                         = 0x5418
+       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                        = 0x5422
+       TIOCNXCL                         = 0x540d
+       TIOCOUTQ                         = 0x5411
+       TIOCPKT                          = 0x5420
+       TIOCPKT_DATA                     = 0x0
+       TIOCPKT_DOSTOP                   = 0x20
+       TIOCPKT_FLUSHREAD                = 0x1
+       TIOCPKT_FLUSHWRITE               = 0x2
+       TIOCPKT_IOCTL                    = 0x40
+       TIOCPKT_NOSTOP                   = 0x10
+       TIOCPKT_START                    = 0x8
+       TIOCPKT_STOP                     = 0x4
+       TIOCSBRK                         = 0x5427
+       TIOCSCTTY                        = 0x540e
+       TIOCSERCONFIG                    = 0x5453
+       TIOCSERGETLSR                    = 0x5459
+       TIOCSERGETMULTI                  = 0x545a
+       TIOCSERGSTRUCT                   = 0x5458
+       TIOCSERGWILD                     = 0x5454
+       TIOCSERSETMULTI                  = 0x545b
+       TIOCSERSWILD                     = 0x5455
+       TIOCSER_TEMT                     = 0x1
+       TIOCSETD                         = 0x5423
+       TIOCSIG                          = 0x40045436
+       TIOCSLCKTRMIOS                   = 0x5457
+       TIOCSPGRP                        = 0x5410
+       TIOCSPTLCK                       = 0x40045431
+       TIOCSRS485                       = 0x542f
+       TIOCSSERIAL                      = 0x541f
+       TIOCSSOFTCAR                     = 0x541a
+       TIOCSTI                          = 0x5412
+       TIOCSWINSZ                       = 0x5414
+       TIOCVHANGUP                      = 0x5437
+       TOSTOP                           = 0x100
+       TUNATTACHFILTER                  = 0x400854d5
+       TUNDETACHFILTER                  = 0x400854d6
+       TUNGETFEATURES                   = 0x800454cf
+       TUNGETIFF                        = 0x800454d2
+       TUNGETSNDBUF                     = 0x800454d3
+       TUNGETVNETHDRSZ                  = 0x800454d7
+       TUNSETDEBUG                      = 0x400454c9
+       TUNSETGROUP                      = 0x400454ce
+       TUNSETIFF                        = 0x400454ca
+       TUNSETLINK                       = 0x400454cd
+       TUNSETNOCSUM                     = 0x400454c8
+       TUNSETOFFLOAD                    = 0x400454d0
+       TUNSETOWNER                      = 0x400454cc
+       TUNSETPERSIST                    = 0x400454cb
+       TUNSETSNDBUF                     = 0x400454d4
+       TUNSETTXFILTER                   = 0x400454d1
+       TUNSETVNETHDRSZ                  = 0x400454d8
+       VDISCARD                         = 0xd
+       VEOF                             = 0x4
+       VEOL                             = 0xb
+       VEOL2                            = 0x10
+       VERASE                           = 0x2
+       VINTR                            = 0x0
+       VKILL                            = 0x3
+       VLNEXT                           = 0xf
+       VMIN                             = 0x6
+       VQUIT                            = 0x1
+       VREPRINT                         = 0xc
+       VSTART                           = 0x8
+       VSTOP                            = 0x9
+       VSUSP                            = 0xa
+       VSWTC                            = 0x7
+       VT0                              = 0x0
+       VT1                              = 0x4000
+       VTDLY                            = 0x4000
+       VTIME                            = 0x5
+       VWERASE                          = 0xe
+       WALL                             = 0x40000000
+       WCLONE                           = 0x80000000
+       WCONTINUED                       = 0x8
+       WEXITED                          = 0x4
+       WNOHANG                          = 0x1
+       WNOTHREAD                        = 0x20000000
+       WNOWAIT                          = 0x1000000
+       WORDSIZE                         = 0x20
+       WSTOPPED                         = 0x2
+       WUNTRACED                        = 0x2
+       XCASE                            = 0x4
+       XTABS                            = 0x1800
+)
+
+// Errors
+const (
+       E2BIG           = syscall.Errno(0x7)
+       EACCES          = syscall.Errno(0xd)
+       EADDRINUSE      = syscall.Errno(0x62)
+       EADDRNOTAVAIL   = syscall.Errno(0x63)
+       EADV            = syscall.Errno(0x44)
+       EAFNOSUPPORT    = syscall.Errno(0x61)
+       EAGAIN          = syscall.Errno(0xb)
+       EALREADY        = syscall.Errno(0x72)
+       EBADE           = syscall.Errno(0x34)
+       EBADF           = syscall.Errno(0x9)
+       EBADFD          = syscall.Errno(0x4d)
+       EBADMSG         = syscall.Errno(0x4a)
+       EBADR           = syscall.Errno(0x35)
+       EBADRQC         = syscall.Errno(0x38)
+       EBADSLT         = syscall.Errno(0x39)
+       EBFONT          = syscall.Errno(0x3b)
+       EBUSY           = syscall.Errno(0x10)
+       ECANCELED       = syscall.Errno(0x7d)
+       ECHILD          = syscall.Errno(0xa)
+       ECHRNG          = syscall.Errno(0x2c)
+       ECOMM           = syscall.Errno(0x46)
+       ECONNABORTED    = syscall.Errno(0x67)
+       ECONNREFUSED    = syscall.Errno(0x6f)
+       ECONNRESET      = syscall.Errno(0x68)
+       EDEADLK         = syscall.Errno(0x23)
+       EDEADLOCK       = syscall.Errno(0x23)
+       EDESTADDRREQ    = syscall.Errno(0x59)
+       EDOM            = syscall.Errno(0x21)
+       EDOTDOT         = syscall.Errno(0x49)
+       EDQUOT          = syscall.Errno(0x7a)
+       EEXIST          = syscall.Errno(0x11)
+       EFAULT          = syscall.Errno(0xe)
+       EFBIG           = syscall.Errno(0x1b)
+       EHOSTDOWN       = syscall.Errno(0x70)
+       EHOSTUNREACH    = syscall.Errno(0x71)
+       EHWPOISON       = syscall.Errno(0x85)
+       EIDRM           = syscall.Errno(0x2b)
+       EILSEQ          = syscall.Errno(0x54)
+       EINPROGRESS     = syscall.Errno(0x73)
+       EINTR           = syscall.Errno(0x4)
+       EINVAL          = syscall.Errno(0x16)
+       EIO             = syscall.Errno(0x5)
+       EISCONN         = syscall.Errno(0x6a)
+       EISDIR          = syscall.Errno(0x15)
+       EISNAM          = syscall.Errno(0x78)
+       EKEYEXPIRED     = syscall.Errno(0x7f)
+       EKEYREJECTED    = syscall.Errno(0x81)
+       EKEYREVOKED     = syscall.Errno(0x80)
+       EL2HLT          = syscall.Errno(0x33)
+       EL2NSYNC        = syscall.Errno(0x2d)
+       EL3HLT          = syscall.Errno(0x2e)
+       EL3RST          = syscall.Errno(0x2f)
+       ELIBACC         = syscall.Errno(0x4f)
+       ELIBBAD         = syscall.Errno(0x50)
+       ELIBEXEC        = syscall.Errno(0x53)
+       ELIBMAX         = syscall.Errno(0x52)
+       ELIBSCN         = syscall.Errno(0x51)
+       ELNRNG          = syscall.Errno(0x30)
+       ELOOP           = syscall.Errno(0x28)
+       EMEDIUMTYPE     = syscall.Errno(0x7c)
+       EMFILE          = syscall.Errno(0x18)
+       EMLINK          = syscall.Errno(0x1f)
+       EMSGSIZE        = syscall.Errno(0x5a)
+       EMULTIHOP       = syscall.Errno(0x48)
+       ENAMETOOLONG    = syscall.Errno(0x24)
+       ENAVAIL         = syscall.Errno(0x77)
+       ENETDOWN        = syscall.Errno(0x64)
+       ENETRESET       = syscall.Errno(0x66)
+       ENETUNREACH     = syscall.Errno(0x65)
+       ENFILE          = syscall.Errno(0x17)
+       ENOANO          = syscall.Errno(0x37)
+       ENOBUFS         = syscall.Errno(0x69)
+       ENOCSI          = syscall.Errno(0x32)
+       ENODATA         = syscall.Errno(0x3d)
+       ENODEV          = syscall.Errno(0x13)
+       ENOENT          = syscall.Errno(0x2)
+       ENOEXEC         = syscall.Errno(0x8)
+       ENOKEY          = syscall.Errno(0x7e)
+       ENOLCK          = syscall.Errno(0x25)
+       ENOLINK         = syscall.Errno(0x43)
+       ENOMEDIUM       = syscall.Errno(0x7b)
+       ENOMEM          = syscall.Errno(0xc)
+       ENOMSG          = syscall.Errno(0x2a)
+       ENONET          = syscall.Errno(0x40)
+       ENOPKG          = syscall.Errno(0x41)
+       ENOPROTOOPT     = syscall.Errno(0x5c)
+       ENOSPC          = syscall.Errno(0x1c)
+       ENOSR           = syscall.Errno(0x3f)
+       ENOSTR          = syscall.Errno(0x3c)
+       ENOSYS          = syscall.Errno(0x26)
+       ENOTBLK         = syscall.Errno(0xf)
+       ENOTCONN        = syscall.Errno(0x6b)
+       ENOTDIR         = syscall.Errno(0x14)
+       ENOTEMPTY       = syscall.Errno(0x27)
+       ENOTNAM         = syscall.Errno(0x76)
+       ENOTRECOVERABLE = syscall.Errno(0x83)
+       ENOTSOCK        = syscall.Errno(0x58)
+       ENOTSUP         = syscall.Errno(0x5f)
+       ENOTTY          = syscall.Errno(0x19)
+       ENOTUNIQ        = syscall.Errno(0x4c)
+       ENXIO           = syscall.Errno(0x6)
+       EOPNOTSUPP      = syscall.Errno(0x5f)
+       EOVERFLOW       = syscall.Errno(0x4b)
+       EOWNERDEAD      = syscall.Errno(0x82)
+       EPERM           = syscall.Errno(0x1)
+       EPFNOSUPPORT    = syscall.Errno(0x60)
+       EPIPE           = syscall.Errno(0x20)
+       EPROTO          = syscall.Errno(0x47)
+       EPROTONOSUPPORT = syscall.Errno(0x5d)
+       EPROTOTYPE      = syscall.Errno(0x5b)
+       ERANGE          = syscall.Errno(0x22)
+       EREMCHG         = syscall.Errno(0x4e)
+       EREMOTE         = syscall.Errno(0x42)
+       EREMOTEIO       = syscall.Errno(0x79)
+       ERESTART        = syscall.Errno(0x55)
+       ERFKILL         = syscall.Errno(0x84)
+       EROFS           = syscall.Errno(0x1e)
+       ESHUTDOWN       = syscall.Errno(0x6c)
+       ESOCKTNOSUPPORT = syscall.Errno(0x5e)
+       ESPIPE          = syscall.Errno(0x1d)
+       ESRCH           = syscall.Errno(0x3)
+       ESRMNT          = syscall.Errno(0x45)
+       ESTALE          = syscall.Errno(0x74)
+       ESTRPIPE        = syscall.Errno(0x56)
+       ETIME           = syscall.Errno(0x3e)
+       ETIMEDOUT       = syscall.Errno(0x6e)
+       ETOOMANYREFS    = syscall.Errno(0x6d)
+       ETXTBSY         = syscall.Errno(0x1a)
+       EUCLEAN         = syscall.Errno(0x75)
+       EUNATCH         = syscall.Errno(0x31)
+       EUSERS          = syscall.Errno(0x57)
+       EWOULDBLOCK     = syscall.Errno(0xb)
+       EXDEV           = syscall.Errno(0x12)
+       EXFULL          = syscall.Errno(0x36)
+)
+
+// Signals
+const (
+       SIGABRT   = syscall.Signal(0x6)
+       SIGALRM   = syscall.Signal(0xe)
+       SIGBUS    = syscall.Signal(0x7)
+       SIGCHLD   = syscall.Signal(0x11)
+       SIGCLD    = syscall.Signal(0x11)
+       SIGCONT   = syscall.Signal(0x12)
+       SIGFPE    = syscall.Signal(0x8)
+       SIGHUP    = syscall.Signal(0x1)
+       SIGILL    = syscall.Signal(0x4)
+       SIGINT    = syscall.Signal(0x2)
+       SIGIO     = syscall.Signal(0x1d)
+       SIGIOT    = syscall.Signal(0x6)
+       SIGKILL   = syscall.Signal(0x9)
+       SIGPIPE   = syscall.Signal(0xd)
+       SIGPOLL   = syscall.Signal(0x1d)
+       SIGPROF   = syscall.Signal(0x1b)
+       SIGPWR    = syscall.Signal(0x1e)
+       SIGQUIT   = syscall.Signal(0x3)
+       SIGSEGV   = syscall.Signal(0xb)
+       SIGSTKFLT = syscall.Signal(0x10)
+       SIGSTOP   = syscall.Signal(0x13)
+       SIGSYS    = syscall.Signal(0x1f)
+       SIGTERM   = syscall.Signal(0xf)
+       SIGTRAP   = syscall.Signal(0x5)
+       SIGTSTP   = syscall.Signal(0x14)
+       SIGTTIN   = syscall.Signal(0x15)
+       SIGTTOU   = syscall.Signal(0x16)
+       SIGUNUSED = syscall.Signal(0x1f)
+       SIGURG    = syscall.Signal(0x17)
+       SIGUSR1   = syscall.Signal(0xa)
+       SIGUSR2   = syscall.Signal(0xc)
+       SIGVTALRM = syscall.Signal(0x1a)
+       SIGWINCH  = syscall.Signal(0x1c)
+       SIGXCPU   = syscall.Signal(0x18)
+       SIGXFSZ   = syscall.Signal(0x19)
+)
+
+// 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:   "no such device or address",
+       7:   "argument list too long",
+       8:   "exec format error",
+       9:   "bad file descriptor",
+       10:  "no child processes",
+       11:  "resource temporarily unavailable",
+       12:  "cannot allocate memory",
+       13:  "permission denied",
+       14:  "bad address",
+       15:  "block device required",
+       16:  "device or resource busy",
+       17:  "file exists",
+       18:  "invalid cross-device link",
+       19:  "no such 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:  "numerical result out of range",
+       35:  "resource deadlock avoided",
+       36:  "file name too long",
+       37:  "no locks available",
+       38:  "function not implemented",
+       39:  "directory not empty",
+       40:  "too many levels of symbolic links",
+       42:  "no message of desired type",
+       43:  "identifier removed",
+       44:  "channel number out of range",
+       45:  "level 2 not synchronized",
+       46:  "level 3 halted",
+       47:  "level 3 reset",
+       48:  "link number out of range",
+       49:  "protocol driver not attached",
+       50:  "no CSI structure available",
+       51:  "level 2 halted",
+       52:  "invalid exchange",
+       53:  "invalid request descriptor",
+       54:  "exchange full",
+       55:  "no anode",
+       56:  "invalid request code",
+       57:  "invalid slot",
+       59:  "bad font file format",
+       60:  "device not a stream",
+       61:  "no data available",
+       62:  "timer expired",
+       63:  "out of streams resources",
+       64:  "machine is not on the network",
+       65:  "package not installed",
+       66:  "object is remote",
+       67:  "link has been severed",
+       68:  "advertise error",
+       69:  "srmount error",
+       70:  "communication error on send",
+       71:  "protocol error",
+       72:  "multihop attempted",
+       73:  "RFS specific error",
+       74:  "bad message",
+       75:  "value too large for defined data type",
+       76:  "name not unique on network",
+       77:  "file descriptor in bad state",
+       78:  "remote address changed",
+       79:  "can not access a needed shared library",
+       80:  "accessing a corrupted shared library",
+       81:  ".lib section in a.out corrupted",
+       82:  "attempting to link in too many shared libraries",
+       83:  "cannot exec a shared library directly",
+       84:  "invalid or incomplete multibyte or wide character",
+       85:  "interrupted system call should be restarted",
+       86:  "streams pipe error",
+       87:  "too many users",
+       88:  "socket operation on non-socket",
+       89:  "destination address required",
+       90:  "message too long",
+       91:  "protocol wrong type for socket",
+       92:  "protocol not available",
+       93:  "protocol not supported",
+       94:  "socket type not supported",
+       95:  "operation not supported",
+       96:  "protocol family not supported",
+       97:  "address family not supported by protocol",
+       98:  "address already in use",
+       99:  "cannot assign requested address",
+       100: "network is down",
+       101: "network is unreachable",
+       102: "network dropped connection on reset",
+       103: "software caused connection abort",
+       104: "connection reset by peer",
+       105: "no buffer space available",
+       106: "transport endpoint is already connected",
+       107: "transport endpoint is not connected",
+       108: "cannot send after transport endpoint shutdown",
+       109: "too many references: cannot splice",
+       110: "connection timed out",
+       111: "connection refused",
+       112: "host is down",
+       113: "no route to host",
+       114: "operation already in progress",
+       115: "operation now in progress",
+       116: "stale NFS file handle",
+       117: "structure needs cleaning",
+       118: "not a XENIX named type file",
+       119: "no XENIX semaphores available",
+       120: "is a named type file",
+       121: "remote I/O error",
+       122: "disk quota exceeded",
+       123: "no medium found",
+       124: "wrong medium type",
+       125: "operation canceled",
+       126: "required key not available",
+       127: "key has expired",
+       128: "key has been revoked",
+       129: "key was rejected by service",
+       130: "owner died",
+       131: "state not recoverable",
+       132: "operation not possible due to RF-kill",
+       133: "unknown error 133",
+}
+
+// Signal table
+var signals = [...]string{
+       1:  "hangup",
+       2:  "interrupt",
+       3:  "quit",
+       4:  "illegal instruction",
+       5:  "trace/breakpoint trap",
+       6:  "aborted",
+       7:  "bus error",
+       8:  "floating point exception",
+       9:  "killed",
+       10: "user defined signal 1",
+       11: "segmentation fault",
+       12: "user defined signal 2",
+       13: "broken pipe",
+       14: "alarm clock",
+       15: "terminated",
+       16: "stack fault",
+       17: "child exited",
+       18: "continued",
+       19: "stopped (signal)",
+       20: "stopped",
+       21: "stopped (tty input)",
+       22: "stopped (tty output)",
+       23: "urgent I/O condition",
+       24: "CPU time limit exceeded",
+       25: "file size limit exceeded",
+       26: "virtual timer expired",
+       27: "profiling timer expired",
+       28: "window changed",
+       29: "I/O possible",
+       30: "power failure",
+       31: "bad system call",
+}
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go
new file mode 100644 (file)
index 0000000..47027b7
--- /dev/null
@@ -0,0 +1,1896 @@
+// mkerrors.sh
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build arm64,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- _const.go
+
+package unix
+
+import "syscall"
+
+const (
+       AF_ALG                           = 0x26
+       AF_APPLETALK                     = 0x5
+       AF_ASH                           = 0x12
+       AF_ATMPVC                        = 0x8
+       AF_ATMSVC                        = 0x14
+       AF_AX25                          = 0x3
+       AF_BLUETOOTH                     = 0x1f
+       AF_BRIDGE                        = 0x7
+       AF_CAIF                          = 0x25
+       AF_CAN                           = 0x1d
+       AF_DECnet                        = 0xc
+       AF_ECONET                        = 0x13
+       AF_FILE                          = 0x1
+       AF_IEEE802154                    = 0x24
+       AF_INET                          = 0x2
+       AF_INET6                         = 0xa
+       AF_IPX                           = 0x4
+       AF_IRDA                          = 0x17
+       AF_ISDN                          = 0x22
+       AF_IUCV                          = 0x20
+       AF_KEY                           = 0xf
+       AF_LLC                           = 0x1a
+       AF_LOCAL                         = 0x1
+       AF_MAX                           = 0x29
+       AF_NETBEUI                       = 0xd
+       AF_NETLINK                       = 0x10
+       AF_NETROM                        = 0x6
+       AF_NFC                           = 0x27
+       AF_PACKET                        = 0x11
+       AF_PHONET                        = 0x23
+       AF_PPPOX                         = 0x18
+       AF_RDS                           = 0x15
+       AF_ROSE                          = 0xb
+       AF_ROUTE                         = 0x10
+       AF_RXRPC                         = 0x21
+       AF_SECURITY                      = 0xe
+       AF_SNA                           = 0x16
+       AF_TIPC                          = 0x1e
+       AF_UNIX                          = 0x1
+       AF_UNSPEC                        = 0x0
+       AF_VSOCK                         = 0x28
+       AF_WANPIPE                       = 0x19
+       AF_X25                           = 0x9
+       ARPHRD_ADAPT                     = 0x108
+       ARPHRD_APPLETLK                  = 0x8
+       ARPHRD_ARCNET                    = 0x7
+       ARPHRD_ASH                       = 0x30d
+       ARPHRD_ATM                       = 0x13
+       ARPHRD_AX25                      = 0x3
+       ARPHRD_BIF                       = 0x307
+       ARPHRD_CAIF                      = 0x336
+       ARPHRD_CAN                       = 0x118
+       ARPHRD_CHAOS                     = 0x5
+       ARPHRD_CISCO                     = 0x201
+       ARPHRD_CSLIP                     = 0x101
+       ARPHRD_CSLIP6                    = 0x103
+       ARPHRD_DDCMP                     = 0x205
+       ARPHRD_DLCI                      = 0xf
+       ARPHRD_ECONET                    = 0x30e
+       ARPHRD_EETHER                    = 0x2
+       ARPHRD_ETHER                     = 0x1
+       ARPHRD_EUI64                     = 0x1b
+       ARPHRD_FCAL                      = 0x311
+       ARPHRD_FCFABRIC                  = 0x313
+       ARPHRD_FCPL                      = 0x312
+       ARPHRD_FCPP                      = 0x310
+       ARPHRD_FDDI                      = 0x306
+       ARPHRD_FRAD                      = 0x302
+       ARPHRD_HDLC                      = 0x201
+       ARPHRD_HIPPI                     = 0x30c
+       ARPHRD_HWX25                     = 0x110
+       ARPHRD_IEEE1394                  = 0x18
+       ARPHRD_IEEE802                   = 0x6
+       ARPHRD_IEEE80211                 = 0x321
+       ARPHRD_IEEE80211_PRISM           = 0x322
+       ARPHRD_IEEE80211_RADIOTAP        = 0x323
+       ARPHRD_IEEE802154                = 0x324
+       ARPHRD_IEEE802154_MONITOR        = 0x325
+       ARPHRD_IEEE802_TR                = 0x320
+       ARPHRD_INFINIBAND                = 0x20
+       ARPHRD_IP6GRE                    = 0x337
+       ARPHRD_IPDDP                     = 0x309
+       ARPHRD_IPGRE                     = 0x30a
+       ARPHRD_IRDA                      = 0x30f
+       ARPHRD_LAPB                      = 0x204
+       ARPHRD_LOCALTLK                  = 0x305
+       ARPHRD_LOOPBACK                  = 0x304
+       ARPHRD_METRICOM                  = 0x17
+       ARPHRD_NETLINK                   = 0x338
+       ARPHRD_NETROM                    = 0x0
+       ARPHRD_NONE                      = 0xfffe
+       ARPHRD_PHONET                    = 0x334
+       ARPHRD_PHONET_PIPE               = 0x335
+       ARPHRD_PIMREG                    = 0x30b
+       ARPHRD_PPP                       = 0x200
+       ARPHRD_PRONET                    = 0x4
+       ARPHRD_RAWHDLC                   = 0x206
+       ARPHRD_ROSE                      = 0x10e
+       ARPHRD_RSRVD                     = 0x104
+       ARPHRD_SIT                       = 0x308
+       ARPHRD_SKIP                      = 0x303
+       ARPHRD_SLIP                      = 0x100
+       ARPHRD_SLIP6                     = 0x102
+       ARPHRD_TUNNEL                    = 0x300
+       ARPHRD_TUNNEL6                   = 0x301
+       ARPHRD_VOID                      = 0xffff
+       ARPHRD_X25                       = 0x10f
+       B0                               = 0x0
+       B1000000                         = 0x1008
+       B110                             = 0x3
+       B115200                          = 0x1002
+       B1152000                         = 0x1009
+       B1200                            = 0x9
+       B134                             = 0x4
+       B150                             = 0x5
+       B1500000                         = 0x100a
+       B1800                            = 0xa
+       B19200                           = 0xe
+       B200                             = 0x6
+       B2000000                         = 0x100b
+       B230400                          = 0x1003
+       B2400                            = 0xb
+       B2500000                         = 0x100c
+       B300                             = 0x7
+       B3000000                         = 0x100d
+       B3500000                         = 0x100e
+       B38400                           = 0xf
+       B4000000                         = 0x100f
+       B460800                          = 0x1004
+       B4800                            = 0xc
+       B50                              = 0x1
+       B500000                          = 0x1005
+       B57600                           = 0x1001
+       B576000                          = 0x1006
+       B600                             = 0x8
+       B75                              = 0x2
+       B921600                          = 0x1007
+       B9600                            = 0xd
+       BOTHER                           = 0x1000
+       BPF_A                            = 0x10
+       BPF_ABS                          = 0x20
+       BPF_ADD                          = 0x0
+       BPF_ALU                          = 0x4
+       BPF_AND                          = 0x50
+       BPF_B                            = 0x10
+       BPF_DIV                          = 0x30
+       BPF_H                            = 0x8
+       BPF_IMM                          = 0x0
+       BPF_IND                          = 0x40
+       BPF_JA                           = 0x0
+       BPF_JEQ                          = 0x10
+       BPF_JGE                          = 0x30
+       BPF_JGT                          = 0x20
+       BPF_JMP                          = 0x5
+       BPF_JSET                         = 0x40
+       BPF_K                            = 0x0
+       BPF_LD                           = 0x0
+       BPF_LDX                          = 0x1
+       BPF_LEN                          = 0x80
+       BPF_LSH                          = 0x60
+       BPF_MAJOR_VERSION                = 0x1
+       BPF_MAXINSNS                     = 0x1000
+       BPF_MEM                          = 0x60
+       BPF_MEMWORDS                     = 0x10
+       BPF_MINOR_VERSION                = 0x1
+       BPF_MISC                         = 0x7
+       BPF_MOD                          = 0x90
+       BPF_MSH                          = 0xa0
+       BPF_MUL                          = 0x20
+       BPF_NEG                          = 0x80
+       BPF_OR                           = 0x40
+       BPF_RET                          = 0x6
+       BPF_RSH                          = 0x70
+       BPF_ST                           = 0x2
+       BPF_STX                          = 0x3
+       BPF_SUB                          = 0x10
+       BPF_TAX                          = 0x0
+       BPF_TXA                          = 0x80
+       BPF_W                            = 0x0
+       BPF_X                            = 0x8
+       BPF_XOR                          = 0xa0
+       BRKINT                           = 0x2
+       BS0                              = 0x0
+       BS1                              = 0x2000
+       BSDLY                            = 0x2000
+       CBAUD                            = 0x100f
+       CBAUDEX                          = 0x1000
+       CFLUSH                           = 0xf
+       CIBAUD                           = 0x100f0000
+       CLOCAL                           = 0x800
+       CLOCK_BOOTTIME                   = 0x7
+       CLOCK_BOOTTIME_ALARM             = 0x9
+       CLOCK_DEFAULT                    = 0x0
+       CLOCK_EXT                        = 0x1
+       CLOCK_INT                        = 0x2
+       CLOCK_MONOTONIC                  = 0x1
+       CLOCK_MONOTONIC_COARSE           = 0x6
+       CLOCK_MONOTONIC_RAW              = 0x4
+       CLOCK_PROCESS_CPUTIME_ID         = 0x2
+       CLOCK_REALTIME                   = 0x0
+       CLOCK_REALTIME_ALARM             = 0x8
+       CLOCK_REALTIME_COARSE            = 0x5
+       CLOCK_THREAD_CPUTIME_ID          = 0x3
+       CLOCK_TXFROMRX                   = 0x4
+       CLOCK_TXINT                      = 0x3
+       CLONE_CHILD_CLEARTID             = 0x200000
+       CLONE_CHILD_SETTID               = 0x1000000
+       CLONE_DETACHED                   = 0x400000
+       CLONE_FILES                      = 0x400
+       CLONE_FS                         = 0x200
+       CLONE_IO                         = 0x80000000
+       CLONE_NEWIPC                     = 0x8000000
+       CLONE_NEWNET                     = 0x40000000
+       CLONE_NEWNS                      = 0x20000
+       CLONE_NEWPID                     = 0x20000000
+       CLONE_NEWUSER                    = 0x10000000
+       CLONE_NEWUTS                     = 0x4000000
+       CLONE_PARENT                     = 0x8000
+       CLONE_PARENT_SETTID              = 0x100000
+       CLONE_PTRACE                     = 0x2000
+       CLONE_SETTLS                     = 0x80000
+       CLONE_SIGHAND                    = 0x800
+       CLONE_SYSVSEM                    = 0x40000
+       CLONE_THREAD                     = 0x10000
+       CLONE_UNTRACED                   = 0x800000
+       CLONE_VFORK                      = 0x4000
+       CLONE_VM                         = 0x100
+       CMSPAR                           = 0x40000000
+       CR0                              = 0x0
+       CR1                              = 0x200
+       CR2                              = 0x400
+       CR3                              = 0x600
+       CRDLY                            = 0x600
+       CREAD                            = 0x80
+       CRTSCTS                          = 0x80000000
+       CS5                              = 0x0
+       CS6                              = 0x10
+       CS7                              = 0x20
+       CS8                              = 0x30
+       CSIGNAL                          = 0xff
+       CSIZE                            = 0x30
+       CSTART                           = 0x11
+       CSTATUS                          = 0x0
+       CSTOP                            = 0x13
+       CSTOPB                           = 0x40
+       CSUSP                            = 0x1a
+       DT_BLK                           = 0x6
+       DT_CHR                           = 0x2
+       DT_DIR                           = 0x4
+       DT_FIFO                          = 0x1
+       DT_LNK                           = 0xa
+       DT_REG                           = 0x8
+       DT_SOCK                          = 0xc
+       DT_UNKNOWN                       = 0x0
+       DT_WHT                           = 0xe
+       ECHO                             = 0x8
+       ECHOCTL                          = 0x200
+       ECHOE                            = 0x10
+       ECHOK                            = 0x20
+       ECHOKE                           = 0x800
+       ECHONL                           = 0x40
+       ECHOPRT                          = 0x400
+       ELF_NGREG                        = 0x22
+       ELF_PRARGSZ                      = 0x50
+       ENCODING_DEFAULT                 = 0x0
+       ENCODING_FM_MARK                 = 0x3
+       ENCODING_FM_SPACE                = 0x4
+       ENCODING_MANCHESTER              = 0x5
+       ENCODING_NRZ                     = 0x1
+       ENCODING_NRZI                    = 0x2
+       EPOLLERR                         = 0x8
+       EPOLLET                          = 0x80000000
+       EPOLLHUP                         = 0x10
+       EPOLLIN                          = 0x1
+       EPOLLMSG                         = 0x400
+       EPOLLONESHOT                     = 0x40000000
+       EPOLLOUT                         = 0x4
+       EPOLLPRI                         = 0x2
+       EPOLLRDBAND                      = 0x80
+       EPOLLRDHUP                       = 0x2000
+       EPOLLRDNORM                      = 0x40
+       EPOLLWAKEUP                      = 0x20000000
+       EPOLLWRBAND                      = 0x200
+       EPOLLWRNORM                      = 0x100
+       EPOLL_CLOEXEC                    = 0x80000
+       EPOLL_CTL_ADD                    = 0x1
+       EPOLL_CTL_DEL                    = 0x2
+       EPOLL_CTL_MOD                    = 0x3
+       ETH_P_1588                       = 0x88f7
+       ETH_P_8021AD                     = 0x88a8
+       ETH_P_8021AH                     = 0x88e7
+       ETH_P_8021Q                      = 0x8100
+       ETH_P_802_2                      = 0x4
+       ETH_P_802_3                      = 0x1
+       ETH_P_802_3_MIN                  = 0x600
+       ETH_P_802_EX1                    = 0x88b5
+       ETH_P_AARP                       = 0x80f3
+       ETH_P_AF_IUCV                    = 0xfbfb
+       ETH_P_ALL                        = 0x3
+       ETH_P_AOE                        = 0x88a2
+       ETH_P_ARCNET                     = 0x1a
+       ETH_P_ARP                        = 0x806
+       ETH_P_ATALK                      = 0x809b
+       ETH_P_ATMFATE                    = 0x8884
+       ETH_P_ATMMPOA                    = 0x884c
+       ETH_P_AX25                       = 0x2
+       ETH_P_BATMAN                     = 0x4305
+       ETH_P_BPQ                        = 0x8ff
+       ETH_P_CAIF                       = 0xf7
+       ETH_P_CAN                        = 0xc
+       ETH_P_CANFD                      = 0xd
+       ETH_P_CONTROL                    = 0x16
+       ETH_P_CUST                       = 0x6006
+       ETH_P_DDCMP                      = 0x6
+       ETH_P_DEC                        = 0x6000
+       ETH_P_DIAG                       = 0x6005
+       ETH_P_DNA_DL                     = 0x6001
+       ETH_P_DNA_RC                     = 0x6002
+       ETH_P_DNA_RT                     = 0x6003
+       ETH_P_DSA                        = 0x1b
+       ETH_P_ECONET                     = 0x18
+       ETH_P_EDSA                       = 0xdada
+       ETH_P_FCOE                       = 0x8906
+       ETH_P_FIP                        = 0x8914
+       ETH_P_HDLC                       = 0x19
+       ETH_P_IEEE802154                 = 0xf6
+       ETH_P_IEEEPUP                    = 0xa00
+       ETH_P_IEEEPUPAT                  = 0xa01
+       ETH_P_IP                         = 0x800
+       ETH_P_IPV6                       = 0x86dd
+       ETH_P_IPX                        = 0x8137
+       ETH_P_IRDA                       = 0x17
+       ETH_P_LAT                        = 0x6004
+       ETH_P_LINK_CTL                   = 0x886c
+       ETH_P_LOCALTALK                  = 0x9
+       ETH_P_LOOP                       = 0x60
+       ETH_P_MOBITEX                    = 0x15
+       ETH_P_MPLS_MC                    = 0x8848
+       ETH_P_MPLS_UC                    = 0x8847
+       ETH_P_MVRP                       = 0x88f5
+       ETH_P_PAE                        = 0x888e
+       ETH_P_PAUSE                      = 0x8808
+       ETH_P_PHONET                     = 0xf5
+       ETH_P_PPPTALK                    = 0x10
+       ETH_P_PPP_DISC                   = 0x8863
+       ETH_P_PPP_MP                     = 0x8
+       ETH_P_PPP_SES                    = 0x8864
+       ETH_P_PRP                        = 0x88fb
+       ETH_P_PUP                        = 0x200
+       ETH_P_PUPAT                      = 0x201
+       ETH_P_QINQ1                      = 0x9100
+       ETH_P_QINQ2                      = 0x9200
+       ETH_P_QINQ3                      = 0x9300
+       ETH_P_RARP                       = 0x8035
+       ETH_P_SCA                        = 0x6007
+       ETH_P_SLOW                       = 0x8809
+       ETH_P_SNAP                       = 0x5
+       ETH_P_TDLS                       = 0x890d
+       ETH_P_TEB                        = 0x6558
+       ETH_P_TIPC                       = 0x88ca
+       ETH_P_TRAILER                    = 0x1c
+       ETH_P_TR_802_2                   = 0x11
+       ETH_P_WAN_PPP                    = 0x7
+       ETH_P_WCCP                       = 0x883e
+       ETH_P_X25                        = 0x805
+       EXTA                             = 0xe
+       EXTB                             = 0xf
+       EXTPROC                          = 0x10000
+       FD_CLOEXEC                       = 0x1
+       FD_SETSIZE                       = 0x400
+       FF0                              = 0x0
+       FF1                              = 0x8000
+       FFDLY                            = 0x8000
+       FLUSHO                           = 0x1000
+       F_DUPFD                          = 0x0
+       F_DUPFD_CLOEXEC                  = 0x406
+       F_EXLCK                          = 0x4
+       F_GETFD                          = 0x1
+       F_GETFL                          = 0x3
+       F_GETLEASE                       = 0x401
+       F_GETLK                          = 0x5
+       F_GETLK64                        = 0x5
+       F_GETOWN                         = 0x9
+       F_GETOWN_EX                      = 0x10
+       F_GETPIPE_SZ                     = 0x408
+       F_GETSIG                         = 0xb
+       F_LOCK                           = 0x1
+       F_NOTIFY                         = 0x402
+       F_OK                             = 0x0
+       F_RDLCK                          = 0x0
+       F_SETFD                          = 0x2
+       F_SETFL                          = 0x4
+       F_SETLEASE                       = 0x400
+       F_SETLK                          = 0x6
+       F_SETLK64                        = 0x6
+       F_SETLKW                         = 0x7
+       F_SETLKW64                       = 0x7
+       F_SETOWN                         = 0x8
+       F_SETOWN_EX                      = 0xf
+       F_SETPIPE_SZ                     = 0x407
+       F_SETSIG                         = 0xa
+       F_SHLCK                          = 0x8
+       F_TEST                           = 0x3
+       F_TLOCK                          = 0x2
+       F_ULOCK                          = 0x0
+       F_UNLCK                          = 0x2
+       F_WRLCK                          = 0x1
+       HUPCL                            = 0x400
+       IBSHIFT                          = 0x10
+       ICANON                           = 0x2
+       ICMPV6_FILTER                    = 0x1
+       ICRNL                            = 0x100
+       IEXTEN                           = 0x8000
+       IFA_F_DADFAILED                  = 0x8
+       IFA_F_DEPRECATED                 = 0x20
+       IFA_F_HOMEADDRESS                = 0x10
+       IFA_F_NODAD                      = 0x2
+       IFA_F_OPTIMISTIC                 = 0x4
+       IFA_F_PERMANENT                  = 0x80
+       IFA_F_SECONDARY                  = 0x1
+       IFA_F_TEMPORARY                  = 0x1
+       IFA_F_TENTATIVE                  = 0x40
+       IFA_MAX                          = 0x7
+       IFF_802_1Q_VLAN                  = 0x1
+       IFF_ALLMULTI                     = 0x200
+       IFF_ATTACH_QUEUE                 = 0x200
+       IFF_AUTOMEDIA                    = 0x4000
+       IFF_BONDING                      = 0x20
+       IFF_BRIDGE_PORT                  = 0x4000
+       IFF_BROADCAST                    = 0x2
+       IFF_DEBUG                        = 0x4
+       IFF_DETACH_QUEUE                 = 0x400
+       IFF_DISABLE_NETPOLL              = 0x1000
+       IFF_DONT_BRIDGE                  = 0x800
+       IFF_DORMANT                      = 0x20000
+       IFF_DYNAMIC                      = 0x8000
+       IFF_EBRIDGE                      = 0x2
+       IFF_ECHO                         = 0x40000
+       IFF_ISATAP                       = 0x80
+       IFF_LIVE_ADDR_CHANGE             = 0x100000
+       IFF_LOOPBACK                     = 0x8
+       IFF_LOWER_UP                     = 0x10000
+       IFF_MACVLAN                      = 0x200000
+       IFF_MACVLAN_PORT                 = 0x2000
+       IFF_MASTER                       = 0x400
+       IFF_MASTER_8023AD                = 0x8
+       IFF_MASTER_ALB                   = 0x10
+       IFF_MASTER_ARPMON                = 0x100
+       IFF_MULTICAST                    = 0x1000
+       IFF_MULTI_QUEUE                  = 0x100
+       IFF_NOARP                        = 0x80
+       IFF_NOFILTER                     = 0x1000
+       IFF_NOTRAILERS                   = 0x20
+       IFF_NO_PI                        = 0x1000
+       IFF_ONE_QUEUE                    = 0x2000
+       IFF_OVS_DATAPATH                 = 0x8000
+       IFF_PERSIST                      = 0x800
+       IFF_POINTOPOINT                  = 0x10
+       IFF_PORTSEL                      = 0x2000
+       IFF_PROMISC                      = 0x100
+       IFF_RUNNING                      = 0x40
+       IFF_SLAVE                        = 0x800
+       IFF_SLAVE_INACTIVE               = 0x4
+       IFF_SLAVE_NEEDARP                = 0x40
+       IFF_SUPP_NOFCS                   = 0x80000
+       IFF_TAP                          = 0x2
+       IFF_TEAM_PORT                    = 0x40000
+       IFF_TUN                          = 0x1
+       IFF_TUN_EXCL                     = 0x8000
+       IFF_TX_SKB_SHARING               = 0x10000
+       IFF_UNICAST_FLT                  = 0x20000
+       IFF_UP                           = 0x1
+       IFF_VNET_HDR                     = 0x4000
+       IFF_VOLATILE                     = 0x70c5a
+       IFF_WAN_HDLC                     = 0x200
+       IFF_XMIT_DST_RELEASE             = 0x400
+       IFNAMSIZ                         = 0x10
+       IGNBRK                           = 0x1
+       IGNCR                            = 0x80
+       IGNPAR                           = 0x4
+       IMAXBEL                          = 0x2000
+       INLCR                            = 0x40
+       INPCK                            = 0x10
+       IN_ACCESS                        = 0x1
+       IN_ALL_EVENTS                    = 0xfff
+       IN_ATTRIB                        = 0x4
+       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_CLOEXEC                       = 0x80000
+       IN_CLOSE                         = 0x18
+       IN_CLOSE_NOWRITE                 = 0x10
+       IN_CLOSE_WRITE                   = 0x8
+       IN_CREATE                        = 0x100
+       IN_DELETE                        = 0x200
+       IN_DELETE_SELF                   = 0x400
+       IN_DONT_FOLLOW                   = 0x2000000
+       IN_EXCL_UNLINK                   = 0x4000000
+       IN_IGNORED                       = 0x8000
+       IN_ISDIR                         = 0x40000000
+       IN_LOOPBACKNET                   = 0x7f
+       IN_MASK_ADD                      = 0x20000000
+       IN_MODIFY                        = 0x2
+       IN_MOVE                          = 0xc0
+       IN_MOVED_FROM                    = 0x40
+       IN_MOVED_TO                      = 0x80
+       IN_MOVE_SELF                     = 0x800
+       IN_NONBLOCK                      = 0x800
+       IN_ONESHOT                       = 0x80000000
+       IN_ONLYDIR                       = 0x1000000
+       IN_OPEN                          = 0x20
+       IN_Q_OVERFLOW                    = 0x4000
+       IN_UNMOUNT                       = 0x2000
+       IPPROTO_AH                       = 0x33
+       IPPROTO_BEETPH                   = 0x5e
+       IPPROTO_COMP                     = 0x6c
+       IPPROTO_DCCP                     = 0x21
+       IPPROTO_DSTOPTS                  = 0x3c
+       IPPROTO_EGP                      = 0x8
+       IPPROTO_ENCAP                    = 0x62
+       IPPROTO_ESP                      = 0x32
+       IPPROTO_FRAGMENT                 = 0x2c
+       IPPROTO_GRE                      = 0x2f
+       IPPROTO_HOPOPTS                  = 0x0
+       IPPROTO_ICMP                     = 0x1
+       IPPROTO_ICMPV6                   = 0x3a
+       IPPROTO_IDP                      = 0x16
+       IPPROTO_IGMP                     = 0x2
+       IPPROTO_IP                       = 0x0
+       IPPROTO_IPIP                     = 0x4
+       IPPROTO_IPV6                     = 0x29
+       IPPROTO_MH                       = 0x87
+       IPPROTO_MTP                      = 0x5c
+       IPPROTO_NONE                     = 0x3b
+       IPPROTO_PIM                      = 0x67
+       IPPROTO_PUP                      = 0xc
+       IPPROTO_RAW                      = 0xff
+       IPPROTO_ROUTING                  = 0x2b
+       IPPROTO_RSVP                     = 0x2e
+       IPPROTO_SCTP                     = 0x84
+       IPPROTO_TCP                      = 0x6
+       IPPROTO_TP                       = 0x1d
+       IPPROTO_UDP                      = 0x11
+       IPPROTO_UDPLITE                  = 0x88
+       IPV6_2292DSTOPTS                 = 0x4
+       IPV6_2292HOPLIMIT                = 0x8
+       IPV6_2292HOPOPTS                 = 0x3
+       IPV6_2292PKTINFO                 = 0x2
+       IPV6_2292PKTOPTIONS              = 0x6
+       IPV6_2292RTHDR                   = 0x5
+       IPV6_ADDRFORM                    = 0x1
+       IPV6_ADD_MEMBERSHIP              = 0x14
+       IPV6_AUTHHDR                     = 0xa
+       IPV6_CHECKSUM                    = 0x7
+       IPV6_DROP_MEMBERSHIP             = 0x15
+       IPV6_DSTOPTS                     = 0x3b
+       IPV6_HOPLIMIT                    = 0x34
+       IPV6_HOPOPTS                     = 0x36
+       IPV6_IPSEC_POLICY                = 0x22
+       IPV6_JOIN_ANYCAST                = 0x1b
+       IPV6_JOIN_GROUP                  = 0x14
+       IPV6_LEAVE_ANYCAST               = 0x1c
+       IPV6_LEAVE_GROUP                 = 0x15
+       IPV6_MTU                         = 0x18
+       IPV6_MTU_DISCOVER                = 0x17
+       IPV6_MULTICAST_HOPS              = 0x12
+       IPV6_MULTICAST_IF                = 0x11
+       IPV6_MULTICAST_LOOP              = 0x13
+       IPV6_NEXTHOP                     = 0x9
+       IPV6_PKTINFO                     = 0x32
+       IPV6_PMTUDISC_DO                 = 0x2
+       IPV6_PMTUDISC_DONT               = 0x0
+       IPV6_PMTUDISC_PROBE              = 0x3
+       IPV6_PMTUDISC_WANT               = 0x1
+       IPV6_RECVDSTOPTS                 = 0x3a
+       IPV6_RECVERR                     = 0x19
+       IPV6_RECVHOPLIMIT                = 0x33
+       IPV6_RECVHOPOPTS                 = 0x35
+       IPV6_RECVPKTINFO                 = 0x31
+       IPV6_RECVRTHDR                   = 0x38
+       IPV6_RECVTCLASS                  = 0x42
+       IPV6_ROUTER_ALERT                = 0x16
+       IPV6_RTHDR                       = 0x39
+       IPV6_RTHDRDSTOPTS                = 0x37
+       IPV6_RTHDR_LOOSE                 = 0x0
+       IPV6_RTHDR_STRICT                = 0x1
+       IPV6_RTHDR_TYPE_0                = 0x0
+       IPV6_RXDSTOPTS                   = 0x3b
+       IPV6_RXHOPOPTS                   = 0x36
+       IPV6_TCLASS                      = 0x43
+       IPV6_UNICAST_HOPS                = 0x10
+       IPV6_V6ONLY                      = 0x1a
+       IPV6_XFRM_POLICY                 = 0x23
+       IP_ADD_MEMBERSHIP                = 0x23
+       IP_ADD_SOURCE_MEMBERSHIP         = 0x27
+       IP_BLOCK_SOURCE                  = 0x26
+       IP_DEFAULT_MULTICAST_LOOP        = 0x1
+       IP_DEFAULT_MULTICAST_TTL         = 0x1
+       IP_DF                            = 0x4000
+       IP_DROP_MEMBERSHIP               = 0x24
+       IP_DROP_SOURCE_MEMBERSHIP        = 0x28
+       IP_FREEBIND                      = 0xf
+       IP_HDRINCL                       = 0x3
+       IP_IPSEC_POLICY                  = 0x10
+       IP_MAXPACKET                     = 0xffff
+       IP_MAX_MEMBERSHIPS               = 0x14
+       IP_MF                            = 0x2000
+       IP_MINTTL                        = 0x15
+       IP_MSFILTER                      = 0x29
+       IP_MSS                           = 0x240
+       IP_MTU                           = 0xe
+       IP_MTU_DISCOVER                  = 0xa
+       IP_MULTICAST_ALL                 = 0x31
+       IP_MULTICAST_IF                  = 0x20
+       IP_MULTICAST_LOOP                = 0x22
+       IP_MULTICAST_TTL                 = 0x21
+       IP_OFFMASK                       = 0x1fff
+       IP_OPTIONS                       = 0x4
+       IP_ORIGDSTADDR                   = 0x14
+       IP_PASSSEC                       = 0x12
+       IP_PKTINFO                       = 0x8
+       IP_PKTOPTIONS                    = 0x9
+       IP_PMTUDISC                      = 0xa
+       IP_PMTUDISC_DO                   = 0x2
+       IP_PMTUDISC_DONT                 = 0x0
+       IP_PMTUDISC_PROBE                = 0x3
+       IP_PMTUDISC_WANT                 = 0x1
+       IP_RECVERR                       = 0xb
+       IP_RECVOPTS                      = 0x6
+       IP_RECVORIGDSTADDR               = 0x14
+       IP_RECVRETOPTS                   = 0x7
+       IP_RECVTOS                       = 0xd
+       IP_RECVTTL                       = 0xc
+       IP_RETOPTS                       = 0x7
+       IP_RF                            = 0x8000
+       IP_ROUTER_ALERT                  = 0x5
+       IP_TOS                           = 0x1
+       IP_TRANSPARENT                   = 0x13
+       IP_TTL                           = 0x2
+       IP_UNBLOCK_SOURCE                = 0x25
+       IP_UNICAST_IF                    = 0x32
+       IP_XFRM_POLICY                   = 0x11
+       ISIG                             = 0x1
+       ISTRIP                           = 0x20
+       IUCLC                            = 0x200
+       IUTF8                            = 0x4000
+       IXANY                            = 0x800
+       IXOFF                            = 0x1000
+       IXON                             = 0x400
+       LINUX_REBOOT_CMD_CAD_OFF         = 0x0
+       LINUX_REBOOT_CMD_CAD_ON          = 0x89abcdef
+       LINUX_REBOOT_CMD_HALT            = 0xcdef0123
+       LINUX_REBOOT_CMD_KEXEC           = 0x45584543
+       LINUX_REBOOT_CMD_POWER_OFF       = 0x4321fedc
+       LINUX_REBOOT_CMD_RESTART         = 0x1234567
+       LINUX_REBOOT_CMD_RESTART2        = 0xa1b2c3d4
+       LINUX_REBOOT_CMD_SW_SUSPEND      = 0xd000fce2
+       LINUX_REBOOT_MAGIC1              = 0xfee1dead
+       LINUX_REBOOT_MAGIC2              = 0x28121969
+       LOCK_EX                          = 0x2
+       LOCK_NB                          = 0x4
+       LOCK_SH                          = 0x1
+       LOCK_UN                          = 0x8
+       MADV_DODUMP                      = 0x11
+       MADV_DOFORK                      = 0xb
+       MADV_DONTDUMP                    = 0x10
+       MADV_DONTFORK                    = 0xa
+       MADV_DONTNEED                    = 0x4
+       MADV_HUGEPAGE                    = 0xe
+       MADV_HWPOISON                    = 0x64
+       MADV_MERGEABLE                   = 0xc
+       MADV_NOHUGEPAGE                  = 0xf
+       MADV_NORMAL                      = 0x0
+       MADV_RANDOM                      = 0x1
+       MADV_REMOVE                      = 0x9
+       MADV_SEQUENTIAL                  = 0x2
+       MADV_UNMERGEABLE                 = 0xd
+       MADV_WILLNEED                    = 0x3
+       MAP_ANON                         = 0x20
+       MAP_ANONYMOUS                    = 0x20
+       MAP_DENYWRITE                    = 0x800
+       MAP_EXECUTABLE                   = 0x1000
+       MAP_FILE                         = 0x0
+       MAP_FIXED                        = 0x10
+       MAP_GROWSDOWN                    = 0x100
+       MAP_HUGETLB                      = 0x40000
+       MAP_HUGE_MASK                    = 0x3f
+       MAP_HUGE_SHIFT                   = 0x1a
+       MAP_LOCKED                       = 0x2000
+       MAP_NONBLOCK                     = 0x10000
+       MAP_NORESERVE                    = 0x4000
+       MAP_POPULATE                     = 0x8000
+       MAP_PRIVATE                      = 0x2
+       MAP_SHARED                       = 0x1
+       MAP_STACK                        = 0x20000
+       MAP_TYPE                         = 0xf
+       MCL_CURRENT                      = 0x1
+       MCL_FUTURE                       = 0x2
+       MNT_DETACH                       = 0x2
+       MNT_EXPIRE                       = 0x4
+       MNT_FORCE                        = 0x1
+       MSG_CMSG_CLOEXEC                 = 0x40000000
+       MSG_CONFIRM                      = 0x800
+       MSG_CTRUNC                       = 0x8
+       MSG_DONTROUTE                    = 0x4
+       MSG_DONTWAIT                     = 0x40
+       MSG_EOR                          = 0x80
+       MSG_ERRQUEUE                     = 0x2000
+       MSG_FASTOPEN                     = 0x20000000
+       MSG_FIN                          = 0x200
+       MSG_MORE                         = 0x8000
+       MSG_NOSIGNAL                     = 0x4000
+       MSG_OOB                          = 0x1
+       MSG_PEEK                         = 0x2
+       MSG_PROXY                        = 0x10
+       MSG_RST                          = 0x1000
+       MSG_SYN                          = 0x400
+       MSG_TRUNC                        = 0x20
+       MSG_TRYHARD                      = 0x4
+       MSG_WAITALL                      = 0x100
+       MSG_WAITFORONE                   = 0x10000
+       MS_ACTIVE                        = 0x40000000
+       MS_ASYNC                         = 0x1
+       MS_BIND                          = 0x1000
+       MS_DIRSYNC                       = 0x80
+       MS_INVALIDATE                    = 0x2
+       MS_I_VERSION                     = 0x800000
+       MS_KERNMOUNT                     = 0x400000
+       MS_MANDLOCK                      = 0x40
+       MS_MGC_MSK                       = 0xffff0000
+       MS_MGC_VAL                       = 0xc0ed0000
+       MS_MOVE                          = 0x2000
+       MS_NOATIME                       = 0x400
+       MS_NODEV                         = 0x4
+       MS_NODIRATIME                    = 0x800
+       MS_NOEXEC                        = 0x8
+       MS_NOSUID                        = 0x2
+       MS_NOUSER                        = -0x80000000
+       MS_POSIXACL                      = 0x10000
+       MS_PRIVATE                       = 0x40000
+       MS_RDONLY                        = 0x1
+       MS_REC                           = 0x4000
+       MS_RELATIME                      = 0x200000
+       MS_REMOUNT                       = 0x20
+       MS_RMT_MASK                      = 0x800051
+       MS_SHARED                        = 0x100000
+       MS_SILENT                        = 0x8000
+       MS_SLAVE                         = 0x80000
+       MS_STRICTATIME                   = 0x1000000
+       MS_SYNC                          = 0x4
+       MS_SYNCHRONOUS                   = 0x10
+       MS_UNBINDABLE                    = 0x20000
+       NAME_MAX                         = 0xff
+       NETLINK_ADD_MEMBERSHIP           = 0x1
+       NETLINK_AUDIT                    = 0x9
+       NETLINK_BROADCAST_ERROR          = 0x4
+       NETLINK_CONNECTOR                = 0xb
+       NETLINK_CRYPTO                   = 0x15
+       NETLINK_DNRTMSG                  = 0xe
+       NETLINK_DROP_MEMBERSHIP          = 0x2
+       NETLINK_ECRYPTFS                 = 0x13
+       NETLINK_FIB_LOOKUP               = 0xa
+       NETLINK_FIREWALL                 = 0x3
+       NETLINK_GENERIC                  = 0x10
+       NETLINK_INET_DIAG                = 0x4
+       NETLINK_IP6_FW                   = 0xd
+       NETLINK_ISCSI                    = 0x8
+       NETLINK_KOBJECT_UEVENT           = 0xf
+       NETLINK_NETFILTER                = 0xc
+       NETLINK_NFLOG                    = 0x5
+       NETLINK_NO_ENOBUFS               = 0x5
+       NETLINK_PKTINFO                  = 0x3
+       NETLINK_RDMA                     = 0x14
+       NETLINK_ROUTE                    = 0x0
+       NETLINK_RX_RING                  = 0x6
+       NETLINK_SCSITRANSPORT            = 0x12
+       NETLINK_SELINUX                  = 0x7
+       NETLINK_SOCK_DIAG                = 0x4
+       NETLINK_TX_RING                  = 0x7
+       NETLINK_UNUSED                   = 0x1
+       NETLINK_USERSOCK                 = 0x2
+       NETLINK_XFRM                     = 0x6
+       NL0                              = 0x0
+       NL1                              = 0x100
+       NLA_ALIGNTO                      = 0x4
+       NLA_F_NESTED                     = 0x8000
+       NLA_F_NET_BYTEORDER              = 0x4000
+       NLA_HDRLEN                       = 0x4
+       NLDLY                            = 0x100
+       NLMSG_ALIGNTO                    = 0x4
+       NLMSG_DONE                       = 0x3
+       NLMSG_ERROR                      = 0x2
+       NLMSG_HDRLEN                     = 0x10
+       NLMSG_MIN_TYPE                   = 0x10
+       NLMSG_NOOP                       = 0x1
+       NLMSG_OVERRUN                    = 0x4
+       NLM_F_ACK                        = 0x4
+       NLM_F_APPEND                     = 0x800
+       NLM_F_ATOMIC                     = 0x400
+       NLM_F_CREATE                     = 0x400
+       NLM_F_DUMP                       = 0x300
+       NLM_F_DUMP_INTR                  = 0x10
+       NLM_F_ECHO                       = 0x8
+       NLM_F_EXCL                       = 0x200
+       NLM_F_MATCH                      = 0x200
+       NLM_F_MULTI                      = 0x2
+       NLM_F_REPLACE                    = 0x100
+       NLM_F_REQUEST                    = 0x1
+       NLM_F_ROOT                       = 0x100
+       NOFLSH                           = 0x80
+       OCRNL                            = 0x8
+       OFDEL                            = 0x80
+       OFILL                            = 0x40
+       OLCUC                            = 0x2
+       ONLCR                            = 0x4
+       ONLRET                           = 0x20
+       ONOCR                            = 0x10
+       OPOST                            = 0x1
+       O_ACCMODE                        = 0x3
+       O_APPEND                         = 0x400
+       O_ASYNC                          = 0x2000
+       O_CLOEXEC                        = 0x80000
+       O_CREAT                          = 0x40
+       O_DIRECT                         = 0x10000
+       O_DIRECTORY                      = 0x4000
+       O_DSYNC                          = 0x1000
+       O_EXCL                           = 0x80
+       O_FSYNC                          = 0x101000
+       O_LARGEFILE                      = 0x0
+       O_NDELAY                         = 0x800
+       O_NOATIME                        = 0x40000
+       O_NOCTTY                         = 0x100
+       O_NOFOLLOW                       = 0x8000
+       O_NONBLOCK                       = 0x800
+       O_PATH                           = 0x200000
+       O_RDONLY                         = 0x0
+       O_RDWR                           = 0x2
+       O_RSYNC                          = 0x101000
+       O_SYNC                           = 0x101000
+       O_TMPFILE                        = 0x410000
+       O_TRUNC                          = 0x200
+       O_WRONLY                         = 0x1
+       PACKET_ADD_MEMBERSHIP            = 0x1
+       PACKET_AUXDATA                   = 0x8
+       PACKET_BROADCAST                 = 0x1
+       PACKET_COPY_THRESH               = 0x7
+       PACKET_DROP_MEMBERSHIP           = 0x2
+       PACKET_FANOUT                    = 0x12
+       PACKET_FANOUT_CPU                = 0x2
+       PACKET_FANOUT_FLAG_DEFRAG        = 0x8000
+       PACKET_FANOUT_FLAG_ROLLOVER      = 0x1000
+       PACKET_FANOUT_HASH               = 0x0
+       PACKET_FANOUT_LB                 = 0x1
+       PACKET_FANOUT_RND                = 0x4
+       PACKET_FANOUT_ROLLOVER           = 0x3
+       PACKET_FASTROUTE                 = 0x6
+       PACKET_HDRLEN                    = 0xb
+       PACKET_HOST                      = 0x0
+       PACKET_LOOPBACK                  = 0x5
+       PACKET_LOSS                      = 0xe
+       PACKET_MR_ALLMULTI               = 0x2
+       PACKET_MR_MULTICAST              = 0x0
+       PACKET_MR_PROMISC                = 0x1
+       PACKET_MR_UNICAST                = 0x3
+       PACKET_MULTICAST                 = 0x2
+       PACKET_ORIGDEV                   = 0x9
+       PACKET_OTHERHOST                 = 0x3
+       PACKET_OUTGOING                  = 0x4
+       PACKET_RECV_OUTPUT               = 0x3
+       PACKET_RESERVE                   = 0xc
+       PACKET_RX_RING                   = 0x5
+       PACKET_STATISTICS                = 0x6
+       PACKET_TIMESTAMP                 = 0x11
+       PACKET_TX_HAS_OFF                = 0x13
+       PACKET_TX_RING                   = 0xd
+       PACKET_TX_TIMESTAMP              = 0x10
+       PACKET_VERSION                   = 0xa
+       PACKET_VNET_HDR                  = 0xf
+       PARENB                           = 0x100
+       PARITY_CRC16_PR0                 = 0x2
+       PARITY_CRC16_PR0_CCITT           = 0x4
+       PARITY_CRC16_PR1                 = 0x3
+       PARITY_CRC16_PR1_CCITT           = 0x5
+       PARITY_CRC32_PR0_CCITT           = 0x6
+       PARITY_CRC32_PR1_CCITT           = 0x7
+       PARITY_DEFAULT                   = 0x0
+       PARITY_NONE                      = 0x1
+       PARMRK                           = 0x8
+       PARODD                           = 0x200
+       PENDIN                           = 0x4000
+       PRIO_PGRP                        = 0x1
+       PRIO_PROCESS                     = 0x0
+       PRIO_USER                        = 0x2
+       PROT_EXEC                        = 0x4
+       PROT_GROWSDOWN                   = 0x1000000
+       PROT_GROWSUP                     = 0x2000000
+       PROT_NONE                        = 0x0
+       PROT_READ                        = 0x1
+       PROT_WRITE                       = 0x2
+       PR_CAPBSET_DROP                  = 0x18
+       PR_CAPBSET_READ                  = 0x17
+       PR_ENDIAN_BIG                    = 0x0
+       PR_ENDIAN_LITTLE                 = 0x1
+       PR_ENDIAN_PPC_LITTLE             = 0x2
+       PR_FPEMU_NOPRINT                 = 0x1
+       PR_FPEMU_SIGFPE                  = 0x2
+       PR_FP_EXC_ASYNC                  = 0x2
+       PR_FP_EXC_DISABLED               = 0x0
+       PR_FP_EXC_DIV                    = 0x10000
+       PR_FP_EXC_INV                    = 0x100000
+       PR_FP_EXC_NONRECOV               = 0x1
+       PR_FP_EXC_OVF                    = 0x20000
+       PR_FP_EXC_PRECISE                = 0x3
+       PR_FP_EXC_RES                    = 0x80000
+       PR_FP_EXC_SW_ENABLE              = 0x80
+       PR_FP_EXC_UND                    = 0x40000
+       PR_GET_CHILD_SUBREAPER           = 0x25
+       PR_GET_DUMPABLE                  = 0x3
+       PR_GET_ENDIAN                    = 0x13
+       PR_GET_FPEMU                     = 0x9
+       PR_GET_FPEXC                     = 0xb
+       PR_GET_KEEPCAPS                  = 0x7
+       PR_GET_NAME                      = 0x10
+       PR_GET_NO_NEW_PRIVS              = 0x27
+       PR_GET_PDEATHSIG                 = 0x2
+       PR_GET_SECCOMP                   = 0x15
+       PR_GET_SECUREBITS                = 0x1b
+       PR_GET_TID_ADDRESS               = 0x28
+       PR_GET_TIMERSLACK                = 0x1e
+       PR_GET_TIMING                    = 0xd
+       PR_GET_TSC                       = 0x19
+       PR_GET_UNALIGN                   = 0x5
+       PR_MCE_KILL                      = 0x21
+       PR_MCE_KILL_CLEAR                = 0x0
+       PR_MCE_KILL_DEFAULT              = 0x2
+       PR_MCE_KILL_EARLY                = 0x1
+       PR_MCE_KILL_GET                  = 0x22
+       PR_MCE_KILL_LATE                 = 0x0
+       PR_MCE_KILL_SET                  = 0x1
+       PR_SET_CHILD_SUBREAPER           = 0x24
+       PR_SET_DUMPABLE                  = 0x4
+       PR_SET_ENDIAN                    = 0x14
+       PR_SET_FPEMU                     = 0xa
+       PR_SET_FPEXC                     = 0xc
+       PR_SET_KEEPCAPS                  = 0x8
+       PR_SET_MM                        = 0x23
+       PR_SET_MM_ARG_END                = 0x9
+       PR_SET_MM_ARG_START              = 0x8
+       PR_SET_MM_AUXV                   = 0xc
+       PR_SET_MM_BRK                    = 0x7
+       PR_SET_MM_END_CODE               = 0x2
+       PR_SET_MM_END_DATA               = 0x4
+       PR_SET_MM_ENV_END                = 0xb
+       PR_SET_MM_ENV_START              = 0xa
+       PR_SET_MM_EXE_FILE               = 0xd
+       PR_SET_MM_START_BRK              = 0x6
+       PR_SET_MM_START_CODE             = 0x1
+       PR_SET_MM_START_DATA             = 0x3
+       PR_SET_MM_START_STACK            = 0x5
+       PR_SET_NAME                      = 0xf
+       PR_SET_NO_NEW_PRIVS              = 0x26
+       PR_SET_PDEATHSIG                 = 0x1
+       PR_SET_PTRACER                   = 0x59616d61
+       PR_SET_PTRACER_ANY               = -0x1
+       PR_SET_SECCOMP                   = 0x16
+       PR_SET_SECUREBITS                = 0x1c
+       PR_SET_TIMERSLACK                = 0x1d
+       PR_SET_TIMING                    = 0xe
+       PR_SET_TSC                       = 0x1a
+       PR_SET_UNALIGN                   = 0x6
+       PR_TASK_PERF_EVENTS_DISABLE      = 0x1f
+       PR_TASK_PERF_EVENTS_ENABLE       = 0x20
+       PR_TIMING_STATISTICAL            = 0x0
+       PR_TIMING_TIMESTAMP              = 0x1
+       PR_TSC_ENABLE                    = 0x1
+       PR_TSC_SIGSEGV                   = 0x2
+       PR_UNALIGN_NOPRINT               = 0x1
+       PR_UNALIGN_SIGBUS                = 0x2
+       PTRACE_ATTACH                    = 0x10
+       PTRACE_CONT                      = 0x7
+       PTRACE_DETACH                    = 0x11
+       PTRACE_EVENT_CLONE               = 0x3
+       PTRACE_EVENT_EXEC                = 0x4
+       PTRACE_EVENT_EXIT                = 0x6
+       PTRACE_EVENT_FORK                = 0x1
+       PTRACE_EVENT_SECCOMP             = 0x7
+       PTRACE_EVENT_STOP                = 0x80
+       PTRACE_EVENT_VFORK               = 0x2
+       PTRACE_EVENT_VFORK_DONE          = 0x5
+       PTRACE_GETEVENTMSG               = 0x4201
+       PTRACE_GETREGS                   = 0xc
+       PTRACE_GETREGSET                 = 0x4204
+       PTRACE_GETSIGINFO                = 0x4202
+       PTRACE_GETSIGMASK                = 0x420a
+       PTRACE_INTERRUPT                 = 0x4207
+       PTRACE_KILL                      = 0x8
+       PTRACE_LISTEN                    = 0x4208
+       PTRACE_O_EXITKILL                = 0x100000
+       PTRACE_O_MASK                    = 0x1000ff
+       PTRACE_O_TRACECLONE              = 0x8
+       PTRACE_O_TRACEEXEC               = 0x10
+       PTRACE_O_TRACEEXIT               = 0x40
+       PTRACE_O_TRACEFORK               = 0x2
+       PTRACE_O_TRACESECCOMP            = 0x80
+       PTRACE_O_TRACESYSGOOD            = 0x1
+       PTRACE_O_TRACEVFORK              = 0x4
+       PTRACE_O_TRACEVFORKDONE          = 0x20
+       PTRACE_PEEKDATA                  = 0x2
+       PTRACE_PEEKSIGINFO               = 0x4209
+       PTRACE_PEEKSIGINFO_SHARED        = 0x1
+       PTRACE_PEEKTEXT                  = 0x1
+       PTRACE_PEEKUSR                   = 0x3
+       PTRACE_POKEDATA                  = 0x5
+       PTRACE_POKETEXT                  = 0x4
+       PTRACE_POKEUSR                   = 0x6
+       PTRACE_SEIZE                     = 0x4206
+       PTRACE_SETOPTIONS                = 0x4200
+       PTRACE_SETREGS                   = 0xd
+       PTRACE_SETREGSET                 = 0x4205
+       PTRACE_SETSIGINFO                = 0x4203
+       PTRACE_SETSIGMASK                = 0x420b
+       PTRACE_SINGLESTEP                = 0x9
+       PTRACE_SYSCALL                   = 0x18
+       PTRACE_TRACEME                   = 0x0
+       RLIMIT_AS                        = 0x9
+       RLIMIT_CORE                      = 0x4
+       RLIMIT_CPU                       = 0x0
+       RLIMIT_DATA                      = 0x2
+       RLIMIT_FSIZE                     = 0x1
+       RLIMIT_NOFILE                    = 0x7
+       RLIMIT_STACK                     = 0x3
+       RLIM_INFINITY                    = -0x1
+       RTAX_ADVMSS                      = 0x8
+       RTAX_CWND                        = 0x7
+       RTAX_FEATURES                    = 0xc
+       RTAX_FEATURE_ALLFRAG             = 0x8
+       RTAX_FEATURE_ECN                 = 0x1
+       RTAX_FEATURE_SACK                = 0x2
+       RTAX_FEATURE_TIMESTAMP           = 0x4
+       RTAX_HOPLIMIT                    = 0xa
+       RTAX_INITCWND                    = 0xb
+       RTAX_INITRWND                    = 0xe
+       RTAX_LOCK                        = 0x1
+       RTAX_MAX                         = 0xf
+       RTAX_MTU                         = 0x2
+       RTAX_QUICKACK                    = 0xf
+       RTAX_REORDERING                  = 0x9
+       RTAX_RTO_MIN                     = 0xd
+       RTAX_RTT                         = 0x4
+       RTAX_RTTVAR                      = 0x5
+       RTAX_SSTHRESH                    = 0x6
+       RTAX_UNSPEC                      = 0x0
+       RTAX_WINDOW                      = 0x3
+       RTA_ALIGNTO                      = 0x4
+       RTA_MAX                          = 0x11
+       RTCF_DIRECTSRC                   = 0x4000000
+       RTCF_DOREDIRECT                  = 0x1000000
+       RTCF_LOG                         = 0x2000000
+       RTCF_MASQ                        = 0x400000
+       RTCF_NAT                         = 0x800000
+       RTCF_VALVE                       = 0x200000
+       RTF_ADDRCLASSMASK                = 0xf8000000
+       RTF_ADDRCONF                     = 0x40000
+       RTF_ALLONLINK                    = 0x20000
+       RTF_BROADCAST                    = 0x10000000
+       RTF_CACHE                        = 0x1000000
+       RTF_DEFAULT                      = 0x10000
+       RTF_DYNAMIC                      = 0x10
+       RTF_FLOW                         = 0x2000000
+       RTF_GATEWAY                      = 0x2
+       RTF_HOST                         = 0x4
+       RTF_INTERFACE                    = 0x40000000
+       RTF_IRTT                         = 0x100
+       RTF_LINKRT                       = 0x100000
+       RTF_LOCAL                        = 0x80000000
+       RTF_MODIFIED                     = 0x20
+       RTF_MSS                          = 0x40
+       RTF_MTU                          = 0x40
+       RTF_MULTICAST                    = 0x20000000
+       RTF_NAT                          = 0x8000000
+       RTF_NOFORWARD                    = 0x1000
+       RTF_NONEXTHOP                    = 0x200000
+       RTF_NOPMTUDISC                   = 0x4000
+       RTF_POLICY                       = 0x4000000
+       RTF_REINSTATE                    = 0x8
+       RTF_REJECT                       = 0x200
+       RTF_STATIC                       = 0x400
+       RTF_THROW                        = 0x2000
+       RTF_UP                           = 0x1
+       RTF_WINDOW                       = 0x80
+       RTF_XRESOLVE                     = 0x800
+       RTM_BASE                         = 0x10
+       RTM_DELACTION                    = 0x31
+       RTM_DELADDR                      = 0x15
+       RTM_DELADDRLABEL                 = 0x49
+       RTM_DELLINK                      = 0x11
+       RTM_DELMDB                       = 0x55
+       RTM_DELNEIGH                     = 0x1d
+       RTM_DELQDISC                     = 0x25
+       RTM_DELROUTE                     = 0x19
+       RTM_DELRULE                      = 0x21
+       RTM_DELTCLASS                    = 0x29
+       RTM_DELTFILTER                   = 0x2d
+       RTM_F_CLONED                     = 0x200
+       RTM_F_EQUALIZE                   = 0x400
+       RTM_F_NOTIFY                     = 0x100
+       RTM_F_PREFIX                     = 0x800
+       RTM_GETACTION                    = 0x32
+       RTM_GETADDR                      = 0x16
+       RTM_GETADDRLABEL                 = 0x4a
+       RTM_GETANYCAST                   = 0x3e
+       RTM_GETDCB                       = 0x4e
+       RTM_GETLINK                      = 0x12
+       RTM_GETMDB                       = 0x56
+       RTM_GETMULTICAST                 = 0x3a
+       RTM_GETNEIGH                     = 0x1e
+       RTM_GETNEIGHTBL                  = 0x42
+       RTM_GETNETCONF                   = 0x52
+       RTM_GETQDISC                     = 0x26
+       RTM_GETROUTE                     = 0x1a
+       RTM_GETRULE                      = 0x22
+       RTM_GETTCLASS                    = 0x2a
+       RTM_GETTFILTER                   = 0x2e
+       RTM_MAX                          = 0x57
+       RTM_NEWACTION                    = 0x30
+       RTM_NEWADDR                      = 0x14
+       RTM_NEWADDRLABEL                 = 0x48
+       RTM_NEWLINK                      = 0x10
+       RTM_NEWMDB                       = 0x54
+       RTM_NEWNDUSEROPT                 = 0x44
+       RTM_NEWNEIGH                     = 0x1c
+       RTM_NEWNEIGHTBL                  = 0x40
+       RTM_NEWNETCONF                   = 0x50
+       RTM_NEWPREFIX                    = 0x34
+       RTM_NEWQDISC                     = 0x24
+       RTM_NEWROUTE                     = 0x18
+       RTM_NEWRULE                      = 0x20
+       RTM_NEWTCLASS                    = 0x28
+       RTM_NEWTFILTER                   = 0x2c
+       RTM_NR_FAMILIES                  = 0x12
+       RTM_NR_MSGTYPES                  = 0x48
+       RTM_SETDCB                       = 0x4f
+       RTM_SETLINK                      = 0x13
+       RTM_SETNEIGHTBL                  = 0x43
+       RTNH_ALIGNTO                     = 0x4
+       RTNH_F_DEAD                      = 0x1
+       RTNH_F_ONLINK                    = 0x4
+       RTNH_F_PERVASIVE                 = 0x2
+       RTN_MAX                          = 0xb
+       RTPROT_BIRD                      = 0xc
+       RTPROT_BOOT                      = 0x3
+       RTPROT_DHCP                      = 0x10
+       RTPROT_DNROUTED                  = 0xd
+       RTPROT_GATED                     = 0x8
+       RTPROT_KERNEL                    = 0x2
+       RTPROT_MROUTED                   = 0x11
+       RTPROT_MRT                       = 0xa
+       RTPROT_NTK                       = 0xf
+       RTPROT_RA                        = 0x9
+       RTPROT_REDIRECT                  = 0x1
+       RTPROT_STATIC                    = 0x4
+       RTPROT_UNSPEC                    = 0x0
+       RTPROT_XORP                      = 0xe
+       RTPROT_ZEBRA                     = 0xb
+       RT_CLASS_DEFAULT                 = 0xfd
+       RT_CLASS_LOCAL                   = 0xff
+       RT_CLASS_MAIN                    = 0xfe
+       RT_CLASS_MAX                     = 0xff
+       RT_CLASS_UNSPEC                  = 0x0
+       RUSAGE_CHILDREN                  = -0x1
+       RUSAGE_SELF                      = 0x0
+       RUSAGE_THREAD                    = 0x1
+       SCM_CREDENTIALS                  = 0x2
+       SCM_RIGHTS                       = 0x1
+       SCM_TIMESTAMP                    = 0x1d
+       SCM_TIMESTAMPING                 = 0x25
+       SCM_TIMESTAMPNS                  = 0x23
+       SCM_WIFI_STATUS                  = 0x29
+       SHUT_RD                          = 0x0
+       SHUT_RDWR                        = 0x2
+       SHUT_WR                          = 0x1
+       SIOCADDDLCI                      = 0x8980
+       SIOCADDMULTI                     = 0x8931
+       SIOCADDRT                        = 0x890b
+       SIOCATMARK                       = 0x8905
+       SIOCDARP                         = 0x8953
+       SIOCDELDLCI                      = 0x8981
+       SIOCDELMULTI                     = 0x8932
+       SIOCDELRT                        = 0x890c
+       SIOCDEVPRIVATE                   = 0x89f0
+       SIOCDIFADDR                      = 0x8936
+       SIOCDRARP                        = 0x8960
+       SIOCGARP                         = 0x8954
+       SIOCGIFADDR                      = 0x8915
+       SIOCGIFBR                        = 0x8940
+       SIOCGIFBRDADDR                   = 0x8919
+       SIOCGIFCONF                      = 0x8912
+       SIOCGIFCOUNT                     = 0x8938
+       SIOCGIFDSTADDR                   = 0x8917
+       SIOCGIFENCAP                     = 0x8925
+       SIOCGIFFLAGS                     = 0x8913
+       SIOCGIFHWADDR                    = 0x8927
+       SIOCGIFINDEX                     = 0x8933
+       SIOCGIFMAP                       = 0x8970
+       SIOCGIFMEM                       = 0x891f
+       SIOCGIFMETRIC                    = 0x891d
+       SIOCGIFMTU                       = 0x8921
+       SIOCGIFNAME                      = 0x8910
+       SIOCGIFNETMASK                   = 0x891b
+       SIOCGIFPFLAGS                    = 0x8935
+       SIOCGIFSLAVE                     = 0x8929
+       SIOCGIFTXQLEN                    = 0x8942
+       SIOCGPGRP                        = 0x8904
+       SIOCGRARP                        = 0x8961
+       SIOCGSTAMP                       = 0x8906
+       SIOCGSTAMPNS                     = 0x8907
+       SIOCPROTOPRIVATE                 = 0x89e0
+       SIOCRTMSG                        = 0x890d
+       SIOCSARP                         = 0x8955
+       SIOCSIFADDR                      = 0x8916
+       SIOCSIFBR                        = 0x8941
+       SIOCSIFBRDADDR                   = 0x891a
+       SIOCSIFDSTADDR                   = 0x8918
+       SIOCSIFENCAP                     = 0x8926
+       SIOCSIFFLAGS                     = 0x8914
+       SIOCSIFHWADDR                    = 0x8924
+       SIOCSIFHWBROADCAST               = 0x8937
+       SIOCSIFLINK                      = 0x8911
+       SIOCSIFMAP                       = 0x8971
+       SIOCSIFMEM                       = 0x8920
+       SIOCSIFMETRIC                    = 0x891e
+       SIOCSIFMTU                       = 0x8922
+       SIOCSIFNAME                      = 0x8923
+       SIOCSIFNETMASK                   = 0x891c
+       SIOCSIFPFLAGS                    = 0x8934
+       SIOCSIFSLAVE                     = 0x8930
+       SIOCSIFTXQLEN                    = 0x8943
+       SIOCSPGRP                        = 0x8902
+       SIOCSRARP                        = 0x8962
+       SOCK_CLOEXEC                     = 0x80000
+       SOCK_DCCP                        = 0x6
+       SOCK_DGRAM                       = 0x2
+       SOCK_NONBLOCK                    = 0x800
+       SOCK_PACKET                      = 0xa
+       SOCK_RAW                         = 0x3
+       SOCK_RDM                         = 0x4
+       SOCK_SEQPACKET                   = 0x5
+       SOCK_STREAM                      = 0x1
+       SOL_AAL                          = 0x109
+       SOL_ATM                          = 0x108
+       SOL_DECNET                       = 0x105
+       SOL_ICMPV6                       = 0x3a
+       SOL_IP                           = 0x0
+       SOL_IPV6                         = 0x29
+       SOL_IRDA                         = 0x10a
+       SOL_PACKET                       = 0x107
+       SOL_RAW                          = 0xff
+       SOL_SOCKET                       = 0x1
+       SOL_TCP                          = 0x6
+       SOL_X25                          = 0x106
+       SOMAXCONN                        = 0x80
+       SO_ACCEPTCONN                    = 0x1e
+       SO_ATTACH_FILTER                 = 0x1a
+       SO_BINDTODEVICE                  = 0x19
+       SO_BROADCAST                     = 0x6
+       SO_BSDCOMPAT                     = 0xe
+       SO_BUSY_POLL                     = 0x2e
+       SO_DEBUG                         = 0x1
+       SO_DETACH_FILTER                 = 0x1b
+       SO_DOMAIN                        = 0x27
+       SO_DONTROUTE                     = 0x5
+       SO_ERROR                         = 0x4
+       SO_GET_FILTER                    = 0x1a
+       SO_KEEPALIVE                     = 0x9
+       SO_LINGER                        = 0xd
+       SO_LOCK_FILTER                   = 0x2c
+       SO_MARK                          = 0x24
+       SO_MAX_PACING_RATE               = 0x2f
+       SO_NOFCS                         = 0x2b
+       SO_NO_CHECK                      = 0xb
+       SO_OOBINLINE                     = 0xa
+       SO_PASSCRED                      = 0x10
+       SO_PASSSEC                       = 0x22
+       SO_PEEK_OFF                      = 0x2a
+       SO_PEERCRED                      = 0x11
+       SO_PEERNAME                      = 0x1c
+       SO_PEERSEC                       = 0x1f
+       SO_PRIORITY                      = 0xc
+       SO_PROTOCOL                      = 0x26
+       SO_RCVBUF                        = 0x8
+       SO_RCVBUFFORCE                   = 0x21
+       SO_RCVLOWAT                      = 0x12
+       SO_RCVTIMEO                      = 0x14
+       SO_REUSEADDR                     = 0x2
+       SO_REUSEPORT                     = 0xf
+       SO_RXQ_OVFL                      = 0x28
+       SO_SECURITY_AUTHENTICATION       = 0x16
+       SO_SECURITY_ENCRYPTION_NETWORK   = 0x18
+       SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
+       SO_SELECT_ERR_QUEUE              = 0x2d
+       SO_SNDBUF                        = 0x7
+       SO_SNDBUFFORCE                   = 0x20
+       SO_SNDLOWAT                      = 0x13
+       SO_SNDTIMEO                      = 0x15
+       SO_TIMESTAMP                     = 0x1d
+       SO_TIMESTAMPING                  = 0x25
+       SO_TIMESTAMPNS                   = 0x23
+       SO_TYPE                          = 0x3
+       SO_WIFI_STATUS                   = 0x29
+       S_BLKSIZE                        = 0x200
+       S_IEXEC                          = 0x40
+       S_IFBLK                          = 0x6000
+       S_IFCHR                          = 0x2000
+       S_IFDIR                          = 0x4000
+       S_IFIFO                          = 0x1000
+       S_IFLNK                          = 0xa000
+       S_IFMT                           = 0xf000
+       S_IFREG                          = 0x8000
+       S_IFSOCK                         = 0xc000
+       S_IREAD                          = 0x100
+       S_IRGRP                          = 0x20
+       S_IROTH                          = 0x4
+       S_IRUSR                          = 0x100
+       S_IRWXG                          = 0x38
+       S_IRWXO                          = 0x7
+       S_IRWXU                          = 0x1c0
+       S_ISGID                          = 0x400
+       S_ISUID                          = 0x800
+       S_ISVTX                          = 0x200
+       S_IWGRP                          = 0x10
+       S_IWOTH                          = 0x2
+       S_IWRITE                         = 0x80
+       S_IWUSR                          = 0x80
+       S_IXGRP                          = 0x8
+       S_IXOTH                          = 0x1
+       S_IXUSR                          = 0x40
+       TAB0                             = 0x0
+       TAB1                             = 0x800
+       TAB2                             = 0x1000
+       TAB3                             = 0x1800
+       TABDLY                           = 0x1800
+       TCFLSH                           = 0x540b
+       TCGETA                           = 0x5405
+       TCGETS                           = 0x5401
+       TCGETS2                          = 0x802c542a
+       TCGETX                           = 0x5432
+       TCIFLUSH                         = 0x0
+       TCIOFF                           = 0x2
+       TCIOFLUSH                        = 0x2
+       TCION                            = 0x3
+       TCOFLUSH                         = 0x1
+       TCOOFF                           = 0x0
+       TCOON                            = 0x1
+       TCP_CONGESTION                   = 0xd
+       TCP_COOKIE_IN_ALWAYS             = 0x1
+       TCP_COOKIE_MAX                   = 0x10
+       TCP_COOKIE_MIN                   = 0x8
+       TCP_COOKIE_OUT_NEVER             = 0x2
+       TCP_COOKIE_PAIR_SIZE             = 0x20
+       TCP_COOKIE_TRANSACTIONS          = 0xf
+       TCP_CORK                         = 0x3
+       TCP_DEFER_ACCEPT                 = 0x9
+       TCP_FASTOPEN                     = 0x17
+       TCP_INFO                         = 0xb
+       TCP_KEEPCNT                      = 0x6
+       TCP_KEEPIDLE                     = 0x4
+       TCP_KEEPINTVL                    = 0x5
+       TCP_LINGER2                      = 0x8
+       TCP_MAXSEG                       = 0x2
+       TCP_MAXWIN                       = 0xffff
+       TCP_MAX_WINSHIFT                 = 0xe
+       TCP_MD5SIG                       = 0xe
+       TCP_MD5SIG_MAXKEYLEN             = 0x50
+       TCP_MSS                          = 0x200
+       TCP_MSS_DEFAULT                  = 0x218
+       TCP_MSS_DESIRED                  = 0x4c4
+       TCP_NODELAY                      = 0x1
+       TCP_QUEUE_SEQ                    = 0x15
+       TCP_QUICKACK                     = 0xc
+       TCP_REPAIR                       = 0x13
+       TCP_REPAIR_OPTIONS               = 0x16
+       TCP_REPAIR_QUEUE                 = 0x14
+       TCP_SYNCNT                       = 0x7
+       TCP_S_DATA_IN                    = 0x4
+       TCP_S_DATA_OUT                   = 0x8
+       TCP_THIN_DUPACK                  = 0x11
+       TCP_THIN_LINEAR_TIMEOUTS         = 0x10
+       TCP_TIMESTAMP                    = 0x18
+       TCP_USER_TIMEOUT                 = 0x12
+       TCP_WINDOW_CLAMP                 = 0xa
+       TCSAFLUSH                        = 0x2
+       TCSBRK                           = 0x5409
+       TCSBRKP                          = 0x5425
+       TCSETA                           = 0x5406
+       TCSETAF                          = 0x5408
+       TCSETAW                          = 0x5407
+       TCSETS                           = 0x5402
+       TCSETS2                          = 0x402c542b
+       TCSETSF                          = 0x5404
+       TCSETSF2                         = 0x402c542d
+       TCSETSW                          = 0x5403
+       TCSETSW2                         = 0x402c542c
+       TCSETX                           = 0x5433
+       TCSETXF                          = 0x5434
+       TCSETXW                          = 0x5435
+       TCXONC                           = 0x540a
+       TIOCCBRK                         = 0x5428
+       TIOCCONS                         = 0x541d
+       TIOCEXCL                         = 0x540c
+       TIOCGDEV                         = 0x80045432
+       TIOCGETD                         = 0x5424
+       TIOCGEXCL                        = 0x80045440
+       TIOCGICOUNT                      = 0x545d
+       TIOCGLCKTRMIOS                   = 0x5456
+       TIOCGPGRP                        = 0x540f
+       TIOCGPKT                         = 0x80045438
+       TIOCGPTLCK                       = 0x80045439
+       TIOCGPTN                         = 0x80045430
+       TIOCGRS485                       = 0x542e
+       TIOCGSERIAL                      = 0x541e
+       TIOCGSID                         = 0x5429
+       TIOCGSOFTCAR                     = 0x5419
+       TIOCGWINSZ                       = 0x5413
+       TIOCINQ                          = 0x541b
+       TIOCLINUX                        = 0x541c
+       TIOCMBIC                         = 0x5417
+       TIOCMBIS                         = 0x5416
+       TIOCMGET                         = 0x5415
+       TIOCMIWAIT                       = 0x545c
+       TIOCMSET                         = 0x5418
+       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                        = 0x5422
+       TIOCNXCL                         = 0x540d
+       TIOCOUTQ                         = 0x5411
+       TIOCPKT                          = 0x5420
+       TIOCPKT_DATA                     = 0x0
+       TIOCPKT_DOSTOP                   = 0x20
+       TIOCPKT_FLUSHREAD                = 0x1
+       TIOCPKT_FLUSHWRITE               = 0x2
+       TIOCPKT_IOCTL                    = 0x40
+       TIOCPKT_NOSTOP                   = 0x10
+       TIOCPKT_START                    = 0x8
+       TIOCPKT_STOP                     = 0x4
+       TIOCSBRK                         = 0x5427
+       TIOCSCTTY                        = 0x540e
+       TIOCSERCONFIG                    = 0x5453
+       TIOCSERGETLSR                    = 0x5459
+       TIOCSERGETMULTI                  = 0x545a
+       TIOCSERGSTRUCT                   = 0x5458
+       TIOCSERGWILD                     = 0x5454
+       TIOCSERSETMULTI                  = 0x545b
+       TIOCSERSWILD                     = 0x5455
+       TIOCSER_TEMT                     = 0x1
+       TIOCSETD                         = 0x5423
+       TIOCSIG                          = 0x40045436
+       TIOCSLCKTRMIOS                   = 0x5457
+       TIOCSPGRP                        = 0x5410
+       TIOCSPTLCK                       = 0x40045431
+       TIOCSRS485                       = 0x542f
+       TIOCSSERIAL                      = 0x541f
+       TIOCSSOFTCAR                     = 0x541a
+       TIOCSTI                          = 0x5412
+       TIOCSWINSZ                       = 0x5414
+       TIOCVHANGUP                      = 0x5437
+       TOSTOP                           = 0x100
+       TUNATTACHFILTER                  = 0x401054d5
+       TUNDETACHFILTER                  = 0x401054d6
+       TUNGETFEATURES                   = 0x800454cf
+       TUNGETFILTER                     = 0x801054db
+       TUNGETIFF                        = 0x800454d2
+       TUNGETSNDBUF                     = 0x800454d3
+       TUNGETVNETHDRSZ                  = 0x800454d7
+       TUNSETDEBUG                      = 0x400454c9
+       TUNSETGROUP                      = 0x400454ce
+       TUNSETIFF                        = 0x400454ca
+       TUNSETIFINDEX                    = 0x400454da
+       TUNSETLINK                       = 0x400454cd
+       TUNSETNOCSUM                     = 0x400454c8
+       TUNSETOFFLOAD                    = 0x400454d0
+       TUNSETOWNER                      = 0x400454cc
+       TUNSETPERSIST                    = 0x400454cb
+       TUNSETQUEUE                      = 0x400454d9
+       TUNSETSNDBUF                     = 0x400454d4
+       TUNSETTXFILTER                   = 0x400454d1
+       TUNSETVNETHDRSZ                  = 0x400454d8
+       VDISCARD                         = 0xd
+       VEOF                             = 0x4
+       VEOL                             = 0xb
+       VEOL2                            = 0x10
+       VERASE                           = 0x2
+       VINTR                            = 0x0
+       VKILL                            = 0x3
+       VLNEXT                           = 0xf
+       VMIN                             = 0x6
+       VQUIT                            = 0x1
+       VREPRINT                         = 0xc
+       VSTART                           = 0x8
+       VSTOP                            = 0x9
+       VSUSP                            = 0xa
+       VSWTC                            = 0x7
+       VT0                              = 0x0
+       VT1                              = 0x4000
+       VTDLY                            = 0x4000
+       VTIME                            = 0x5
+       VWERASE                          = 0xe
+       WALL                             = 0x40000000
+       WCLONE                           = 0x80000000
+       WCONTINUED                       = 0x8
+       WEXITED                          = 0x4
+       WNOHANG                          = 0x1
+       WNOTHREAD                        = 0x20000000
+       WNOWAIT                          = 0x1000000
+       WORDSIZE                         = 0x40
+       WSTOPPED                         = 0x2
+       WUNTRACED                        = 0x2
+       XCASE                            = 0x4
+       XTABS                            = 0x1800
+)
+
+// Errors
+const (
+       E2BIG           = syscall.Errno(0x7)
+       EACCES          = syscall.Errno(0xd)
+       EADDRINUSE      = syscall.Errno(0x62)
+       EADDRNOTAVAIL   = syscall.Errno(0x63)
+       EADV            = syscall.Errno(0x44)
+       EAFNOSUPPORT    = syscall.Errno(0x61)
+       EAGAIN          = syscall.Errno(0xb)
+       EALREADY        = syscall.Errno(0x72)
+       EBADE           = syscall.Errno(0x34)
+       EBADF           = syscall.Errno(0x9)
+       EBADFD          = syscall.Errno(0x4d)
+       EBADMSG         = syscall.Errno(0x4a)
+       EBADR           = syscall.Errno(0x35)
+       EBADRQC         = syscall.Errno(0x38)
+       EBADSLT         = syscall.Errno(0x39)
+       EBFONT          = syscall.Errno(0x3b)
+       EBUSY           = syscall.Errno(0x10)
+       ECANCELED       = syscall.Errno(0x7d)
+       ECHILD          = syscall.Errno(0xa)
+       ECHRNG          = syscall.Errno(0x2c)
+       ECOMM           = syscall.Errno(0x46)
+       ECONNABORTED    = syscall.Errno(0x67)
+       ECONNREFUSED    = syscall.Errno(0x6f)
+       ECONNRESET      = syscall.Errno(0x68)
+       EDEADLK         = syscall.Errno(0x23)
+       EDEADLOCK       = syscall.Errno(0x23)
+       EDESTADDRREQ    = syscall.Errno(0x59)
+       EDOM            = syscall.Errno(0x21)
+       EDOTDOT         = syscall.Errno(0x49)
+       EDQUOT          = syscall.Errno(0x7a)
+       EEXIST          = syscall.Errno(0x11)
+       EFAULT          = syscall.Errno(0xe)
+       EFBIG           = syscall.Errno(0x1b)
+       EHOSTDOWN       = syscall.Errno(0x70)
+       EHOSTUNREACH    = syscall.Errno(0x71)
+       EHWPOISON       = syscall.Errno(0x85)
+       EIDRM           = syscall.Errno(0x2b)
+       EILSEQ          = syscall.Errno(0x54)
+       EINPROGRESS     = syscall.Errno(0x73)
+       EINTR           = syscall.Errno(0x4)
+       EINVAL          = syscall.Errno(0x16)
+       EIO             = syscall.Errno(0x5)
+       EISCONN         = syscall.Errno(0x6a)
+       EISDIR          = syscall.Errno(0x15)
+       EISNAM          = syscall.Errno(0x78)
+       EKEYEXPIRED     = syscall.Errno(0x7f)
+       EKEYREJECTED    = syscall.Errno(0x81)
+       EKEYREVOKED     = syscall.Errno(0x80)
+       EL2HLT          = syscall.Errno(0x33)
+       EL2NSYNC        = syscall.Errno(0x2d)
+       EL3HLT          = syscall.Errno(0x2e)
+       EL3RST          = syscall.Errno(0x2f)
+       ELIBACC         = syscall.Errno(0x4f)
+       ELIBBAD         = syscall.Errno(0x50)
+       ELIBEXEC        = syscall.Errno(0x53)
+       ELIBMAX         = syscall.Errno(0x52)
+       ELIBSCN         = syscall.Errno(0x51)
+       ELNRNG          = syscall.Errno(0x30)
+       ELOOP           = syscall.Errno(0x28)
+       EMEDIUMTYPE     = syscall.Errno(0x7c)
+       EMFILE          = syscall.Errno(0x18)
+       EMLINK          = syscall.Errno(0x1f)
+       EMSGSIZE        = syscall.Errno(0x5a)
+       EMULTIHOP       = syscall.Errno(0x48)
+       ENAMETOOLONG    = syscall.Errno(0x24)
+       ENAVAIL         = syscall.Errno(0x77)
+       ENETDOWN        = syscall.Errno(0x64)
+       ENETRESET       = syscall.Errno(0x66)
+       ENETUNREACH     = syscall.Errno(0x65)
+       ENFILE          = syscall.Errno(0x17)
+       ENOANO          = syscall.Errno(0x37)
+       ENOBUFS         = syscall.Errno(0x69)
+       ENOCSI          = syscall.Errno(0x32)
+       ENODATA         = syscall.Errno(0x3d)
+       ENODEV          = syscall.Errno(0x13)
+       ENOENT          = syscall.Errno(0x2)
+       ENOEXEC         = syscall.Errno(0x8)
+       ENOKEY          = syscall.Errno(0x7e)
+       ENOLCK          = syscall.Errno(0x25)
+       ENOLINK         = syscall.Errno(0x43)
+       ENOMEDIUM       = syscall.Errno(0x7b)
+       ENOMEM          = syscall.Errno(0xc)
+       ENOMSG          = syscall.Errno(0x2a)
+       ENONET          = syscall.Errno(0x40)
+       ENOPKG          = syscall.Errno(0x41)
+       ENOPROTOOPT     = syscall.Errno(0x5c)
+       ENOSPC          = syscall.Errno(0x1c)
+       ENOSR           = syscall.Errno(0x3f)
+       ENOSTR          = syscall.Errno(0x3c)
+       ENOSYS          = syscall.Errno(0x26)
+       ENOTBLK         = syscall.Errno(0xf)
+       ENOTCONN        = syscall.Errno(0x6b)
+       ENOTDIR         = syscall.Errno(0x14)
+       ENOTEMPTY       = syscall.Errno(0x27)
+       ENOTNAM         = syscall.Errno(0x76)
+       ENOTRECOVERABLE = syscall.Errno(0x83)
+       ENOTSOCK        = syscall.Errno(0x58)
+       ENOTSUP         = syscall.Errno(0x5f)
+       ENOTTY          = syscall.Errno(0x19)
+       ENOTUNIQ        = syscall.Errno(0x4c)
+       ENXIO           = syscall.Errno(0x6)
+       EOPNOTSUPP      = syscall.Errno(0x5f)
+       EOVERFLOW       = syscall.Errno(0x4b)
+       EOWNERDEAD      = syscall.Errno(0x82)
+       EPERM           = syscall.Errno(0x1)
+       EPFNOSUPPORT    = syscall.Errno(0x60)
+       EPIPE           = syscall.Errno(0x20)
+       EPROTO          = syscall.Errno(0x47)
+       EPROTONOSUPPORT = syscall.Errno(0x5d)
+       EPROTOTYPE      = syscall.Errno(0x5b)
+       ERANGE          = syscall.Errno(0x22)
+       EREMCHG         = syscall.Errno(0x4e)
+       EREMOTE         = syscall.Errno(0x42)
+       EREMOTEIO       = syscall.Errno(0x79)
+       ERESTART        = syscall.Errno(0x55)
+       ERFKILL         = syscall.Errno(0x84)
+       EROFS           = syscall.Errno(0x1e)
+       ESHUTDOWN       = syscall.Errno(0x6c)
+       ESOCKTNOSUPPORT = syscall.Errno(0x5e)
+       ESPIPE          = syscall.Errno(0x1d)
+       ESRCH           = syscall.Errno(0x3)
+       ESRMNT          = syscall.Errno(0x45)
+       ESTALE          = syscall.Errno(0x74)
+       ESTRPIPE        = syscall.Errno(0x56)
+       ETIME           = syscall.Errno(0x3e)
+       ETIMEDOUT       = syscall.Errno(0x6e)
+       ETOOMANYREFS    = syscall.Errno(0x6d)
+       ETXTBSY         = syscall.Errno(0x1a)
+       EUCLEAN         = syscall.Errno(0x75)
+       EUNATCH         = syscall.Errno(0x31)
+       EUSERS          = syscall.Errno(0x57)
+       EWOULDBLOCK     = syscall.Errno(0xb)
+       EXDEV           = syscall.Errno(0x12)
+       EXFULL          = syscall.Errno(0x36)
+)
+
+// Signals
+const (
+       SIGABRT   = syscall.Signal(0x6)
+       SIGALRM   = syscall.Signal(0xe)
+       SIGBUS    = syscall.Signal(0x7)
+       SIGCHLD   = syscall.Signal(0x11)
+       SIGCLD    = syscall.Signal(0x11)
+       SIGCONT   = syscall.Signal(0x12)
+       SIGFPE    = syscall.Signal(0x8)
+       SIGHUP    = syscall.Signal(0x1)
+       SIGILL    = syscall.Signal(0x4)
+       SIGINT    = syscall.Signal(0x2)
+       SIGIO     = syscall.Signal(0x1d)
+       SIGIOT    = syscall.Signal(0x6)
+       SIGKILL   = syscall.Signal(0x9)
+       SIGPIPE   = syscall.Signal(0xd)
+       SIGPOLL   = syscall.Signal(0x1d)
+       SIGPROF   = syscall.Signal(0x1b)
+       SIGPWR    = syscall.Signal(0x1e)
+       SIGQUIT   = syscall.Signal(0x3)
+       SIGSEGV   = syscall.Signal(0xb)
+       SIGSTKFLT = syscall.Signal(0x10)
+       SIGSTOP   = syscall.Signal(0x13)
+       SIGSYS    = syscall.Signal(0x1f)
+       SIGTERM   = syscall.Signal(0xf)
+       SIGTRAP   = syscall.Signal(0x5)
+       SIGTSTP   = syscall.Signal(0x14)
+       SIGTTIN   = syscall.Signal(0x15)
+       SIGTTOU   = syscall.Signal(0x16)
+       SIGUNUSED = syscall.Signal(0x1f)
+       SIGURG    = syscall.Signal(0x17)
+       SIGUSR1   = syscall.Signal(0xa)
+       SIGUSR2   = syscall.Signal(0xc)
+       SIGVTALRM = syscall.Signal(0x1a)
+       SIGWINCH  = syscall.Signal(0x1c)
+       SIGXCPU   = syscall.Signal(0x18)
+       SIGXFSZ   = syscall.Signal(0x19)
+)
+
+// 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:   "no such device or address",
+       7:   "argument list too long",
+       8:   "exec format error",
+       9:   "bad file descriptor",
+       10:  "no child processes",
+       11:  "resource temporarily unavailable",
+       12:  "cannot allocate memory",
+       13:  "permission denied",
+       14:  "bad address",
+       15:  "block device required",
+       16:  "device or resource busy",
+       17:  "file exists",
+       18:  "invalid cross-device link",
+       19:  "no such 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:  "numerical result out of range",
+       35:  "resource deadlock avoided",
+       36:  "file name too long",
+       37:  "no locks available",
+       38:  "function not implemented",
+       39:  "directory not empty",
+       40:  "too many levels of symbolic links",
+       42:  "no message of desired type",
+       43:  "identifier removed",
+       44:  "channel number out of range",
+       45:  "level 2 not synchronized",
+       46:  "level 3 halted",
+       47:  "level 3 reset",
+       48:  "link number out of range",
+       49:  "protocol driver not attached",
+       50:  "no CSI structure available",
+       51:  "level 2 halted",
+       52:  "invalid exchange",
+       53:  "invalid request descriptor",
+       54:  "exchange full",
+       55:  "no anode",
+       56:  "invalid request code",
+       57:  "invalid slot",
+       59:  "bad font file format",
+       60:  "device not a stream",
+       61:  "no data available",
+       62:  "timer expired",
+       63:  "out of streams resources",
+       64:  "machine is not on the network",
+       65:  "package not installed",
+       66:  "object is remote",
+       67:  "link has been severed",
+       68:  "advertise error",
+       69:  "srmount error",
+       70:  "communication error on send",
+       71:  "protocol error",
+       72:  "multihop attempted",
+       73:  "RFS specific error",
+       74:  "bad message",
+       75:  "value too large for defined data type",
+       76:  "name not unique on network",
+       77:  "file descriptor in bad state",
+       78:  "remote address changed",
+       79:  "can not access a needed shared library",
+       80:  "accessing a corrupted shared library",
+       81:  ".lib section in a.out corrupted",
+       82:  "attempting to link in too many shared libraries",
+       83:  "cannot exec a shared library directly",
+       84:  "invalid or incomplete multibyte or wide character",
+       85:  "interrupted system call should be restarted",
+       86:  "streams pipe error",
+       87:  "too many users",
+       88:  "socket operation on non-socket",
+       89:  "destination address required",
+       90:  "message too long",
+       91:  "protocol wrong type for socket",
+       92:  "protocol not available",
+       93:  "protocol not supported",
+       94:  "socket type not supported",
+       95:  "operation not supported",
+       96:  "protocol family not supported",
+       97:  "address family not supported by protocol",
+       98:  "address already in use",
+       99:  "cannot assign requested address",
+       100: "network is down",
+       101: "network is unreachable",
+       102: "network dropped connection on reset",
+       103: "software caused connection abort",
+       104: "connection reset by peer",
+       105: "no buffer space available",
+       106: "transport endpoint is already connected",
+       107: "transport endpoint is not connected",
+       108: "cannot send after transport endpoint shutdown",
+       109: "too many references: cannot splice",
+       110: "connection timed out",
+       111: "connection refused",
+       112: "host is down",
+       113: "no route to host",
+       114: "operation already in progress",
+       115: "operation now in progress",
+       116: "stale file handle",
+       117: "structure needs cleaning",
+       118: "not a XENIX named type file",
+       119: "no XENIX semaphores available",
+       120: "is a named type file",
+       121: "remote I/O error",
+       122: "disk quota exceeded",
+       123: "no medium found",
+       124: "wrong medium type",
+       125: "operation canceled",
+       126: "required key not available",
+       127: "key has expired",
+       128: "key has been revoked",
+       129: "key was rejected by service",
+       130: "owner died",
+       131: "state not recoverable",
+       132: "operation not possible due to RF-kill",
+       133: "memory page has hardware error",
+}
+
+// Signal table
+var signals = [...]string{
+       1:  "hangup",
+       2:  "interrupt",
+       3:  "quit",
+       4:  "illegal instruction",
+       5:  "trace/breakpoint trap",
+       6:  "aborted",
+       7:  "bus error",
+       8:  "floating point exception",
+       9:  "killed",
+       10: "user defined signal 1",
+       11: "segmentation fault",
+       12: "user defined signal 2",
+       13: "broken pipe",
+       14: "alarm clock",
+       15: "terminated",
+       16: "stack fault",
+       17: "child exited",
+       18: "continued",
+       19: "stopped (signal)",
+       20: "stopped",
+       21: "stopped (tty input)",
+       22: "stopped (tty output)",
+       23: "urgent I/O condition",
+       24: "CPU time limit exceeded",
+       25: "file size limit exceeded",
+       26: "virtual timer expired",
+       27: "profiling timer expired",
+       28: "window changed",
+       29: "I/O possible",
+       30: "power failure",
+       31: "bad system call",
+}
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go
new file mode 100644 (file)
index 0000000..98056fe
--- /dev/null
@@ -0,0 +1,1916 @@
+// mkerrors.sh
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build mips64,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- _const.go
+
+package unix
+
+import "syscall"
+
+const (
+       AF_ALG                           = 0x26
+       AF_APPLETALK                     = 0x5
+       AF_ASH                           = 0x12
+       AF_ATMPVC                        = 0x8
+       AF_ATMSVC                        = 0x14
+       AF_AX25                          = 0x3
+       AF_BLUETOOTH                     = 0x1f
+       AF_BRIDGE                        = 0x7
+       AF_CAIF                          = 0x25
+       AF_CAN                           = 0x1d
+       AF_DECnet                        = 0xc
+       AF_ECONET                        = 0x13
+       AF_FILE                          = 0x1
+       AF_IB                            = 0x1b
+       AF_IEEE802154                    = 0x24
+       AF_INET                          = 0x2
+       AF_INET6                         = 0xa
+       AF_IPX                           = 0x4
+       AF_IRDA                          = 0x17
+       AF_ISDN                          = 0x22
+       AF_IUCV                          = 0x20
+       AF_KEY                           = 0xf
+       AF_LLC                           = 0x1a
+       AF_LOCAL                         = 0x1
+       AF_MAX                           = 0x29
+       AF_MPLS                          = 0x1c
+       AF_NETBEUI                       = 0xd
+       AF_NETLINK                       = 0x10
+       AF_NETROM                        = 0x6
+       AF_NFC                           = 0x27
+       AF_PACKET                        = 0x11
+       AF_PHONET                        = 0x23
+       AF_PPPOX                         = 0x18
+       AF_RDS                           = 0x15
+       AF_ROSE                          = 0xb
+       AF_ROUTE                         = 0x10
+       AF_RXRPC                         = 0x21
+       AF_SECURITY                      = 0xe
+       AF_SNA                           = 0x16
+       AF_TIPC                          = 0x1e
+       AF_UNIX                          = 0x1
+       AF_UNSPEC                        = 0x0
+       AF_VSOCK                         = 0x28
+       AF_WANPIPE                       = 0x19
+       AF_X25                           = 0x9
+       ARPHRD_6LOWPAN                   = 0x339
+       ARPHRD_ADAPT                     = 0x108
+       ARPHRD_APPLETLK                  = 0x8
+       ARPHRD_ARCNET                    = 0x7
+       ARPHRD_ASH                       = 0x30d
+       ARPHRD_ATM                       = 0x13
+       ARPHRD_AX25                      = 0x3
+       ARPHRD_BIF                       = 0x307
+       ARPHRD_CAIF                      = 0x336
+       ARPHRD_CAN                       = 0x118
+       ARPHRD_CHAOS                     = 0x5
+       ARPHRD_CISCO                     = 0x201
+       ARPHRD_CSLIP                     = 0x101
+       ARPHRD_CSLIP6                    = 0x103
+       ARPHRD_DDCMP                     = 0x205
+       ARPHRD_DLCI                      = 0xf
+       ARPHRD_ECONET                    = 0x30e
+       ARPHRD_EETHER                    = 0x2
+       ARPHRD_ETHER                     = 0x1
+       ARPHRD_EUI64                     = 0x1b
+       ARPHRD_FCAL                      = 0x311
+       ARPHRD_FCFABRIC                  = 0x313
+       ARPHRD_FCPL                      = 0x312
+       ARPHRD_FCPP                      = 0x310
+       ARPHRD_FDDI                      = 0x306
+       ARPHRD_FRAD                      = 0x302
+       ARPHRD_HDLC                      = 0x201
+       ARPHRD_HIPPI                     = 0x30c
+       ARPHRD_HWX25                     = 0x110
+       ARPHRD_IEEE1394                  = 0x18
+       ARPHRD_IEEE802                   = 0x6
+       ARPHRD_IEEE80211                 = 0x321
+       ARPHRD_IEEE80211_PRISM           = 0x322
+       ARPHRD_IEEE80211_RADIOTAP        = 0x323
+       ARPHRD_IEEE802154                = 0x324
+       ARPHRD_IEEE802154_MONITOR        = 0x325
+       ARPHRD_IEEE802_TR                = 0x320
+       ARPHRD_INFINIBAND                = 0x20
+       ARPHRD_IP6GRE                    = 0x337
+       ARPHRD_IPDDP                     = 0x309
+       ARPHRD_IPGRE                     = 0x30a
+       ARPHRD_IRDA                      = 0x30f
+       ARPHRD_LAPB                      = 0x204
+       ARPHRD_LOCALTLK                  = 0x305
+       ARPHRD_LOOPBACK                  = 0x304
+       ARPHRD_METRICOM                  = 0x17
+       ARPHRD_NETLINK                   = 0x338
+       ARPHRD_NETROM                    = 0x0
+       ARPHRD_NONE                      = 0xfffe
+       ARPHRD_PHONET                    = 0x334
+       ARPHRD_PHONET_PIPE               = 0x335
+       ARPHRD_PIMREG                    = 0x30b
+       ARPHRD_PPP                       = 0x200
+       ARPHRD_PRONET                    = 0x4
+       ARPHRD_RAWHDLC                   = 0x206
+       ARPHRD_ROSE                      = 0x10e
+       ARPHRD_RSRVD                     = 0x104
+       ARPHRD_SIT                       = 0x308
+       ARPHRD_SKIP                      = 0x303
+       ARPHRD_SLIP                      = 0x100
+       ARPHRD_SLIP6                     = 0x102
+       ARPHRD_TUNNEL                    = 0x300
+       ARPHRD_TUNNEL6                   = 0x301
+       ARPHRD_VOID                      = 0xffff
+       ARPHRD_X25                       = 0x10f
+       B0                               = 0x0
+       B1000000                         = 0x1008
+       B110                             = 0x3
+       B115200                          = 0x1002
+       B1152000                         = 0x1009
+       B1200                            = 0x9
+       B134                             = 0x4
+       B150                             = 0x5
+       B1500000                         = 0x100a
+       B1800                            = 0xa
+       B19200                           = 0xe
+       B200                             = 0x6
+       B2000000                         = 0x100b
+       B230400                          = 0x1003
+       B2400                            = 0xb
+       B2500000                         = 0x100c
+       B300                             = 0x7
+       B3000000                         = 0x100d
+       B3500000                         = 0x100e
+       B38400                           = 0xf
+       B4000000                         = 0x100f
+       B460800                          = 0x1004
+       B4800                            = 0xc
+       B50                              = 0x1
+       B500000                          = 0x1005
+       B57600                           = 0x1001
+       B576000                          = 0x1006
+       B600                             = 0x8
+       B75                              = 0x2
+       B921600                          = 0x1007
+       B9600                            = 0xd
+       BPF_A                            = 0x10
+       BPF_ABS                          = 0x20
+       BPF_ADD                          = 0x0
+       BPF_ALU                          = 0x4
+       BPF_AND                          = 0x50
+       BPF_B                            = 0x10
+       BPF_DIV                          = 0x30
+       BPF_H                            = 0x8
+       BPF_IMM                          = 0x0
+       BPF_IND                          = 0x40
+       BPF_JA                           = 0x0
+       BPF_JEQ                          = 0x10
+       BPF_JGE                          = 0x30
+       BPF_JGT                          = 0x20
+       BPF_JMP                          = 0x5
+       BPF_JSET                         = 0x40
+       BPF_K                            = 0x0
+       BPF_LD                           = 0x0
+       BPF_LDX                          = 0x1
+       BPF_LEN                          = 0x80
+       BPF_LL_OFF                       = -0x200000
+       BPF_LSH                          = 0x60
+       BPF_MAJOR_VERSION                = 0x1
+       BPF_MAXINSNS                     = 0x1000
+       BPF_MEM                          = 0x60
+       BPF_MEMWORDS                     = 0x10
+       BPF_MINOR_VERSION                = 0x1
+       BPF_MISC                         = 0x7
+       BPF_MOD                          = 0x90
+       BPF_MSH                          = 0xa0
+       BPF_MUL                          = 0x20
+       BPF_NEG                          = 0x80
+       BPF_NET_OFF                      = -0x100000
+       BPF_OR                           = 0x40
+       BPF_RET                          = 0x6
+       BPF_RSH                          = 0x70
+       BPF_ST                           = 0x2
+       BPF_STX                          = 0x3
+       BPF_SUB                          = 0x10
+       BPF_TAX                          = 0x0
+       BPF_TXA                          = 0x80
+       BPF_W                            = 0x0
+       BPF_X                            = 0x8
+       BPF_XOR                          = 0xa0
+       BRKINT                           = 0x2
+       CFLUSH                           = 0xf
+       CLOCAL                           = 0x800
+       CLOCK_BOOTTIME                   = 0x7
+       CLOCK_BOOTTIME_ALARM             = 0x9
+       CLOCK_DEFAULT                    = 0x0
+       CLOCK_EXT                        = 0x1
+       CLOCK_INT                        = 0x2
+       CLOCK_MONOTONIC                  = 0x1
+       CLOCK_MONOTONIC_COARSE           = 0x6
+       CLOCK_MONOTONIC_RAW              = 0x4
+       CLOCK_PROCESS_CPUTIME_ID         = 0x2
+       CLOCK_REALTIME                   = 0x0
+       CLOCK_REALTIME_ALARM             = 0x8
+       CLOCK_REALTIME_COARSE            = 0x5
+       CLOCK_TAI                        = 0xb
+       CLOCK_THREAD_CPUTIME_ID          = 0x3
+       CLOCK_TXFROMRX                   = 0x4
+       CLOCK_TXINT                      = 0x3
+       CLONE_CHILD_CLEARTID             = 0x200000
+       CLONE_CHILD_SETTID               = 0x1000000
+       CLONE_DETACHED                   = 0x400000
+       CLONE_FILES                      = 0x400
+       CLONE_FS                         = 0x200
+       CLONE_IO                         = 0x80000000
+       CLONE_NEWIPC                     = 0x8000000
+       CLONE_NEWNET                     = 0x40000000
+       CLONE_NEWNS                      = 0x20000
+       CLONE_NEWPID                     = 0x20000000
+       CLONE_NEWUSER                    = 0x10000000
+       CLONE_NEWUTS                     = 0x4000000
+       CLONE_PARENT                     = 0x8000
+       CLONE_PARENT_SETTID              = 0x100000
+       CLONE_PTRACE                     = 0x2000
+       CLONE_SETTLS                     = 0x80000
+       CLONE_SIGHAND                    = 0x800
+       CLONE_SYSVSEM                    = 0x40000
+       CLONE_THREAD                     = 0x10000
+       CLONE_UNTRACED                   = 0x800000
+       CLONE_VFORK                      = 0x4000
+       CLONE_VM                         = 0x100
+       CREAD                            = 0x80
+       CS5                              = 0x0
+       CS6                              = 0x10
+       CS7                              = 0x20
+       CS8                              = 0x30
+       CSIGNAL                          = 0xff
+       CSIZE                            = 0x30
+       CSTART                           = 0x11
+       CSTATUS                          = 0x0
+       CSTOP                            = 0x13
+       CSTOPB                           = 0x40
+       CSUSP                            = 0x1a
+       DT_BLK                           = 0x6
+       DT_CHR                           = 0x2
+       DT_DIR                           = 0x4
+       DT_FIFO                          = 0x1
+       DT_LNK                           = 0xa
+       DT_REG                           = 0x8
+       DT_SOCK                          = 0xc
+       DT_UNKNOWN                       = 0x0
+       DT_WHT                           = 0xe
+       ECHO                             = 0x8
+       ECHOCTL                          = 0x200
+       ECHOE                            = 0x10
+       ECHOK                            = 0x20
+       ECHOKE                           = 0x800
+       ECHONL                           = 0x40
+       ECHOPRT                          = 0x400
+       ENCODING_DEFAULT                 = 0x0
+       ENCODING_FM_MARK                 = 0x3
+       ENCODING_FM_SPACE                = 0x4
+       ENCODING_MANCHESTER              = 0x5
+       ENCODING_NRZ                     = 0x1
+       ENCODING_NRZI                    = 0x2
+       EPOLLERR                         = 0x8
+       EPOLLET                          = 0x80000000
+       EPOLLHUP                         = 0x10
+       EPOLLIN                          = 0x1
+       EPOLLMSG                         = 0x400
+       EPOLLONESHOT                     = 0x40000000
+       EPOLLOUT                         = 0x4
+       EPOLLPRI                         = 0x2
+       EPOLLRDBAND                      = 0x80
+       EPOLLRDHUP                       = 0x2000
+       EPOLLRDNORM                      = 0x40
+       EPOLLWAKEUP                      = 0x20000000
+       EPOLLWRBAND                      = 0x200
+       EPOLLWRNORM                      = 0x100
+       EPOLL_CLOEXEC                    = 0x80000
+       EPOLL_CTL_ADD                    = 0x1
+       EPOLL_CTL_DEL                    = 0x2
+       EPOLL_CTL_MOD                    = 0x3
+       ETH_P_1588                       = 0x88f7
+       ETH_P_8021AD                     = 0x88a8
+       ETH_P_8021AH                     = 0x88e7
+       ETH_P_8021Q                      = 0x8100
+       ETH_P_80221                      = 0x8917
+       ETH_P_802_2                      = 0x4
+       ETH_P_802_3                      = 0x1
+       ETH_P_802_3_MIN                  = 0x600
+       ETH_P_802_EX1                    = 0x88b5
+       ETH_P_AARP                       = 0x80f3
+       ETH_P_AF_IUCV                    = 0xfbfb
+       ETH_P_ALL                        = 0x3
+       ETH_P_AOE                        = 0x88a2
+       ETH_P_ARCNET                     = 0x1a
+       ETH_P_ARP                        = 0x806
+       ETH_P_ATALK                      = 0x809b
+       ETH_P_ATMFATE                    = 0x8884
+       ETH_P_ATMMPOA                    = 0x884c
+       ETH_P_AX25                       = 0x2
+       ETH_P_BATMAN                     = 0x4305
+       ETH_P_BPQ                        = 0x8ff
+       ETH_P_CAIF                       = 0xf7
+       ETH_P_CAN                        = 0xc
+       ETH_P_CANFD                      = 0xd
+       ETH_P_CONTROL                    = 0x16
+       ETH_P_CUST                       = 0x6006
+       ETH_P_DDCMP                      = 0x6
+       ETH_P_DEC                        = 0x6000
+       ETH_P_DIAG                       = 0x6005
+       ETH_P_DNA_DL                     = 0x6001
+       ETH_P_DNA_RC                     = 0x6002
+       ETH_P_DNA_RT                     = 0x6003
+       ETH_P_DSA                        = 0x1b
+       ETH_P_ECONET                     = 0x18
+       ETH_P_EDSA                       = 0xdada
+       ETH_P_FCOE                       = 0x8906
+       ETH_P_FIP                        = 0x8914
+       ETH_P_HDLC                       = 0x19
+       ETH_P_IEEE802154                 = 0xf6
+       ETH_P_IEEEPUP                    = 0xa00
+       ETH_P_IEEEPUPAT                  = 0xa01
+       ETH_P_IP                         = 0x800
+       ETH_P_IPV6                       = 0x86dd
+       ETH_P_IPX                        = 0x8137
+       ETH_P_IRDA                       = 0x17
+       ETH_P_LAT                        = 0x6004
+       ETH_P_LINK_CTL                   = 0x886c
+       ETH_P_LOCALTALK                  = 0x9
+       ETH_P_LOOP                       = 0x60
+       ETH_P_LOOPBACK                   = 0x9000
+       ETH_P_MOBITEX                    = 0x15
+       ETH_P_MPLS_MC                    = 0x8848
+       ETH_P_MPLS_UC                    = 0x8847
+       ETH_P_MVRP                       = 0x88f5
+       ETH_P_PAE                        = 0x888e
+       ETH_P_PAUSE                      = 0x8808
+       ETH_P_PHONET                     = 0xf5
+       ETH_P_PPPTALK                    = 0x10
+       ETH_P_PPP_DISC                   = 0x8863
+       ETH_P_PPP_MP                     = 0x8
+       ETH_P_PPP_SES                    = 0x8864
+       ETH_P_PRP                        = 0x88fb
+       ETH_P_PUP                        = 0x200
+       ETH_P_PUPAT                      = 0x201
+       ETH_P_QINQ1                      = 0x9100
+       ETH_P_QINQ2                      = 0x9200
+       ETH_P_QINQ3                      = 0x9300
+       ETH_P_RARP                       = 0x8035
+       ETH_P_SCA                        = 0x6007
+       ETH_P_SLOW                       = 0x8809
+       ETH_P_SNAP                       = 0x5
+       ETH_P_TDLS                       = 0x890d
+       ETH_P_TEB                        = 0x6558
+       ETH_P_TIPC                       = 0x88ca
+       ETH_P_TRAILER                    = 0x1c
+       ETH_P_TR_802_2                   = 0x11
+       ETH_P_TSN                        = 0x22f0
+       ETH_P_WAN_PPP                    = 0x7
+       ETH_P_WCCP                       = 0x883e
+       ETH_P_X25                        = 0x805
+       ETH_P_XDSA                       = 0xf8
+       EXTA                             = 0xe
+       EXTB                             = 0xf
+       EXTPROC                          = 0x10000
+       FD_CLOEXEC                       = 0x1
+       FD_SETSIZE                       = 0x400
+       FLUSHO                           = 0x2000
+       F_DUPFD                          = 0x0
+       F_DUPFD_CLOEXEC                  = 0x406
+       F_EXLCK                          = 0x4
+       F_GETFD                          = 0x1
+       F_GETFL                          = 0x3
+       F_GETLEASE                       = 0x401
+       F_GETLK                          = 0xe
+       F_GETLK64                        = 0xe
+       F_GETOWN                         = 0x17
+       F_GETOWN_EX                      = 0x10
+       F_GETPIPE_SZ                     = 0x408
+       F_GETSIG                         = 0xb
+       F_LOCK                           = 0x1
+       F_NOTIFY                         = 0x402
+       F_OFD_GETLK                      = 0x24
+       F_OFD_SETLK                      = 0x25
+       F_OFD_SETLKW                     = 0x26
+       F_OK                             = 0x0
+       F_RDLCK                          = 0x0
+       F_SETFD                          = 0x2
+       F_SETFL                          = 0x4
+       F_SETLEASE                       = 0x400
+       F_SETLK                          = 0x6
+       F_SETLK64                        = 0x6
+       F_SETLKW                         = 0x7
+       F_SETLKW64                       = 0x7
+       F_SETOWN                         = 0x18
+       F_SETOWN_EX                      = 0xf
+       F_SETPIPE_SZ                     = 0x407
+       F_SETSIG                         = 0xa
+       F_SHLCK                          = 0x8
+       F_TEST                           = 0x3
+       F_TLOCK                          = 0x2
+       F_ULOCK                          = 0x0
+       F_UNLCK                          = 0x2
+       F_WRLCK                          = 0x1
+       HUPCL                            = 0x400
+       ICANON                           = 0x2
+       ICMPV6_FILTER                    = 0x1
+       ICRNL                            = 0x100
+       IEXTEN                           = 0x100
+       IFA_F_DADFAILED                  = 0x8
+       IFA_F_DEPRECATED                 = 0x20
+       IFA_F_HOMEADDRESS                = 0x10
+       IFA_F_MANAGETEMPADDR             = 0x100
+       IFA_F_MCAUTOJOIN                 = 0x400
+       IFA_F_NODAD                      = 0x2
+       IFA_F_NOPREFIXROUTE              = 0x200
+       IFA_F_OPTIMISTIC                 = 0x4
+       IFA_F_PERMANENT                  = 0x80
+       IFA_F_SECONDARY                  = 0x1
+       IFA_F_STABLE_PRIVACY             = 0x800
+       IFA_F_TEMPORARY                  = 0x1
+       IFA_F_TENTATIVE                  = 0x40
+       IFA_MAX                          = 0x8
+       IFF_ALLMULTI                     = 0x200
+       IFF_ATTACH_QUEUE                 = 0x200
+       IFF_AUTOMEDIA                    = 0x4000
+       IFF_BROADCAST                    = 0x2
+       IFF_DEBUG                        = 0x4
+       IFF_DETACH_QUEUE                 = 0x400
+       IFF_DORMANT                      = 0x20000
+       IFF_DYNAMIC                      = 0x8000
+       IFF_ECHO                         = 0x40000
+       IFF_LOOPBACK                     = 0x8
+       IFF_LOWER_UP                     = 0x10000
+       IFF_MASTER                       = 0x400
+       IFF_MULTICAST                    = 0x1000
+       IFF_MULTI_QUEUE                  = 0x100
+       IFF_NOARP                        = 0x80
+       IFF_NOFILTER                     = 0x1000
+       IFF_NOTRAILERS                   = 0x20
+       IFF_NO_PI                        = 0x1000
+       IFF_ONE_QUEUE                    = 0x2000
+       IFF_PERSIST                      = 0x800
+       IFF_POINTOPOINT                  = 0x10
+       IFF_PORTSEL                      = 0x2000
+       IFF_PROMISC                      = 0x100
+       IFF_RUNNING                      = 0x40
+       IFF_SLAVE                        = 0x800
+       IFF_TAP                          = 0x2
+       IFF_TUN                          = 0x1
+       IFF_TUN_EXCL                     = 0x8000
+       IFF_UP                           = 0x1
+       IFF_VNET_HDR                     = 0x4000
+       IFF_VOLATILE                     = 0x70c5a
+       IFNAMSIZ                         = 0x10
+       IGNBRK                           = 0x1
+       IGNCR                            = 0x80
+       IGNPAR                           = 0x4
+       IMAXBEL                          = 0x2000
+       INLCR                            = 0x40
+       INPCK                            = 0x10
+       IN_ACCESS                        = 0x1
+       IN_ALL_EVENTS                    = 0xfff
+       IN_ATTRIB                        = 0x4
+       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_CLOEXEC                       = 0x80000
+       IN_CLOSE                         = 0x18
+       IN_CLOSE_NOWRITE                 = 0x10
+       IN_CLOSE_WRITE                   = 0x8
+       IN_CREATE                        = 0x100
+       IN_DELETE                        = 0x200
+       IN_DELETE_SELF                   = 0x400
+       IN_DONT_FOLLOW                   = 0x2000000
+       IN_EXCL_UNLINK                   = 0x4000000
+       IN_IGNORED                       = 0x8000
+       IN_ISDIR                         = 0x40000000
+       IN_LOOPBACKNET                   = 0x7f
+       IN_MASK_ADD                      = 0x20000000
+       IN_MODIFY                        = 0x2
+       IN_MOVE                          = 0xc0
+       IN_MOVED_FROM                    = 0x40
+       IN_MOVED_TO                      = 0x80
+       IN_MOVE_SELF                     = 0x800
+       IN_NONBLOCK                      = 0x80
+       IN_ONESHOT                       = 0x80000000
+       IN_ONLYDIR                       = 0x1000000
+       IN_OPEN                          = 0x20
+       IN_Q_OVERFLOW                    = 0x4000
+       IN_UNMOUNT                       = 0x2000
+       IPPROTO_AH                       = 0x33
+       IPPROTO_BEETPH                   = 0x5e
+       IPPROTO_COMP                     = 0x6c
+       IPPROTO_DCCP                     = 0x21
+       IPPROTO_DSTOPTS                  = 0x3c
+       IPPROTO_EGP                      = 0x8
+       IPPROTO_ENCAP                    = 0x62
+       IPPROTO_ESP                      = 0x32
+       IPPROTO_FRAGMENT                 = 0x2c
+       IPPROTO_GRE                      = 0x2f
+       IPPROTO_HOPOPTS                  = 0x0
+       IPPROTO_ICMP                     = 0x1
+       IPPROTO_ICMPV6                   = 0x3a
+       IPPROTO_IDP                      = 0x16
+       IPPROTO_IGMP                     = 0x2
+       IPPROTO_IP                       = 0x0
+       IPPROTO_IPIP                     = 0x4
+       IPPROTO_IPV6                     = 0x29
+       IPPROTO_MH                       = 0x87
+       IPPROTO_MTP                      = 0x5c
+       IPPROTO_NONE                     = 0x3b
+       IPPROTO_PIM                      = 0x67
+       IPPROTO_PUP                      = 0xc
+       IPPROTO_RAW                      = 0xff
+       IPPROTO_ROUTING                  = 0x2b
+       IPPROTO_RSVP                     = 0x2e
+       IPPROTO_SCTP                     = 0x84
+       IPPROTO_TCP                      = 0x6
+       IPPROTO_TP                       = 0x1d
+       IPPROTO_UDP                      = 0x11
+       IPPROTO_UDPLITE                  = 0x88
+       IPV6_2292DSTOPTS                 = 0x4
+       IPV6_2292HOPLIMIT                = 0x8
+       IPV6_2292HOPOPTS                 = 0x3
+       IPV6_2292PKTINFO                 = 0x2
+       IPV6_2292PKTOPTIONS              = 0x6
+       IPV6_2292RTHDR                   = 0x5
+       IPV6_ADDRFORM                    = 0x1
+       IPV6_ADD_MEMBERSHIP              = 0x14
+       IPV6_AUTHHDR                     = 0xa
+       IPV6_CHECKSUM                    = 0x7
+       IPV6_DONTFRAG                    = 0x3e
+       IPV6_DROP_MEMBERSHIP             = 0x15
+       IPV6_DSTOPTS                     = 0x3b
+       IPV6_HOPLIMIT                    = 0x34
+       IPV6_HOPOPTS                     = 0x36
+       IPV6_IPSEC_POLICY                = 0x22
+       IPV6_JOIN_ANYCAST                = 0x1b
+       IPV6_JOIN_GROUP                  = 0x14
+       IPV6_LEAVE_ANYCAST               = 0x1c
+       IPV6_LEAVE_GROUP                 = 0x15
+       IPV6_MTU                         = 0x18
+       IPV6_MTU_DISCOVER                = 0x17
+       IPV6_MULTICAST_HOPS              = 0x12
+       IPV6_MULTICAST_IF                = 0x11
+       IPV6_MULTICAST_LOOP              = 0x13
+       IPV6_NEXTHOP                     = 0x9
+       IPV6_PATHMTU                     = 0x3d
+       IPV6_PKTINFO                     = 0x32
+       IPV6_PMTUDISC_DO                 = 0x2
+       IPV6_PMTUDISC_DONT               = 0x0
+       IPV6_PMTUDISC_INTERFACE          = 0x4
+       IPV6_PMTUDISC_OMIT               = 0x5
+       IPV6_PMTUDISC_PROBE              = 0x3
+       IPV6_PMTUDISC_WANT               = 0x1
+       IPV6_RECVDSTOPTS                 = 0x3a
+       IPV6_RECVERR                     = 0x19
+       IPV6_RECVHOPLIMIT                = 0x33
+       IPV6_RECVHOPOPTS                 = 0x35
+       IPV6_RECVPATHMTU                 = 0x3c
+       IPV6_RECVPKTINFO                 = 0x31
+       IPV6_RECVRTHDR                   = 0x38
+       IPV6_RECVTCLASS                  = 0x42
+       IPV6_ROUTER_ALERT                = 0x16
+       IPV6_RTHDR                       = 0x39
+       IPV6_RTHDRDSTOPTS                = 0x37
+       IPV6_RTHDR_LOOSE                 = 0x0
+       IPV6_RTHDR_STRICT                = 0x1
+       IPV6_RTHDR_TYPE_0                = 0x0
+       IPV6_RXDSTOPTS                   = 0x3b
+       IPV6_RXHOPOPTS                   = 0x36
+       IPV6_TCLASS                      = 0x43
+       IPV6_UNICAST_HOPS                = 0x10
+       IPV6_V6ONLY                      = 0x1a
+       IPV6_XFRM_POLICY                 = 0x23
+       IP_ADD_MEMBERSHIP                = 0x23
+       IP_ADD_SOURCE_MEMBERSHIP         = 0x27
+       IP_BLOCK_SOURCE                  = 0x26
+       IP_CHECKSUM                      = 0x17
+       IP_DEFAULT_MULTICAST_LOOP        = 0x1
+       IP_DEFAULT_MULTICAST_TTL         = 0x1
+       IP_DF                            = 0x4000
+       IP_DROP_MEMBERSHIP               = 0x24
+       IP_DROP_SOURCE_MEMBERSHIP        = 0x28
+       IP_FREEBIND                      = 0xf
+       IP_HDRINCL                       = 0x3
+       IP_IPSEC_POLICY                  = 0x10
+       IP_MAXPACKET                     = 0xffff
+       IP_MAX_MEMBERSHIPS               = 0x14
+       IP_MF                            = 0x2000
+       IP_MINTTL                        = 0x15
+       IP_MSFILTER                      = 0x29
+       IP_MSS                           = 0x240
+       IP_MTU                           = 0xe
+       IP_MTU_DISCOVER                  = 0xa
+       IP_MULTICAST_ALL                 = 0x31
+       IP_MULTICAST_IF                  = 0x20
+       IP_MULTICAST_LOOP                = 0x22
+       IP_MULTICAST_TTL                 = 0x21
+       IP_NODEFRAG                      = 0x16
+       IP_OFFMASK                       = 0x1fff
+       IP_OPTIONS                       = 0x4
+       IP_ORIGDSTADDR                   = 0x14
+       IP_PASSSEC                       = 0x12
+       IP_PKTINFO                       = 0x8
+       IP_PKTOPTIONS                    = 0x9
+       IP_PMTUDISC                      = 0xa
+       IP_PMTUDISC_DO                   = 0x2
+       IP_PMTUDISC_DONT                 = 0x0
+       IP_PMTUDISC_INTERFACE            = 0x4
+       IP_PMTUDISC_OMIT                 = 0x5
+       IP_PMTUDISC_PROBE                = 0x3
+       IP_PMTUDISC_WANT                 = 0x1
+       IP_RECVERR                       = 0xb
+       IP_RECVOPTS                      = 0x6
+       IP_RECVORIGDSTADDR               = 0x14
+       IP_RECVRETOPTS                   = 0x7
+       IP_RECVTOS                       = 0xd
+       IP_RECVTTL                       = 0xc
+       IP_RETOPTS                       = 0x7
+       IP_RF                            = 0x8000
+       IP_ROUTER_ALERT                  = 0x5
+       IP_TOS                           = 0x1
+       IP_TRANSPARENT                   = 0x13
+       IP_TTL                           = 0x2
+       IP_UNBLOCK_SOURCE                = 0x25
+       IP_UNICAST_IF                    = 0x32
+       IP_XFRM_POLICY                   = 0x11
+       ISIG                             = 0x1
+       ISTRIP                           = 0x20
+       IUTF8                            = 0x4000
+       IXANY                            = 0x800
+       IXOFF                            = 0x1000
+       IXON                             = 0x400
+       LINUX_REBOOT_CMD_CAD_OFF         = 0x0
+       LINUX_REBOOT_CMD_CAD_ON          = 0x89abcdef
+       LINUX_REBOOT_CMD_HALT            = 0xcdef0123
+       LINUX_REBOOT_CMD_KEXEC           = 0x45584543
+       LINUX_REBOOT_CMD_POWER_OFF       = 0x4321fedc
+       LINUX_REBOOT_CMD_RESTART         = 0x1234567
+       LINUX_REBOOT_CMD_RESTART2        = 0xa1b2c3d4
+       LINUX_REBOOT_CMD_SW_SUSPEND      = 0xd000fce2
+       LINUX_REBOOT_MAGIC1              = 0xfee1dead
+       LINUX_REBOOT_MAGIC2              = 0x28121969
+       LOCK_EX                          = 0x2
+       LOCK_NB                          = 0x4
+       LOCK_SH                          = 0x1
+       LOCK_UN                          = 0x8
+       MADV_DODUMP                      = 0x11
+       MADV_DOFORK                      = 0xb
+       MADV_DONTDUMP                    = 0x10
+       MADV_DONTFORK                    = 0xa
+       MADV_DONTNEED                    = 0x4
+       MADV_HUGEPAGE                    = 0xe
+       MADV_HWPOISON                    = 0x64
+       MADV_MERGEABLE                   = 0xc
+       MADV_NOHUGEPAGE                  = 0xf
+       MADV_NORMAL                      = 0x0
+       MADV_RANDOM                      = 0x1
+       MADV_REMOVE                      = 0x9
+       MADV_SEQUENTIAL                  = 0x2
+       MADV_UNMERGEABLE                 = 0xd
+       MADV_WILLNEED                    = 0x3
+       MAP_ANON                         = 0x800
+       MAP_ANONYMOUS                    = 0x800
+       MAP_DENYWRITE                    = 0x2000
+       MAP_EXECUTABLE                   = 0x4000
+       MAP_FILE                         = 0x0
+       MAP_FIXED                        = 0x10
+       MAP_GROWSDOWN                    = 0x1000
+       MAP_HUGETLB                      = 0x80000
+       MAP_HUGE_MASK                    = 0x3f
+       MAP_HUGE_SHIFT                   = 0x1a
+       MAP_LOCKED                       = 0x8000
+       MAP_NONBLOCK                     = 0x20000
+       MAP_NORESERVE                    = 0x400
+       MAP_POPULATE                     = 0x10000
+       MAP_PRIVATE                      = 0x2
+       MAP_RENAME                       = 0x800
+       MAP_SHARED                       = 0x1
+       MAP_STACK                        = 0x40000
+       MAP_TYPE                         = 0xf
+       MCL_CURRENT                      = 0x1
+       MCL_FUTURE                       = 0x2
+       MNT_DETACH                       = 0x2
+       MNT_EXPIRE                       = 0x4
+       MNT_FORCE                        = 0x1
+       MSG_CMSG_CLOEXEC                 = 0x40000000
+       MSG_CONFIRM                      = 0x800
+       MSG_CTRUNC                       = 0x8
+       MSG_DONTROUTE                    = 0x4
+       MSG_DONTWAIT                     = 0x40
+       MSG_EOR                          = 0x80
+       MSG_ERRQUEUE                     = 0x2000
+       MSG_FASTOPEN                     = 0x20000000
+       MSG_FIN                          = 0x200
+       MSG_MORE                         = 0x8000
+       MSG_NOSIGNAL                     = 0x4000
+       MSG_OOB                          = 0x1
+       MSG_PEEK                         = 0x2
+       MSG_PROXY                        = 0x10
+       MSG_RST                          = 0x1000
+       MSG_SYN                          = 0x400
+       MSG_TRUNC                        = 0x20
+       MSG_TRYHARD                      = 0x4
+       MSG_WAITALL                      = 0x100
+       MSG_WAITFORONE                   = 0x10000
+       MS_ACTIVE                        = 0x40000000
+       MS_ASYNC                         = 0x1
+       MS_BIND                          = 0x1000
+       MS_DIRSYNC                       = 0x80
+       MS_INVALIDATE                    = 0x2
+       MS_I_VERSION                     = 0x800000
+       MS_KERNMOUNT                     = 0x400000
+       MS_LAZYTIME                      = 0x2000000
+       MS_MANDLOCK                      = 0x40
+       MS_MGC_MSK                       = 0xffff0000
+       MS_MGC_VAL                       = 0xc0ed0000
+       MS_MOVE                          = 0x2000
+       MS_NOATIME                       = 0x400
+       MS_NODEV                         = 0x4
+       MS_NODIRATIME                    = 0x800
+       MS_NOEXEC                        = 0x8
+       MS_NOSUID                        = 0x2
+       MS_NOUSER                        = -0x80000000
+       MS_POSIXACL                      = 0x10000
+       MS_PRIVATE                       = 0x40000
+       MS_RDONLY                        = 0x1
+       MS_REC                           = 0x4000
+       MS_RELATIME                      = 0x200000
+       MS_REMOUNT                       = 0x20
+       MS_RMT_MASK                      = 0x2800051
+       MS_SHARED                        = 0x100000
+       MS_SILENT                        = 0x8000
+       MS_SLAVE                         = 0x80000
+       MS_STRICTATIME                   = 0x1000000
+       MS_SYNC                          = 0x4
+       MS_SYNCHRONOUS                   = 0x10
+       MS_UNBINDABLE                    = 0x20000
+       NAME_MAX                         = 0xff
+       NETLINK_ADD_MEMBERSHIP           = 0x1
+       NETLINK_AUDIT                    = 0x9
+       NETLINK_BROADCAST_ERROR          = 0x4
+       NETLINK_CAP_ACK                  = 0xa
+       NETLINK_CONNECTOR                = 0xb
+       NETLINK_CRYPTO                   = 0x15
+       NETLINK_DNRTMSG                  = 0xe
+       NETLINK_DROP_MEMBERSHIP          = 0x2
+       NETLINK_ECRYPTFS                 = 0x13
+       NETLINK_FIB_LOOKUP               = 0xa
+       NETLINK_FIREWALL                 = 0x3
+       NETLINK_GENERIC                  = 0x10
+       NETLINK_INET_DIAG                = 0x4
+       NETLINK_IP6_FW                   = 0xd
+       NETLINK_ISCSI                    = 0x8
+       NETLINK_KOBJECT_UEVENT           = 0xf
+       NETLINK_LISTEN_ALL_NSID          = 0x8
+       NETLINK_LIST_MEMBERSHIPS         = 0x9
+       NETLINK_NETFILTER                = 0xc
+       NETLINK_NFLOG                    = 0x5
+       NETLINK_NO_ENOBUFS               = 0x5
+       NETLINK_PKTINFO                  = 0x3
+       NETLINK_RDMA                     = 0x14
+       NETLINK_ROUTE                    = 0x0
+       NETLINK_RX_RING                  = 0x6
+       NETLINK_SCSITRANSPORT            = 0x12
+       NETLINK_SELINUX                  = 0x7
+       NETLINK_SOCK_DIAG                = 0x4
+       NETLINK_TX_RING                  = 0x7
+       NETLINK_UNUSED                   = 0x1
+       NETLINK_USERSOCK                 = 0x2
+       NETLINK_XFRM                     = 0x6
+       NLA_ALIGNTO                      = 0x4
+       NLA_F_NESTED                     = 0x8000
+       NLA_F_NET_BYTEORDER              = 0x4000
+       NLA_HDRLEN                       = 0x4
+       NLMSG_ALIGNTO                    = 0x4
+       NLMSG_DONE                       = 0x3
+       NLMSG_ERROR                      = 0x2
+       NLMSG_HDRLEN                     = 0x10
+       NLMSG_MIN_TYPE                   = 0x10
+       NLMSG_NOOP                       = 0x1
+       NLMSG_OVERRUN                    = 0x4
+       NLM_F_ACK                        = 0x4
+       NLM_F_APPEND                     = 0x800
+       NLM_F_ATOMIC                     = 0x400
+       NLM_F_CREATE                     = 0x400
+       NLM_F_DUMP                       = 0x300
+       NLM_F_DUMP_INTR                  = 0x10
+       NLM_F_ECHO                       = 0x8
+       NLM_F_EXCL                       = 0x200
+       NLM_F_MATCH                      = 0x200
+       NLM_F_MULTI                      = 0x2
+       NLM_F_REPLACE                    = 0x100
+       NLM_F_REQUEST                    = 0x1
+       NLM_F_ROOT                       = 0x100
+       NOFLSH                           = 0x80
+       OCRNL                            = 0x8
+       OFDEL                            = 0x80
+       OFILL                            = 0x40
+       ONLCR                            = 0x4
+       ONLRET                           = 0x20
+       ONOCR                            = 0x10
+       OPOST                            = 0x1
+       O_ACCMODE                        = 0x3
+       O_APPEND                         = 0x8
+       O_ASYNC                          = 0x1000
+       O_CLOEXEC                        = 0x80000
+       O_CREAT                          = 0x100
+       O_DIRECT                         = 0x8000
+       O_DIRECTORY                      = 0x10000
+       O_DSYNC                          = 0x10
+       O_EXCL                           = 0x400
+       O_FSYNC                          = 0x4010
+       O_LARGEFILE                      = 0x0
+       O_NDELAY                         = 0x80
+       O_NOATIME                        = 0x40000
+       O_NOCTTY                         = 0x800
+       O_NOFOLLOW                       = 0x20000
+       O_NONBLOCK                       = 0x80
+       O_PATH                           = 0x200000
+       O_RDONLY                         = 0x0
+       O_RDWR                           = 0x2
+       O_RSYNC                          = 0x4010
+       O_SYNC                           = 0x4010
+       O_TMPFILE                        = 0x410000
+       O_TRUNC                          = 0x200
+       O_WRONLY                         = 0x1
+       PACKET_ADD_MEMBERSHIP            = 0x1
+       PACKET_AUXDATA                   = 0x8
+       PACKET_BROADCAST                 = 0x1
+       PACKET_COPY_THRESH               = 0x7
+       PACKET_DROP_MEMBERSHIP           = 0x2
+       PACKET_FANOUT                    = 0x12
+       PACKET_FANOUT_CBPF               = 0x6
+       PACKET_FANOUT_CPU                = 0x2
+       PACKET_FANOUT_DATA               = 0x16
+       PACKET_FANOUT_EBPF               = 0x7
+       PACKET_FANOUT_FLAG_DEFRAG        = 0x8000
+       PACKET_FANOUT_FLAG_ROLLOVER      = 0x1000
+       PACKET_FANOUT_HASH               = 0x0
+       PACKET_FANOUT_LB                 = 0x1
+       PACKET_FANOUT_QM                 = 0x5
+       PACKET_FANOUT_RND                = 0x4
+       PACKET_FANOUT_ROLLOVER           = 0x3
+       PACKET_FASTROUTE                 = 0x6
+       PACKET_HDRLEN                    = 0xb
+       PACKET_HOST                      = 0x0
+       PACKET_KERNEL                    = 0x7
+       PACKET_LOOPBACK                  = 0x5
+       PACKET_LOSS                      = 0xe
+       PACKET_MR_ALLMULTI               = 0x2
+       PACKET_MR_MULTICAST              = 0x0
+       PACKET_MR_PROMISC                = 0x1
+       PACKET_MR_UNICAST                = 0x3
+       PACKET_MULTICAST                 = 0x2
+       PACKET_ORIGDEV                   = 0x9
+       PACKET_OTHERHOST                 = 0x3
+       PACKET_OUTGOING                  = 0x4
+       PACKET_QDISC_BYPASS              = 0x14
+       PACKET_RECV_OUTPUT               = 0x3
+       PACKET_RESERVE                   = 0xc
+       PACKET_ROLLOVER_STATS            = 0x15
+       PACKET_RX_RING                   = 0x5
+       PACKET_STATISTICS                = 0x6
+       PACKET_TIMESTAMP                 = 0x11
+       PACKET_TX_HAS_OFF                = 0x13
+       PACKET_TX_RING                   = 0xd
+       PACKET_TX_TIMESTAMP              = 0x10
+       PACKET_USER                      = 0x6
+       PACKET_VERSION                   = 0xa
+       PACKET_VNET_HDR                  = 0xf
+       PARENB                           = 0x100
+       PARITY_CRC16_PR0                 = 0x2
+       PARITY_CRC16_PR0_CCITT           = 0x4
+       PARITY_CRC16_PR1                 = 0x3
+       PARITY_CRC16_PR1_CCITT           = 0x5
+       PARITY_CRC32_PR0_CCITT           = 0x6
+       PARITY_CRC32_PR1_CCITT           = 0x7
+       PARITY_DEFAULT                   = 0x0
+       PARITY_NONE                      = 0x1
+       PARMRK                           = 0x8
+       PARODD                           = 0x200
+       PENDIN                           = 0x4000
+       PRIO_PGRP                        = 0x1
+       PRIO_PROCESS                     = 0x0
+       PRIO_USER                        = 0x2
+       PROT_EXEC                        = 0x4
+       PROT_GROWSDOWN                   = 0x1000000
+       PROT_GROWSUP                     = 0x2000000
+       PROT_NONE                        = 0x0
+       PROT_READ                        = 0x1
+       PROT_WRITE                       = 0x2
+       PR_CAPBSET_DROP                  = 0x18
+       PR_CAPBSET_READ                  = 0x17
+       PR_CAP_AMBIENT                   = 0x2f
+       PR_CAP_AMBIENT_CLEAR_ALL         = 0x4
+       PR_CAP_AMBIENT_IS_SET            = 0x1
+       PR_CAP_AMBIENT_LOWER             = 0x3
+       PR_CAP_AMBIENT_RAISE             = 0x2
+       PR_ENDIAN_BIG                    = 0x0
+       PR_ENDIAN_LITTLE                 = 0x1
+       PR_ENDIAN_PPC_LITTLE             = 0x2
+       PR_FPEMU_NOPRINT                 = 0x1
+       PR_FPEMU_SIGFPE                  = 0x2
+       PR_FP_EXC_ASYNC                  = 0x2
+       PR_FP_EXC_DISABLED               = 0x0
+       PR_FP_EXC_DIV                    = 0x10000
+       PR_FP_EXC_INV                    = 0x100000
+       PR_FP_EXC_NONRECOV               = 0x1
+       PR_FP_EXC_OVF                    = 0x20000
+       PR_FP_EXC_PRECISE                = 0x3
+       PR_FP_EXC_RES                    = 0x80000
+       PR_FP_EXC_SW_ENABLE              = 0x80
+       PR_FP_EXC_UND                    = 0x40000
+       PR_FP_MODE_FR                    = 0x1
+       PR_FP_MODE_FRE                   = 0x2
+       PR_GET_CHILD_SUBREAPER           = 0x25
+       PR_GET_DUMPABLE                  = 0x3
+       PR_GET_ENDIAN                    = 0x13
+       PR_GET_FPEMU                     = 0x9
+       PR_GET_FPEXC                     = 0xb
+       PR_GET_FP_MODE                   = 0x2e
+       PR_GET_KEEPCAPS                  = 0x7
+       PR_GET_NAME                      = 0x10
+       PR_GET_NO_NEW_PRIVS              = 0x27
+       PR_GET_PDEATHSIG                 = 0x2
+       PR_GET_SECCOMP                   = 0x15
+       PR_GET_SECUREBITS                = 0x1b
+       PR_GET_THP_DISABLE               = 0x2a
+       PR_GET_TID_ADDRESS               = 0x28
+       PR_GET_TIMERSLACK                = 0x1e
+       PR_GET_TIMING                    = 0xd
+       PR_GET_TSC                       = 0x19
+       PR_GET_UNALIGN                   = 0x5
+       PR_MCE_KILL                      = 0x21
+       PR_MCE_KILL_CLEAR                = 0x0
+       PR_MCE_KILL_DEFAULT              = 0x2
+       PR_MCE_KILL_EARLY                = 0x1
+       PR_MCE_KILL_GET                  = 0x22
+       PR_MCE_KILL_LATE                 = 0x0
+       PR_MCE_KILL_SET                  = 0x1
+       PR_MPX_DISABLE_MANAGEMENT        = 0x2c
+       PR_MPX_ENABLE_MANAGEMENT         = 0x2b
+       PR_SET_CHILD_SUBREAPER           = 0x24
+       PR_SET_DUMPABLE                  = 0x4
+       PR_SET_ENDIAN                    = 0x14
+       PR_SET_FPEMU                     = 0xa
+       PR_SET_FPEXC                     = 0xc
+       PR_SET_FP_MODE                   = 0x2d
+       PR_SET_KEEPCAPS                  = 0x8
+       PR_SET_MM                        = 0x23
+       PR_SET_MM_ARG_END                = 0x9
+       PR_SET_MM_ARG_START              = 0x8
+       PR_SET_MM_AUXV                   = 0xc
+       PR_SET_MM_BRK                    = 0x7
+       PR_SET_MM_END_CODE               = 0x2
+       PR_SET_MM_END_DATA               = 0x4
+       PR_SET_MM_ENV_END                = 0xb
+       PR_SET_MM_ENV_START              = 0xa
+       PR_SET_MM_EXE_FILE               = 0xd
+       PR_SET_MM_MAP                    = 0xe
+       PR_SET_MM_MAP_SIZE               = 0xf
+       PR_SET_MM_START_BRK              = 0x6
+       PR_SET_MM_START_CODE             = 0x1
+       PR_SET_MM_START_DATA             = 0x3
+       PR_SET_MM_START_STACK            = 0x5
+       PR_SET_NAME                      = 0xf
+       PR_SET_NO_NEW_PRIVS              = 0x26
+       PR_SET_PDEATHSIG                 = 0x1
+       PR_SET_PTRACER                   = 0x59616d61
+       PR_SET_PTRACER_ANY               = -0x1
+       PR_SET_SECCOMP                   = 0x16
+       PR_SET_SECUREBITS                = 0x1c
+       PR_SET_THP_DISABLE               = 0x29
+       PR_SET_TIMERSLACK                = 0x1d
+       PR_SET_TIMING                    = 0xe
+       PR_SET_TSC                       = 0x1a
+       PR_SET_UNALIGN                   = 0x6
+       PR_TASK_PERF_EVENTS_DISABLE      = 0x1f
+       PR_TASK_PERF_EVENTS_ENABLE       = 0x20
+       PR_TIMING_STATISTICAL            = 0x0
+       PR_TIMING_TIMESTAMP              = 0x1
+       PR_TSC_ENABLE                    = 0x1
+       PR_TSC_SIGSEGV                   = 0x2
+       PR_UNALIGN_NOPRINT               = 0x1
+       PR_UNALIGN_SIGBUS                = 0x2
+       PTRACE_ATTACH                    = 0x10
+       PTRACE_CONT                      = 0x7
+       PTRACE_DETACH                    = 0x11
+       PTRACE_EVENT_CLONE               = 0x3
+       PTRACE_EVENT_EXEC                = 0x4
+       PTRACE_EVENT_EXIT                = 0x6
+       PTRACE_EVENT_FORK                = 0x1
+       PTRACE_EVENT_SECCOMP             = 0x7
+       PTRACE_EVENT_STOP                = 0x80
+       PTRACE_EVENT_VFORK               = 0x2
+       PTRACE_EVENT_VFORK_DONE          = 0x5
+       PTRACE_GETEVENTMSG               = 0x4201
+       PTRACE_GETFPREGS                 = 0xe
+       PTRACE_GETREGS                   = 0xc
+       PTRACE_GETREGSET                 = 0x4204
+       PTRACE_GETSIGINFO                = 0x4202
+       PTRACE_GETSIGMASK                = 0x420a
+       PTRACE_GET_THREAD_AREA           = 0x19
+       PTRACE_GET_THREAD_AREA_3264      = 0xc4
+       PTRACE_GET_WATCH_REGS            = 0xd0
+       PTRACE_INTERRUPT                 = 0x4207
+       PTRACE_KILL                      = 0x8
+       PTRACE_LISTEN                    = 0x4208
+       PTRACE_OLDSETOPTIONS             = 0x15
+       PTRACE_O_EXITKILL                = 0x100000
+       PTRACE_O_MASK                    = 0x3000ff
+       PTRACE_O_SUSPEND_SECCOMP         = 0x200000
+       PTRACE_O_TRACECLONE              = 0x8
+       PTRACE_O_TRACEEXEC               = 0x10
+       PTRACE_O_TRACEEXIT               = 0x40
+       PTRACE_O_TRACEFORK               = 0x2
+       PTRACE_O_TRACESECCOMP            = 0x80
+       PTRACE_O_TRACESYSGOOD            = 0x1
+       PTRACE_O_TRACEVFORK              = 0x4
+       PTRACE_O_TRACEVFORKDONE          = 0x20
+       PTRACE_PEEKDATA                  = 0x2
+       PTRACE_PEEKDATA_3264             = 0xc1
+       PTRACE_PEEKSIGINFO               = 0x4209
+       PTRACE_PEEKSIGINFO_SHARED        = 0x1
+       PTRACE_PEEKTEXT                  = 0x1
+       PTRACE_PEEKTEXT_3264             = 0xc0
+       PTRACE_PEEKUSR                   = 0x3
+       PTRACE_POKEDATA                  = 0x5
+       PTRACE_POKEDATA_3264             = 0xc3
+       PTRACE_POKETEXT                  = 0x4
+       PTRACE_POKETEXT_3264             = 0xc2
+       PTRACE_POKEUSR                   = 0x6
+       PTRACE_SEIZE                     = 0x4206
+       PTRACE_SETFPREGS                 = 0xf
+       PTRACE_SETOPTIONS                = 0x4200
+       PTRACE_SETREGS                   = 0xd
+       PTRACE_SETREGSET                 = 0x4205
+       PTRACE_SETSIGINFO                = 0x4203
+       PTRACE_SETSIGMASK                = 0x420b
+       PTRACE_SET_THREAD_AREA           = 0x1a
+       PTRACE_SET_WATCH_REGS            = 0xd1
+       PTRACE_SINGLESTEP                = 0x9
+       PTRACE_SYSCALL                   = 0x18
+       PTRACE_TRACEME                   = 0x0
+       RLIMIT_AS                        = 0x6
+       RLIMIT_CORE                      = 0x4
+       RLIMIT_CPU                       = 0x0
+       RLIMIT_DATA                      = 0x2
+       RLIMIT_FSIZE                     = 0x1
+       RLIMIT_NOFILE                    = 0x5
+       RLIMIT_STACK                     = 0x3
+       RLIM_INFINITY                    = -0x1
+       RTAX_ADVMSS                      = 0x8
+       RTAX_CC_ALGO                     = 0x10
+       RTAX_CWND                        = 0x7
+       RTAX_FEATURES                    = 0xc
+       RTAX_FEATURE_ALLFRAG             = 0x8
+       RTAX_FEATURE_ECN                 = 0x1
+       RTAX_FEATURE_MASK                = 0xf
+       RTAX_FEATURE_SACK                = 0x2
+       RTAX_FEATURE_TIMESTAMP           = 0x4
+       RTAX_HOPLIMIT                    = 0xa
+       RTAX_INITCWND                    = 0xb
+       RTAX_INITRWND                    = 0xe
+       RTAX_LOCK                        = 0x1
+       RTAX_MAX                         = 0x10
+       RTAX_MTU                         = 0x2
+       RTAX_QUICKACK                    = 0xf
+       RTAX_REORDERING                  = 0x9
+       RTAX_RTO_MIN                     = 0xd
+       RTAX_RTT                         = 0x4
+       RTAX_RTTVAR                      = 0x5
+       RTAX_SSTHRESH                    = 0x6
+       RTAX_UNSPEC                      = 0x0
+       RTAX_WINDOW                      = 0x3
+       RTA_ALIGNTO                      = 0x4
+       RTA_MAX                          = 0x16
+       RTCF_DIRECTSRC                   = 0x4000000
+       RTCF_DOREDIRECT                  = 0x1000000
+       RTCF_LOG                         = 0x2000000
+       RTCF_MASQ                        = 0x400000
+       RTCF_NAT                         = 0x800000
+       RTCF_VALVE                       = 0x200000
+       RTF_ADDRCLASSMASK                = 0xf8000000
+       RTF_ADDRCONF                     = 0x40000
+       RTF_ALLONLINK                    = 0x20000
+       RTF_BROADCAST                    = 0x10000000
+       RTF_CACHE                        = 0x1000000
+       RTF_DEFAULT                      = 0x10000
+       RTF_DYNAMIC                      = 0x10
+       RTF_FLOW                         = 0x2000000
+       RTF_GATEWAY                      = 0x2
+       RTF_HOST                         = 0x4
+       RTF_INTERFACE                    = 0x40000000
+       RTF_IRTT                         = 0x100
+       RTF_LINKRT                       = 0x100000
+       RTF_LOCAL                        = 0x80000000
+       RTF_MODIFIED                     = 0x20
+       RTF_MSS                          = 0x40
+       RTF_MTU                          = 0x40
+       RTF_MULTICAST                    = 0x20000000
+       RTF_NAT                          = 0x8000000
+       RTF_NOFORWARD                    = 0x1000
+       RTF_NONEXTHOP                    = 0x200000
+       RTF_NOPMTUDISC                   = 0x4000
+       RTF_POLICY                       = 0x4000000
+       RTF_REINSTATE                    = 0x8
+       RTF_REJECT                       = 0x200
+       RTF_STATIC                       = 0x400
+       RTF_THROW                        = 0x2000
+       RTF_UP                           = 0x1
+       RTF_WINDOW                       = 0x80
+       RTF_XRESOLVE                     = 0x800
+       RTM_BASE                         = 0x10
+       RTM_DELACTION                    = 0x31
+       RTM_DELADDR                      = 0x15
+       RTM_DELADDRLABEL                 = 0x49
+       RTM_DELLINK                      = 0x11
+       RTM_DELMDB                       = 0x55
+       RTM_DELNEIGH                     = 0x1d
+       RTM_DELNSID                      = 0x59
+       RTM_DELQDISC                     = 0x25
+       RTM_DELROUTE                     = 0x19
+       RTM_DELRULE                      = 0x21
+       RTM_DELTCLASS                    = 0x29
+       RTM_DELTFILTER                   = 0x2d
+       RTM_F_CLONED                     = 0x200
+       RTM_F_EQUALIZE                   = 0x400
+       RTM_F_NOTIFY                     = 0x100
+       RTM_F_PREFIX                     = 0x800
+       RTM_GETACTION                    = 0x32
+       RTM_GETADDR                      = 0x16
+       RTM_GETADDRLABEL                 = 0x4a
+       RTM_GETANYCAST                   = 0x3e
+       RTM_GETDCB                       = 0x4e
+       RTM_GETLINK                      = 0x12
+       RTM_GETMDB                       = 0x56
+       RTM_GETMULTICAST                 = 0x3a
+       RTM_GETNEIGH                     = 0x1e
+       RTM_GETNEIGHTBL                  = 0x42
+       RTM_GETNETCONF                   = 0x52
+       RTM_GETNSID                      = 0x5a
+       RTM_GETQDISC                     = 0x26
+       RTM_GETROUTE                     = 0x1a
+       RTM_GETRULE                      = 0x22
+       RTM_GETTCLASS                    = 0x2a
+       RTM_GETTFILTER                   = 0x2e
+       RTM_MAX                          = 0x5b
+       RTM_NEWACTION                    = 0x30
+       RTM_NEWADDR                      = 0x14
+       RTM_NEWADDRLABEL                 = 0x48
+       RTM_NEWLINK                      = 0x10
+       RTM_NEWMDB                       = 0x54
+       RTM_NEWNDUSEROPT                 = 0x44
+       RTM_NEWNEIGH                     = 0x1c
+       RTM_NEWNEIGHTBL                  = 0x40
+       RTM_NEWNETCONF                   = 0x50
+       RTM_NEWNSID                      = 0x58
+       RTM_NEWPREFIX                    = 0x34
+       RTM_NEWQDISC                     = 0x24
+       RTM_NEWROUTE                     = 0x18
+       RTM_NEWRULE                      = 0x20
+       RTM_NEWTCLASS                    = 0x28
+       RTM_NEWTFILTER                   = 0x2c
+       RTM_NR_FAMILIES                  = 0x13
+       RTM_NR_MSGTYPES                  = 0x4c
+       RTM_SETDCB                       = 0x4f
+       RTM_SETLINK                      = 0x13
+       RTM_SETNEIGHTBL                  = 0x43
+       RTNH_ALIGNTO                     = 0x4
+       RTNH_COMPARE_MASK                = 0x11
+       RTNH_F_DEAD                      = 0x1
+       RTNH_F_LINKDOWN                  = 0x10
+       RTNH_F_OFFLOAD                   = 0x8
+       RTNH_F_ONLINK                    = 0x4
+       RTNH_F_PERVASIVE                 = 0x2
+       RTN_MAX                          = 0xb
+       RTPROT_BABEL                     = 0x2a
+       RTPROT_BIRD                      = 0xc
+       RTPROT_BOOT                      = 0x3
+       RTPROT_DHCP                      = 0x10
+       RTPROT_DNROUTED                  = 0xd
+       RTPROT_GATED                     = 0x8
+       RTPROT_KERNEL                    = 0x2
+       RTPROT_MROUTED                   = 0x11
+       RTPROT_MRT                       = 0xa
+       RTPROT_NTK                       = 0xf
+       RTPROT_RA                        = 0x9
+       RTPROT_REDIRECT                  = 0x1
+       RTPROT_STATIC                    = 0x4
+       RTPROT_UNSPEC                    = 0x0
+       RTPROT_XORP                      = 0xe
+       RTPROT_ZEBRA                     = 0xb
+       RT_CLASS_DEFAULT                 = 0xfd
+       RT_CLASS_LOCAL                   = 0xff
+       RT_CLASS_MAIN                    = 0xfe
+       RT_CLASS_MAX                     = 0xff
+       RT_CLASS_UNSPEC                  = 0x0
+       RUSAGE_CHILDREN                  = -0x1
+       RUSAGE_SELF                      = 0x0
+       RUSAGE_THREAD                    = 0x1
+       SCM_CREDENTIALS                  = 0x2
+       SCM_RIGHTS                       = 0x1
+       SCM_TIMESTAMP                    = 0x1d
+       SCM_TIMESTAMPING                 = 0x25
+       SCM_TIMESTAMPNS                  = 0x23
+       SCM_WIFI_STATUS                  = 0x29
+       SHUT_RD                          = 0x0
+       SHUT_RDWR                        = 0x2
+       SHUT_WR                          = 0x1
+       SIOCADDDLCI                      = 0x8980
+       SIOCADDMULTI                     = 0x8931
+       SIOCADDRT                        = 0x890b
+       SIOCATMARK                       = 0x40047307
+       SIOCDARP                         = 0x8953
+       SIOCDELDLCI                      = 0x8981
+       SIOCDELMULTI                     = 0x8932
+       SIOCDELRT                        = 0x890c
+       SIOCDEVPRIVATE                   = 0x89f0
+       SIOCDIFADDR                      = 0x8936
+       SIOCDRARP                        = 0x8960
+       SIOCGARP                         = 0x8954
+       SIOCGIFADDR                      = 0x8915
+       SIOCGIFBR                        = 0x8940
+       SIOCGIFBRDADDR                   = 0x8919
+       SIOCGIFCONF                      = 0x8912
+       SIOCGIFCOUNT                     = 0x8938
+       SIOCGIFDSTADDR                   = 0x8917
+       SIOCGIFENCAP                     = 0x8925
+       SIOCGIFFLAGS                     = 0x8913
+       SIOCGIFHWADDR                    = 0x8927
+       SIOCGIFINDEX                     = 0x8933
+       SIOCGIFMAP                       = 0x8970
+       SIOCGIFMEM                       = 0x891f
+       SIOCGIFMETRIC                    = 0x891d
+       SIOCGIFMTU                       = 0x8921
+       SIOCGIFNAME                      = 0x8910
+       SIOCGIFNETMASK                   = 0x891b
+       SIOCGIFPFLAGS                    = 0x8935
+       SIOCGIFSLAVE                     = 0x8929
+       SIOCGIFTXQLEN                    = 0x8942
+       SIOCGPGRP                        = 0x40047309
+       SIOCGRARP                        = 0x8961
+       SIOCGSTAMP                       = 0x8906
+       SIOCGSTAMPNS                     = 0x8907
+       SIOCPROTOPRIVATE                 = 0x89e0
+       SIOCRTMSG                        = 0x890d
+       SIOCSARP                         = 0x8955
+       SIOCSIFADDR                      = 0x8916
+       SIOCSIFBR                        = 0x8941
+       SIOCSIFBRDADDR                   = 0x891a
+       SIOCSIFDSTADDR                   = 0x8918
+       SIOCSIFENCAP                     = 0x8926
+       SIOCSIFFLAGS                     = 0x8914
+       SIOCSIFHWADDR                    = 0x8924
+       SIOCSIFHWBROADCAST               = 0x8937
+       SIOCSIFLINK                      = 0x8911
+       SIOCSIFMAP                       = 0x8971
+       SIOCSIFMEM                       = 0x8920
+       SIOCSIFMETRIC                    = 0x891e
+       SIOCSIFMTU                       = 0x8922
+       SIOCSIFNAME                      = 0x8923
+       SIOCSIFNETMASK                   = 0x891c
+       SIOCSIFPFLAGS                    = 0x8934
+       SIOCSIFSLAVE                     = 0x8930
+       SIOCSIFTXQLEN                    = 0x8943
+       SIOCSPGRP                        = 0x80047308
+       SIOCSRARP                        = 0x8962
+       SOCK_CLOEXEC                     = 0x80000
+       SOCK_DCCP                        = 0x6
+       SOCK_DGRAM                       = 0x1
+       SOCK_NONBLOCK                    = 0x80
+       SOCK_PACKET                      = 0xa
+       SOCK_RAW                         = 0x3
+       SOCK_RDM                         = 0x4
+       SOCK_SEQPACKET                   = 0x5
+       SOCK_STREAM                      = 0x2
+       SOL_AAL                          = 0x109
+       SOL_ATM                          = 0x108
+       SOL_DECNET                       = 0x105
+       SOL_ICMPV6                       = 0x3a
+       SOL_IP                           = 0x0
+       SOL_IPV6                         = 0x29
+       SOL_IRDA                         = 0x10a
+       SOL_PACKET                       = 0x107
+       SOL_RAW                          = 0xff
+       SOL_SOCKET                       = 0xffff
+       SOL_TCP                          = 0x6
+       SOL_X25                          = 0x106
+       SOMAXCONN                        = 0x80
+       SO_ACCEPTCONN                    = 0x1009
+       SO_ATTACH_BPF                    = 0x32
+       SO_ATTACH_FILTER                 = 0x1a
+       SO_BINDTODEVICE                  = 0x19
+       SO_BPF_EXTENSIONS                = 0x30
+       SO_BROADCAST                     = 0x20
+       SO_BSDCOMPAT                     = 0xe
+       SO_BUSY_POLL                     = 0x2e
+       SO_DEBUG                         = 0x1
+       SO_DETACH_BPF                    = 0x1b
+       SO_DETACH_FILTER                 = 0x1b
+       SO_DOMAIN                        = 0x1029
+       SO_DONTROUTE                     = 0x10
+       SO_ERROR                         = 0x1007
+       SO_GET_FILTER                    = 0x1a
+       SO_INCOMING_CPU                  = 0x31
+       SO_KEEPALIVE                     = 0x8
+       SO_LINGER                        = 0x80
+       SO_LOCK_FILTER                   = 0x2c
+       SO_MARK                          = 0x24
+       SO_MAX_PACING_RATE               = 0x2f
+       SO_NOFCS                         = 0x2b
+       SO_NO_CHECK                      = 0xb
+       SO_OOBINLINE                     = 0x100
+       SO_PASSCRED                      = 0x11
+       SO_PASSSEC                       = 0x22
+       SO_PEEK_OFF                      = 0x2a
+       SO_PEERCRED                      = 0x12
+       SO_PEERNAME                      = 0x1c
+       SO_PEERSEC                       = 0x1e
+       SO_PRIORITY                      = 0xc
+       SO_PROTOCOL                      = 0x1028
+       SO_RCVBUF                        = 0x1002
+       SO_RCVBUFFORCE                   = 0x21
+       SO_RCVLOWAT                      = 0x1004
+       SO_RCVTIMEO                      = 0x1006
+       SO_REUSEADDR                     = 0x4
+       SO_REUSEPORT                     = 0x200
+       SO_RXQ_OVFL                      = 0x28
+       SO_SECURITY_AUTHENTICATION       = 0x16
+       SO_SECURITY_ENCRYPTION_NETWORK   = 0x18
+       SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
+       SO_SELECT_ERR_QUEUE              = 0x2d
+       SO_SNDBUF                        = 0x1001
+       SO_SNDBUFFORCE                   = 0x1f
+       SO_SNDLOWAT                      = 0x1003
+       SO_SNDTIMEO                      = 0x1005
+       SO_STYLE                         = 0x1008
+       SO_TIMESTAMP                     = 0x1d
+       SO_TIMESTAMPING                  = 0x25
+       SO_TIMESTAMPNS                   = 0x23
+       SO_TYPE                          = 0x1008
+       SO_WIFI_STATUS                   = 0x29
+       S_BLKSIZE                        = 0x200
+       S_IEXEC                          = 0x40
+       S_IFBLK                          = 0x6000
+       S_IFCHR                          = 0x2000
+       S_IFDIR                          = 0x4000
+       S_IFIFO                          = 0x1000
+       S_IFLNK                          = 0xa000
+       S_IFMT                           = 0xf000
+       S_IFREG                          = 0x8000
+       S_IFSOCK                         = 0xc000
+       S_IREAD                          = 0x100
+       S_IRGRP                          = 0x20
+       S_IROTH                          = 0x4
+       S_IRUSR                          = 0x100
+       S_IRWXG                          = 0x38
+       S_IRWXO                          = 0x7
+       S_IRWXU                          = 0x1c0
+       S_ISGID                          = 0x400
+       S_ISUID                          = 0x800
+       S_ISVTX                          = 0x200
+       S_IWGRP                          = 0x10
+       S_IWOTH                          = 0x2
+       S_IWRITE                         = 0x80
+       S_IWUSR                          = 0x80
+       S_IXGRP                          = 0x8
+       S_IXOTH                          = 0x1
+       S_IXUSR                          = 0x40
+       TCFLSH                           = 0x5407
+       TCIFLUSH                         = 0x0
+       TCIOFLUSH                        = 0x2
+       TCOFLUSH                         = 0x1
+       TCP_CONGESTION                   = 0xd
+       TCP_COOKIE_IN_ALWAYS             = 0x1
+       TCP_COOKIE_MAX                   = 0x10
+       TCP_COOKIE_MIN                   = 0x8
+       TCP_COOKIE_OUT_NEVER             = 0x2
+       TCP_COOKIE_PAIR_SIZE             = 0x20
+       TCP_COOKIE_TRANSACTIONS          = 0xf
+       TCP_CORK                         = 0x3
+       TCP_DEFER_ACCEPT                 = 0x9
+       TCP_FASTOPEN                     = 0x17
+       TCP_INFO                         = 0xb
+       TCP_KEEPCNT                      = 0x6
+       TCP_KEEPIDLE                     = 0x4
+       TCP_KEEPINTVL                    = 0x5
+       TCP_LINGER2                      = 0x8
+       TCP_MAXSEG                       = 0x2
+       TCP_MAXWIN                       = 0xffff
+       TCP_MAX_WINSHIFT                 = 0xe
+       TCP_MD5SIG                       = 0xe
+       TCP_MD5SIG_MAXKEYLEN             = 0x50
+       TCP_MSS                          = 0x200
+       TCP_MSS_DEFAULT                  = 0x218
+       TCP_MSS_DESIRED                  = 0x4c4
+       TCP_NODELAY                      = 0x1
+       TCP_QUEUE_SEQ                    = 0x15
+       TCP_QUICKACK                     = 0xc
+       TCP_REPAIR                       = 0x13
+       TCP_REPAIR_OPTIONS               = 0x16
+       TCP_REPAIR_QUEUE                 = 0x14
+       TCP_SYNCNT                       = 0x7
+       TCP_S_DATA_IN                    = 0x4
+       TCP_S_DATA_OUT                   = 0x8
+       TCP_THIN_DUPACK                  = 0x11
+       TCP_THIN_LINEAR_TIMEOUTS         = 0x10
+       TCP_TIMESTAMP                    = 0x18
+       TCP_USER_TIMEOUT                 = 0x12
+       TCP_WINDOW_CLAMP                 = 0xa
+       TCSAFLUSH                        = 0x5410
+       TCSBRK                           = 0x5405
+       TCXONC                           = 0x5406
+       TIOCCBRK                         = 0x5428
+       TIOCCONS                         = 0x80047478
+       TIOCEXCL                         = 0x740d
+       TIOCGDEV                         = 0x40045432
+       TIOCGETD                         = 0x7400
+       TIOCGETP                         = 0x7408
+       TIOCGEXCL                        = 0x40045440
+       TIOCGICOUNT                      = 0x5492
+       TIOCGLCKTRMIOS                   = 0x548b
+       TIOCGLTC                         = 0x7474
+       TIOCGPGRP                        = 0x40047477
+       TIOCGPKT                         = 0x40045438
+       TIOCGPTLCK                       = 0x40045439
+       TIOCGPTN                         = 0x40045430
+       TIOCGRS485                       = 0x4020542e
+       TIOCGSERIAL                      = 0x5484
+       TIOCGSID                         = 0x7416
+       TIOCGSOFTCAR                     = 0x5481
+       TIOCGWINSZ                       = 0x40087468
+       TIOCINQ                          = 0x467f
+       TIOCLINUX                        = 0x5483
+       TIOCMBIC                         = 0x741c
+       TIOCMBIS                         = 0x741b
+       TIOCMGET                         = 0x741d
+       TIOCMIWAIT                       = 0x5491
+       TIOCMSET                         = 0x741a
+       TIOCM_CAR                        = 0x100
+       TIOCM_CD                         = 0x100
+       TIOCM_CTS                        = 0x40
+       TIOCM_DSR                        = 0x400
+       TIOCM_DTR                        = 0x2
+       TIOCM_LE                         = 0x1
+       TIOCM_RI                         = 0x200
+       TIOCM_RNG                        = 0x200
+       TIOCM_RTS                        = 0x4
+       TIOCM_SR                         = 0x20
+       TIOCM_ST                         = 0x10
+       TIOCNOTTY                        = 0x5471
+       TIOCNXCL                         = 0x740e
+       TIOCOUTQ                         = 0x7472
+       TIOCPKT                          = 0x5470
+       TIOCPKT_DATA                     = 0x0
+       TIOCPKT_DOSTOP                   = 0x20
+       TIOCPKT_FLUSHREAD                = 0x1
+       TIOCPKT_FLUSHWRITE               = 0x2
+       TIOCPKT_IOCTL                    = 0x40
+       TIOCPKT_NOSTOP                   = 0x10
+       TIOCPKT_START                    = 0x8
+       TIOCPKT_STOP                     = 0x4
+       TIOCSBRK                         = 0x5427
+       TIOCSCTTY                        = 0x5480
+       TIOCSERCONFIG                    = 0x5488
+       TIOCSERGETLSR                    = 0x548e
+       TIOCSERGETMULTI                  = 0x548f
+       TIOCSERGSTRUCT                   = 0x548d
+       TIOCSERGWILD                     = 0x5489
+       TIOCSERSETMULTI                  = 0x5490
+       TIOCSERSWILD                     = 0x548a
+       TIOCSER_TEMT                     = 0x1
+       TIOCSETD                         = 0x7401
+       TIOCSETN                         = 0x740a
+       TIOCSETP                         = 0x7409
+       TIOCSIG                          = 0x80045436
+       TIOCSLCKTRMIOS                   = 0x548c
+       TIOCSLTC                         = 0x7475
+       TIOCSPGRP                        = 0x80047476
+       TIOCSPTLCK                       = 0x80045431
+       TIOCSRS485                       = 0xc020542f
+       TIOCSSERIAL                      = 0x5485
+       TIOCSSOFTCAR                     = 0x5482
+       TIOCSTI                          = 0x5472
+       TIOCSWINSZ                       = 0x80087467
+       TIOCVHANGUP                      = 0x5437
+       TOSTOP                           = 0x8000
+       TUNATTACHFILTER                  = 0x801054d5
+       TUNDETACHFILTER                  = 0x801054d6
+       TUNGETFEATURES                   = 0x400454cf
+       TUNGETFILTER                     = 0x401054db
+       TUNGETIFF                        = 0x400454d2
+       TUNGETSNDBUF                     = 0x400454d3
+       TUNGETVNETBE                     = 0x400454df
+       TUNGETVNETHDRSZ                  = 0x400454d7
+       TUNGETVNETLE                     = 0x400454dd
+       TUNSETDEBUG                      = 0x800454c9
+       TUNSETGROUP                      = 0x800454ce
+       TUNSETIFF                        = 0x800454ca
+       TUNSETIFINDEX                    = 0x800454da
+       TUNSETLINK                       = 0x800454cd
+       TUNSETNOCSUM                     = 0x800454c8
+       TUNSETOFFLOAD                    = 0x800454d0
+       TUNSETOWNER                      = 0x800454cc
+       TUNSETPERSIST                    = 0x800454cb
+       TUNSETQUEUE                      = 0x800454d9
+       TUNSETSNDBUF                     = 0x800454d4
+       TUNSETTXFILTER                   = 0x800454d1
+       TUNSETVNETBE                     = 0x800454de
+       TUNSETVNETHDRSZ                  = 0x800454d8
+       TUNSETVNETLE                     = 0x800454dc
+       VDISCARD                         = 0xd
+       VEOF                             = 0x10
+       VEOL                             = 0x11
+       VEOL2                            = 0x6
+       VERASE                           = 0x2
+       VINTR                            = 0x0
+       VKILL                            = 0x3
+       VLNEXT                           = 0xf
+       VMIN                             = 0x4
+       VQUIT                            = 0x1
+       VREPRINT                         = 0xc
+       VSTART                           = 0x8
+       VSTOP                            = 0x9
+       VSUSP                            = 0xa
+       VSWTC                            = 0x7
+       VSWTCH                           = 0x7
+       VT0                              = 0x0
+       VT1                              = 0x4000
+       VTDLY                            = 0x4000
+       VTIME                            = 0x5
+       VWERASE                          = 0xe
+       WALL                             = 0x40000000
+       WCLONE                           = 0x80000000
+       WCONTINUED                       = 0x8
+       WEXITED                          = 0x4
+       WNOHANG                          = 0x1
+       WNOTHREAD                        = 0x20000000
+       WNOWAIT                          = 0x1000000
+       WORDSIZE                         = 0x40
+       WSTOPPED                         = 0x2
+       WUNTRACED                        = 0x2
+)
+
+// Errors
+const (
+       E2BIG           = syscall.Errno(0x7)
+       EACCES          = syscall.Errno(0xd)
+       EADDRINUSE      = syscall.Errno(0x7d)
+       EADDRNOTAVAIL   = syscall.Errno(0x7e)
+       EADV            = syscall.Errno(0x44)
+       EAFNOSUPPORT    = syscall.Errno(0x7c)
+       EAGAIN          = syscall.Errno(0xb)
+       EALREADY        = syscall.Errno(0x95)
+       EBADE           = syscall.Errno(0x32)
+       EBADF           = syscall.Errno(0x9)
+       EBADFD          = syscall.Errno(0x51)
+       EBADMSG         = syscall.Errno(0x4d)
+       EBADR           = syscall.Errno(0x33)
+       EBADRQC         = syscall.Errno(0x36)
+       EBADSLT         = syscall.Errno(0x37)
+       EBFONT          = syscall.Errno(0x3b)
+       EBUSY           = syscall.Errno(0x10)
+       ECANCELED       = syscall.Errno(0x9e)
+       ECHILD          = syscall.Errno(0xa)
+       ECHRNG          = syscall.Errno(0x25)
+       ECOMM           = syscall.Errno(0x46)
+       ECONNABORTED    = syscall.Errno(0x82)
+       ECONNREFUSED    = syscall.Errno(0x92)
+       ECONNRESET      = syscall.Errno(0x83)
+       EDEADLK         = syscall.Errno(0x2d)
+       EDEADLOCK       = syscall.Errno(0x38)
+       EDESTADDRREQ    = syscall.Errno(0x60)
+       EDOM            = syscall.Errno(0x21)
+       EDOTDOT         = syscall.Errno(0x49)
+       EDQUOT          = syscall.Errno(0x46d)
+       EEXIST          = syscall.Errno(0x11)
+       EFAULT          = syscall.Errno(0xe)
+       EFBIG           = syscall.Errno(0x1b)
+       EHOSTDOWN       = syscall.Errno(0x93)
+       EHOSTUNREACH    = syscall.Errno(0x94)
+       EHWPOISON       = syscall.Errno(0xa8)
+       EIDRM           = syscall.Errno(0x24)
+       EILSEQ          = syscall.Errno(0x58)
+       EINIT           = syscall.Errno(0x8d)
+       EINPROGRESS     = syscall.Errno(0x96)
+       EINTR           = syscall.Errno(0x4)
+       EINVAL          = syscall.Errno(0x16)
+       EIO             = syscall.Errno(0x5)
+       EISCONN         = syscall.Errno(0x85)
+       EISDIR          = syscall.Errno(0x15)
+       EISNAM          = syscall.Errno(0x8b)
+       EKEYEXPIRED     = syscall.Errno(0xa2)
+       EKEYREJECTED    = syscall.Errno(0xa4)
+       EKEYREVOKED     = syscall.Errno(0xa3)
+       EL2HLT          = syscall.Errno(0x2c)
+       EL2NSYNC        = syscall.Errno(0x26)
+       EL3HLT          = syscall.Errno(0x27)
+       EL3RST          = syscall.Errno(0x28)
+       ELIBACC         = syscall.Errno(0x53)
+       ELIBBAD         = syscall.Errno(0x54)
+       ELIBEXEC        = syscall.Errno(0x57)
+       ELIBMAX         = syscall.Errno(0x56)
+       ELIBSCN         = syscall.Errno(0x55)
+       ELNRNG          = syscall.Errno(0x29)
+       ELOOP           = syscall.Errno(0x5a)
+       EMEDIUMTYPE     = syscall.Errno(0xa0)
+       EMFILE          = syscall.Errno(0x18)
+       EMLINK          = syscall.Errno(0x1f)
+       EMSGSIZE        = syscall.Errno(0x61)
+       EMULTIHOP       = syscall.Errno(0x4a)
+       ENAMETOOLONG    = syscall.Errno(0x4e)
+       ENAVAIL         = syscall.Errno(0x8a)
+       ENETDOWN        = syscall.Errno(0x7f)
+       ENETRESET       = syscall.Errno(0x81)
+       ENETUNREACH     = syscall.Errno(0x80)
+       ENFILE          = syscall.Errno(0x17)
+       ENOANO          = syscall.Errno(0x35)
+       ENOBUFS         = syscall.Errno(0x84)
+       ENOCSI          = syscall.Errno(0x2b)
+       ENODATA         = syscall.Errno(0x3d)
+       ENODEV          = syscall.Errno(0x13)
+       ENOENT          = syscall.Errno(0x2)
+       ENOEXEC         = syscall.Errno(0x8)
+       ENOKEY          = syscall.Errno(0xa1)
+       ENOLCK          = syscall.Errno(0x2e)
+       ENOLINK         = syscall.Errno(0x43)
+       ENOMEDIUM       = syscall.Errno(0x9f)
+       ENOMEM          = syscall.Errno(0xc)
+       ENOMSG          = syscall.Errno(0x23)
+       ENONET          = syscall.Errno(0x40)
+       ENOPKG          = syscall.Errno(0x41)
+       ENOPROTOOPT     = syscall.Errno(0x63)
+       ENOSPC          = syscall.Errno(0x1c)
+       ENOSR           = syscall.Errno(0x3f)
+       ENOSTR          = syscall.Errno(0x3c)
+       ENOSYS          = syscall.Errno(0x59)
+       ENOTBLK         = syscall.Errno(0xf)
+       ENOTCONN        = syscall.Errno(0x86)
+       ENOTDIR         = syscall.Errno(0x14)
+       ENOTEMPTY       = syscall.Errno(0x5d)
+       ENOTNAM         = syscall.Errno(0x89)
+       ENOTRECOVERABLE = syscall.Errno(0xa6)
+       ENOTSOCK        = syscall.Errno(0x5f)
+       ENOTSUP         = syscall.Errno(0x7a)
+       ENOTTY          = syscall.Errno(0x19)
+       ENOTUNIQ        = syscall.Errno(0x50)
+       ENXIO           = syscall.Errno(0x6)
+       EOPNOTSUPP      = syscall.Errno(0x7a)
+       EOVERFLOW       = syscall.Errno(0x4f)
+       EOWNERDEAD      = syscall.Errno(0xa5)
+       EPERM           = syscall.Errno(0x1)
+       EPFNOSUPPORT    = syscall.Errno(0x7b)
+       EPIPE           = syscall.Errno(0x20)
+       EPROTO          = syscall.Errno(0x47)
+       EPROTONOSUPPORT = syscall.Errno(0x78)
+       EPROTOTYPE      = syscall.Errno(0x62)
+       ERANGE          = syscall.Errno(0x22)
+       EREMCHG         = syscall.Errno(0x52)
+       EREMDEV         = syscall.Errno(0x8e)
+       EREMOTE         = syscall.Errno(0x42)
+       EREMOTEIO       = syscall.Errno(0x8c)
+       ERESTART        = syscall.Errno(0x5b)
+       ERFKILL         = syscall.Errno(0xa7)
+       EROFS           = syscall.Errno(0x1e)
+       ESHUTDOWN       = syscall.Errno(0x8f)
+       ESOCKTNOSUPPORT = syscall.Errno(0x79)
+       ESPIPE          = syscall.Errno(0x1d)
+       ESRCH           = syscall.Errno(0x3)
+       ESRMNT          = syscall.Errno(0x45)
+       ESTALE          = syscall.Errno(0x97)
+       ESTRPIPE        = syscall.Errno(0x5c)
+       ETIME           = syscall.Errno(0x3e)
+       ETIMEDOUT       = syscall.Errno(0x91)
+       ETOOMANYREFS    = syscall.Errno(0x90)
+       ETXTBSY         = syscall.Errno(0x1a)
+       EUCLEAN         = syscall.Errno(0x87)
+       EUNATCH         = syscall.Errno(0x2a)
+       EUSERS          = syscall.Errno(0x5e)
+       EWOULDBLOCK     = syscall.Errno(0xb)
+       EXDEV           = syscall.Errno(0x12)
+       EXFULL          = syscall.Errno(0x34)
+)
+
+// Signals
+const (
+       SIGABRT   = syscall.Signal(0x6)
+       SIGALRM   = syscall.Signal(0xe)
+       SIGBUS    = syscall.Signal(0xa)
+       SIGCHLD   = syscall.Signal(0x12)
+       SIGCLD    = syscall.Signal(0x12)
+       SIGCONT   = syscall.Signal(0x19)
+       SIGEMT    = syscall.Signal(0x7)
+       SIGFPE    = syscall.Signal(0x8)
+       SIGHUP    = syscall.Signal(0x1)
+       SIGILL    = syscall.Signal(0x4)
+       SIGINT    = syscall.Signal(0x2)
+       SIGIO     = syscall.Signal(0x16)
+       SIGIOT    = syscall.Signal(0x6)
+       SIGKILL   = syscall.Signal(0x9)
+       SIGPIPE   = syscall.Signal(0xd)
+       SIGPOLL   = syscall.Signal(0x16)
+       SIGPROF   = syscall.Signal(0x1d)
+       SIGPWR    = syscall.Signal(0x13)
+       SIGQUIT   = syscall.Signal(0x3)
+       SIGSEGV   = syscall.Signal(0xb)
+       SIGSTOP   = syscall.Signal(0x17)
+       SIGSYS    = syscall.Signal(0xc)
+       SIGTERM   = syscall.Signal(0xf)
+       SIGTRAP   = syscall.Signal(0x5)
+       SIGTSTP   = syscall.Signal(0x18)
+       SIGTTIN   = syscall.Signal(0x1a)
+       SIGTTOU   = syscall.Signal(0x1b)
+       SIGURG    = syscall.Signal(0x15)
+       SIGUSR1   = syscall.Signal(0x10)
+       SIGUSR2   = syscall.Signal(0x11)
+       SIGVTALRM = syscall.Signal(0x1c)
+       SIGWINCH  = syscall.Signal(0x14)
+       SIGXCPU   = syscall.Signal(0x1e)
+       SIGXFSZ   = syscall.Signal(0x1f)
+)
+
+// 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:    "no such device or address",
+       7:    "argument list too long",
+       8:    "exec format error",
+       9:    "bad file descriptor",
+       10:   "no child processes",
+       11:   "resource temporarily unavailable",
+       12:   "cannot allocate memory",
+       13:   "permission denied",
+       14:   "bad address",
+       15:   "block device required",
+       16:   "device or resource busy",
+       17:   "file exists",
+       18:   "invalid cross-device link",
+       19:   "no such 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:   "numerical result out of range",
+       35:   "no message of desired type",
+       36:   "identifier removed",
+       37:   "channel number out of range",
+       38:   "level 2 not synchronized",
+       39:   "level 3 halted",
+       40:   "level 3 reset",
+       41:   "link number out of range",
+       42:   "protocol driver not attached",
+       43:   "no CSI structure available",
+       44:   "level 2 halted",
+       45:   "resource deadlock avoided",
+       46:   "no locks available",
+       50:   "invalid exchange",
+       51:   "invalid request descriptor",
+       52:   "exchange full",
+       53:   "no anode",
+       54:   "invalid request code",
+       55:   "invalid slot",
+       56:   "file locking deadlock error",
+       59:   "bad font file format",
+       60:   "device not a stream",
+       61:   "no data available",
+       62:   "timer expired",
+       63:   "out of streams resources",
+       64:   "machine is not on the network",
+       65:   "package not installed",
+       66:   "object is remote",
+       67:   "link has been severed",
+       68:   "advertise error",
+       69:   "srmount error",
+       70:   "communication error on send",
+       71:   "protocol error",
+       73:   "RFS specific error",
+       74:   "multihop attempted",
+       77:   "bad message",
+       78:   "file name too long",
+       79:   "value too large for defined data type",
+       80:   "name not unique on network",
+       81:   "file descriptor in bad state",
+       82:   "remote address changed",
+       83:   "can not access a needed shared library",
+       84:   "accessing a corrupted shared library",
+       85:   ".lib section in a.out corrupted",
+       86:   "attempting to link in too many shared libraries",
+       87:   "cannot exec a shared library directly",
+       88:   "invalid or incomplete multibyte or wide character",
+       89:   "function not implemented",
+       90:   "too many levels of symbolic links",
+       91:   "interrupted system call should be restarted",
+       92:   "streams pipe error",
+       93:   "directory not empty",
+       94:   "too many users",
+       95:   "socket operation on non-socket",
+       96:   "destination address required",
+       97:   "message too long",
+       98:   "protocol wrong type for socket",
+       99:   "protocol not available",
+       120:  "protocol not supported",
+       121:  "socket type not supported",
+       122:  "operation not supported",
+       123:  "protocol family not supported",
+       124:  "address family not supported by protocol",
+       125:  "address already in use",
+       126:  "cannot assign requested address",
+       127:  "network is down",
+       128:  "network is unreachable",
+       129:  "network dropped connection on reset",
+       130:  "software caused connection abort",
+       131:  "connection reset by peer",
+       132:  "no buffer space available",
+       133:  "transport endpoint is already connected",
+       134:  "transport endpoint is not connected",
+       135:  "structure needs cleaning",
+       137:  "not a XENIX named type file",
+       138:  "no XENIX semaphores available",
+       139:  "is a named type file",
+       140:  "remote I/O error",
+       141:  "unknown error 141",
+       142:  "unknown error 142",
+       143:  "cannot send after transport endpoint shutdown",
+       144:  "too many references: cannot splice",
+       145:  "connection timed out",
+       146:  "connection refused",
+       147:  "host is down",
+       148:  "no route to host",
+       149:  "operation already in progress",
+       150:  "operation now in progress",
+       151:  "stale file handle",
+       158:  "operation canceled",
+       159:  "no medium found",
+       160:  "wrong medium type",
+       161:  "required key not available",
+       162:  "key has expired",
+       163:  "key has been revoked",
+       164:  "key was rejected by service",
+       165:  "owner died",
+       166:  "state not recoverable",
+       167:  "operation not possible due to RF-kill",
+       168:  "memory page has hardware error",
+       1133: "disk quota exceeded",
+}
+
+// Signal table
+var signals = [...]string{
+       1:  "hangup",
+       2:  "interrupt",
+       3:  "quit",
+       4:  "illegal instruction",
+       5:  "trace/breakpoint trap",
+       6:  "aborted",
+       7:  "EMT trap",
+       8:  "floating point exception",
+       9:  "killed",
+       10: "bus error",
+       11: "segmentation fault",
+       12: "bad system call",
+       13: "broken pipe",
+       14: "alarm clock",
+       15: "terminated",
+       16: "user defined signal 1",
+       17: "user defined signal 2",
+       18: "child exited",
+       19: "power failure",
+       20: "window changed",
+       21: "urgent I/O condition",
+       22: "I/O possible",
+       23: "stopped (signal)",
+       24: "stopped",
+       25: "continued",
+       26: "stopped (tty input)",
+       27: "stopped (tty output)",
+       28: "virtual timer expired",
+       29: "profiling timer expired",
+       30: "CPU time limit exceeded",
+       31: "file size limit exceeded",
+}
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go
new file mode 100644 (file)
index 0000000..e5debb6
--- /dev/null
@@ -0,0 +1,1916 @@
+// mkerrors.sh
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build mips64le,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- _const.go
+
+package unix
+
+import "syscall"
+
+const (
+       AF_ALG                           = 0x26
+       AF_APPLETALK                     = 0x5
+       AF_ASH                           = 0x12
+       AF_ATMPVC                        = 0x8
+       AF_ATMSVC                        = 0x14
+       AF_AX25                          = 0x3
+       AF_BLUETOOTH                     = 0x1f
+       AF_BRIDGE                        = 0x7
+       AF_CAIF                          = 0x25
+       AF_CAN                           = 0x1d
+       AF_DECnet                        = 0xc
+       AF_ECONET                        = 0x13
+       AF_FILE                          = 0x1
+       AF_IB                            = 0x1b
+       AF_IEEE802154                    = 0x24
+       AF_INET                          = 0x2
+       AF_INET6                         = 0xa
+       AF_IPX                           = 0x4
+       AF_IRDA                          = 0x17
+       AF_ISDN                          = 0x22
+       AF_IUCV                          = 0x20
+       AF_KEY                           = 0xf
+       AF_LLC                           = 0x1a
+       AF_LOCAL                         = 0x1
+       AF_MAX                           = 0x29
+       AF_MPLS                          = 0x1c
+       AF_NETBEUI                       = 0xd
+       AF_NETLINK                       = 0x10
+       AF_NETROM                        = 0x6
+       AF_NFC                           = 0x27
+       AF_PACKET                        = 0x11
+       AF_PHONET                        = 0x23
+       AF_PPPOX                         = 0x18
+       AF_RDS                           = 0x15
+       AF_ROSE                          = 0xb
+       AF_ROUTE                         = 0x10
+       AF_RXRPC                         = 0x21
+       AF_SECURITY                      = 0xe
+       AF_SNA                           = 0x16
+       AF_TIPC                          = 0x1e
+       AF_UNIX                          = 0x1
+       AF_UNSPEC                        = 0x0
+       AF_VSOCK                         = 0x28
+       AF_WANPIPE                       = 0x19
+       AF_X25                           = 0x9
+       ARPHRD_6LOWPAN                   = 0x339
+       ARPHRD_ADAPT                     = 0x108
+       ARPHRD_APPLETLK                  = 0x8
+       ARPHRD_ARCNET                    = 0x7
+       ARPHRD_ASH                       = 0x30d
+       ARPHRD_ATM                       = 0x13
+       ARPHRD_AX25                      = 0x3
+       ARPHRD_BIF                       = 0x307
+       ARPHRD_CAIF                      = 0x336
+       ARPHRD_CAN                       = 0x118
+       ARPHRD_CHAOS                     = 0x5
+       ARPHRD_CISCO                     = 0x201
+       ARPHRD_CSLIP                     = 0x101
+       ARPHRD_CSLIP6                    = 0x103
+       ARPHRD_DDCMP                     = 0x205
+       ARPHRD_DLCI                      = 0xf
+       ARPHRD_ECONET                    = 0x30e
+       ARPHRD_EETHER                    = 0x2
+       ARPHRD_ETHER                     = 0x1
+       ARPHRD_EUI64                     = 0x1b
+       ARPHRD_FCAL                      = 0x311
+       ARPHRD_FCFABRIC                  = 0x313
+       ARPHRD_FCPL                      = 0x312
+       ARPHRD_FCPP                      = 0x310
+       ARPHRD_FDDI                      = 0x306
+       ARPHRD_FRAD                      = 0x302
+       ARPHRD_HDLC                      = 0x201
+       ARPHRD_HIPPI                     = 0x30c
+       ARPHRD_HWX25                     = 0x110
+       ARPHRD_IEEE1394                  = 0x18
+       ARPHRD_IEEE802                   = 0x6
+       ARPHRD_IEEE80211                 = 0x321
+       ARPHRD_IEEE80211_PRISM           = 0x322
+       ARPHRD_IEEE80211_RADIOTAP        = 0x323
+       ARPHRD_IEEE802154                = 0x324
+       ARPHRD_IEEE802154_MONITOR        = 0x325
+       ARPHRD_IEEE802_TR                = 0x320
+       ARPHRD_INFINIBAND                = 0x20
+       ARPHRD_IP6GRE                    = 0x337
+       ARPHRD_IPDDP                     = 0x309
+       ARPHRD_IPGRE                     = 0x30a
+       ARPHRD_IRDA                      = 0x30f
+       ARPHRD_LAPB                      = 0x204
+       ARPHRD_LOCALTLK                  = 0x305
+       ARPHRD_LOOPBACK                  = 0x304
+       ARPHRD_METRICOM                  = 0x17
+       ARPHRD_NETLINK                   = 0x338
+       ARPHRD_NETROM                    = 0x0
+       ARPHRD_NONE                      = 0xfffe
+       ARPHRD_PHONET                    = 0x334
+       ARPHRD_PHONET_PIPE               = 0x335
+       ARPHRD_PIMREG                    = 0x30b
+       ARPHRD_PPP                       = 0x200
+       ARPHRD_PRONET                    = 0x4
+       ARPHRD_RAWHDLC                   = 0x206
+       ARPHRD_ROSE                      = 0x10e
+       ARPHRD_RSRVD                     = 0x104
+       ARPHRD_SIT                       = 0x308
+       ARPHRD_SKIP                      = 0x303
+       ARPHRD_SLIP                      = 0x100
+       ARPHRD_SLIP6                     = 0x102
+       ARPHRD_TUNNEL                    = 0x300
+       ARPHRD_TUNNEL6                   = 0x301
+       ARPHRD_VOID                      = 0xffff
+       ARPHRD_X25                       = 0x10f
+       B0                               = 0x0
+       B1000000                         = 0x1008
+       B110                             = 0x3
+       B115200                          = 0x1002
+       B1152000                         = 0x1009
+       B1200                            = 0x9
+       B134                             = 0x4
+       B150                             = 0x5
+       B1500000                         = 0x100a
+       B1800                            = 0xa
+       B19200                           = 0xe
+       B200                             = 0x6
+       B2000000                         = 0x100b
+       B230400                          = 0x1003
+       B2400                            = 0xb
+       B2500000                         = 0x100c
+       B300                             = 0x7
+       B3000000                         = 0x100d
+       B3500000                         = 0x100e
+       B38400                           = 0xf
+       B4000000                         = 0x100f
+       B460800                          = 0x1004
+       B4800                            = 0xc
+       B50                              = 0x1
+       B500000                          = 0x1005
+       B57600                           = 0x1001
+       B576000                          = 0x1006
+       B600                             = 0x8
+       B75                              = 0x2
+       B921600                          = 0x1007
+       B9600                            = 0xd
+       BPF_A                            = 0x10
+       BPF_ABS                          = 0x20
+       BPF_ADD                          = 0x0
+       BPF_ALU                          = 0x4
+       BPF_AND                          = 0x50
+       BPF_B                            = 0x10
+       BPF_DIV                          = 0x30
+       BPF_H                            = 0x8
+       BPF_IMM                          = 0x0
+       BPF_IND                          = 0x40
+       BPF_JA                           = 0x0
+       BPF_JEQ                          = 0x10
+       BPF_JGE                          = 0x30
+       BPF_JGT                          = 0x20
+       BPF_JMP                          = 0x5
+       BPF_JSET                         = 0x40
+       BPF_K                            = 0x0
+       BPF_LD                           = 0x0
+       BPF_LDX                          = 0x1
+       BPF_LEN                          = 0x80
+       BPF_LL_OFF                       = -0x200000
+       BPF_LSH                          = 0x60
+       BPF_MAJOR_VERSION                = 0x1
+       BPF_MAXINSNS                     = 0x1000
+       BPF_MEM                          = 0x60
+       BPF_MEMWORDS                     = 0x10
+       BPF_MINOR_VERSION                = 0x1
+       BPF_MISC                         = 0x7
+       BPF_MOD                          = 0x90
+       BPF_MSH                          = 0xa0
+       BPF_MUL                          = 0x20
+       BPF_NEG                          = 0x80
+       BPF_NET_OFF                      = -0x100000
+       BPF_OR                           = 0x40
+       BPF_RET                          = 0x6
+       BPF_RSH                          = 0x70
+       BPF_ST                           = 0x2
+       BPF_STX                          = 0x3
+       BPF_SUB                          = 0x10
+       BPF_TAX                          = 0x0
+       BPF_TXA                          = 0x80
+       BPF_W                            = 0x0
+       BPF_X                            = 0x8
+       BPF_XOR                          = 0xa0
+       BRKINT                           = 0x2
+       CFLUSH                           = 0xf
+       CLOCAL                           = 0x800
+       CLOCK_BOOTTIME                   = 0x7
+       CLOCK_BOOTTIME_ALARM             = 0x9
+       CLOCK_DEFAULT                    = 0x0
+       CLOCK_EXT                        = 0x1
+       CLOCK_INT                        = 0x2
+       CLOCK_MONOTONIC                  = 0x1
+       CLOCK_MONOTONIC_COARSE           = 0x6
+       CLOCK_MONOTONIC_RAW              = 0x4
+       CLOCK_PROCESS_CPUTIME_ID         = 0x2
+       CLOCK_REALTIME                   = 0x0
+       CLOCK_REALTIME_ALARM             = 0x8
+       CLOCK_REALTIME_COARSE            = 0x5
+       CLOCK_TAI                        = 0xb
+       CLOCK_THREAD_CPUTIME_ID          = 0x3
+       CLOCK_TXFROMRX                   = 0x4
+       CLOCK_TXINT                      = 0x3
+       CLONE_CHILD_CLEARTID             = 0x200000
+       CLONE_CHILD_SETTID               = 0x1000000
+       CLONE_DETACHED                   = 0x400000
+       CLONE_FILES                      = 0x400
+       CLONE_FS                         = 0x200
+       CLONE_IO                         = 0x80000000
+       CLONE_NEWIPC                     = 0x8000000
+       CLONE_NEWNET                     = 0x40000000
+       CLONE_NEWNS                      = 0x20000
+       CLONE_NEWPID                     = 0x20000000
+       CLONE_NEWUSER                    = 0x10000000
+       CLONE_NEWUTS                     = 0x4000000
+       CLONE_PARENT                     = 0x8000
+       CLONE_PARENT_SETTID              = 0x100000
+       CLONE_PTRACE                     = 0x2000
+       CLONE_SETTLS                     = 0x80000
+       CLONE_SIGHAND                    = 0x800
+       CLONE_SYSVSEM                    = 0x40000
+       CLONE_THREAD                     = 0x10000
+       CLONE_UNTRACED                   = 0x800000
+       CLONE_VFORK                      = 0x4000
+       CLONE_VM                         = 0x100
+       CREAD                            = 0x80
+       CS5                              = 0x0
+       CS6                              = 0x10
+       CS7                              = 0x20
+       CS8                              = 0x30
+       CSIGNAL                          = 0xff
+       CSIZE                            = 0x30
+       CSTART                           = 0x11
+       CSTATUS                          = 0x0
+       CSTOP                            = 0x13
+       CSTOPB                           = 0x40
+       CSUSP                            = 0x1a
+       DT_BLK                           = 0x6
+       DT_CHR                           = 0x2
+       DT_DIR                           = 0x4
+       DT_FIFO                          = 0x1
+       DT_LNK                           = 0xa
+       DT_REG                           = 0x8
+       DT_SOCK                          = 0xc
+       DT_UNKNOWN                       = 0x0
+       DT_WHT                           = 0xe
+       ECHO                             = 0x8
+       ECHOCTL                          = 0x200
+       ECHOE                            = 0x10
+       ECHOK                            = 0x20
+       ECHOKE                           = 0x800
+       ECHONL                           = 0x40
+       ECHOPRT                          = 0x400
+       ENCODING_DEFAULT                 = 0x0
+       ENCODING_FM_MARK                 = 0x3
+       ENCODING_FM_SPACE                = 0x4
+       ENCODING_MANCHESTER              = 0x5
+       ENCODING_NRZ                     = 0x1
+       ENCODING_NRZI                    = 0x2
+       EPOLLERR                         = 0x8
+       EPOLLET                          = 0x80000000
+       EPOLLHUP                         = 0x10
+       EPOLLIN                          = 0x1
+       EPOLLMSG                         = 0x400
+       EPOLLONESHOT                     = 0x40000000
+       EPOLLOUT                         = 0x4
+       EPOLLPRI                         = 0x2
+       EPOLLRDBAND                      = 0x80
+       EPOLLRDHUP                       = 0x2000
+       EPOLLRDNORM                      = 0x40
+       EPOLLWAKEUP                      = 0x20000000
+       EPOLLWRBAND                      = 0x200
+       EPOLLWRNORM                      = 0x100
+       EPOLL_CLOEXEC                    = 0x80000
+       EPOLL_CTL_ADD                    = 0x1
+       EPOLL_CTL_DEL                    = 0x2
+       EPOLL_CTL_MOD                    = 0x3
+       ETH_P_1588                       = 0x88f7
+       ETH_P_8021AD                     = 0x88a8
+       ETH_P_8021AH                     = 0x88e7
+       ETH_P_8021Q                      = 0x8100
+       ETH_P_80221                      = 0x8917
+       ETH_P_802_2                      = 0x4
+       ETH_P_802_3                      = 0x1
+       ETH_P_802_3_MIN                  = 0x600
+       ETH_P_802_EX1                    = 0x88b5
+       ETH_P_AARP                       = 0x80f3
+       ETH_P_AF_IUCV                    = 0xfbfb
+       ETH_P_ALL                        = 0x3
+       ETH_P_AOE                        = 0x88a2
+       ETH_P_ARCNET                     = 0x1a
+       ETH_P_ARP                        = 0x806
+       ETH_P_ATALK                      = 0x809b
+       ETH_P_ATMFATE                    = 0x8884
+       ETH_P_ATMMPOA                    = 0x884c
+       ETH_P_AX25                       = 0x2
+       ETH_P_BATMAN                     = 0x4305
+       ETH_P_BPQ                        = 0x8ff
+       ETH_P_CAIF                       = 0xf7
+       ETH_P_CAN                        = 0xc
+       ETH_P_CANFD                      = 0xd
+       ETH_P_CONTROL                    = 0x16
+       ETH_P_CUST                       = 0x6006
+       ETH_P_DDCMP                      = 0x6
+       ETH_P_DEC                        = 0x6000
+       ETH_P_DIAG                       = 0x6005
+       ETH_P_DNA_DL                     = 0x6001
+       ETH_P_DNA_RC                     = 0x6002
+       ETH_P_DNA_RT                     = 0x6003
+       ETH_P_DSA                        = 0x1b
+       ETH_P_ECONET                     = 0x18
+       ETH_P_EDSA                       = 0xdada
+       ETH_P_FCOE                       = 0x8906
+       ETH_P_FIP                        = 0x8914
+       ETH_P_HDLC                       = 0x19
+       ETH_P_IEEE802154                 = 0xf6
+       ETH_P_IEEEPUP                    = 0xa00
+       ETH_P_IEEEPUPAT                  = 0xa01
+       ETH_P_IP                         = 0x800
+       ETH_P_IPV6                       = 0x86dd
+       ETH_P_IPX                        = 0x8137
+       ETH_P_IRDA                       = 0x17
+       ETH_P_LAT                        = 0x6004
+       ETH_P_LINK_CTL                   = 0x886c
+       ETH_P_LOCALTALK                  = 0x9
+       ETH_P_LOOP                       = 0x60
+       ETH_P_LOOPBACK                   = 0x9000
+       ETH_P_MOBITEX                    = 0x15
+       ETH_P_MPLS_MC                    = 0x8848
+       ETH_P_MPLS_UC                    = 0x8847
+       ETH_P_MVRP                       = 0x88f5
+       ETH_P_PAE                        = 0x888e
+       ETH_P_PAUSE                      = 0x8808
+       ETH_P_PHONET                     = 0xf5
+       ETH_P_PPPTALK                    = 0x10
+       ETH_P_PPP_DISC                   = 0x8863
+       ETH_P_PPP_MP                     = 0x8
+       ETH_P_PPP_SES                    = 0x8864
+       ETH_P_PRP                        = 0x88fb
+       ETH_P_PUP                        = 0x200
+       ETH_P_PUPAT                      = 0x201
+       ETH_P_QINQ1                      = 0x9100
+       ETH_P_QINQ2                      = 0x9200
+       ETH_P_QINQ3                      = 0x9300
+       ETH_P_RARP                       = 0x8035
+       ETH_P_SCA                        = 0x6007
+       ETH_P_SLOW                       = 0x8809
+       ETH_P_SNAP                       = 0x5
+       ETH_P_TDLS                       = 0x890d
+       ETH_P_TEB                        = 0x6558
+       ETH_P_TIPC                       = 0x88ca
+       ETH_P_TRAILER                    = 0x1c
+       ETH_P_TR_802_2                   = 0x11
+       ETH_P_TSN                        = 0x22f0
+       ETH_P_WAN_PPP                    = 0x7
+       ETH_P_WCCP                       = 0x883e
+       ETH_P_X25                        = 0x805
+       ETH_P_XDSA                       = 0xf8
+       EXTA                             = 0xe
+       EXTB                             = 0xf
+       EXTPROC                          = 0x10000
+       FD_CLOEXEC                       = 0x1
+       FD_SETSIZE                       = 0x400
+       FLUSHO                           = 0x2000
+       F_DUPFD                          = 0x0
+       F_DUPFD_CLOEXEC                  = 0x406
+       F_EXLCK                          = 0x4
+       F_GETFD                          = 0x1
+       F_GETFL                          = 0x3
+       F_GETLEASE                       = 0x401
+       F_GETLK                          = 0xe
+       F_GETLK64                        = 0xe
+       F_GETOWN                         = 0x17
+       F_GETOWN_EX                      = 0x10
+       F_GETPIPE_SZ                     = 0x408
+       F_GETSIG                         = 0xb
+       F_LOCK                           = 0x1
+       F_NOTIFY                         = 0x402
+       F_OFD_GETLK                      = 0x24
+       F_OFD_SETLK                      = 0x25
+       F_OFD_SETLKW                     = 0x26
+       F_OK                             = 0x0
+       F_RDLCK                          = 0x0
+       F_SETFD                          = 0x2
+       F_SETFL                          = 0x4
+       F_SETLEASE                       = 0x400
+       F_SETLK                          = 0x6
+       F_SETLK64                        = 0x6
+       F_SETLKW                         = 0x7
+       F_SETLKW64                       = 0x7
+       F_SETOWN                         = 0x18
+       F_SETOWN_EX                      = 0xf
+       F_SETPIPE_SZ                     = 0x407
+       F_SETSIG                         = 0xa
+       F_SHLCK                          = 0x8
+       F_TEST                           = 0x3
+       F_TLOCK                          = 0x2
+       F_ULOCK                          = 0x0
+       F_UNLCK                          = 0x2
+       F_WRLCK                          = 0x1
+       HUPCL                            = 0x400
+       ICANON                           = 0x2
+       ICMPV6_FILTER                    = 0x1
+       ICRNL                            = 0x100
+       IEXTEN                           = 0x100
+       IFA_F_DADFAILED                  = 0x8
+       IFA_F_DEPRECATED                 = 0x20
+       IFA_F_HOMEADDRESS                = 0x10
+       IFA_F_MANAGETEMPADDR             = 0x100
+       IFA_F_MCAUTOJOIN                 = 0x400
+       IFA_F_NODAD                      = 0x2
+       IFA_F_NOPREFIXROUTE              = 0x200
+       IFA_F_OPTIMISTIC                 = 0x4
+       IFA_F_PERMANENT                  = 0x80
+       IFA_F_SECONDARY                  = 0x1
+       IFA_F_STABLE_PRIVACY             = 0x800
+       IFA_F_TEMPORARY                  = 0x1
+       IFA_F_TENTATIVE                  = 0x40
+       IFA_MAX                          = 0x8
+       IFF_ALLMULTI                     = 0x200
+       IFF_ATTACH_QUEUE                 = 0x200
+       IFF_AUTOMEDIA                    = 0x4000
+       IFF_BROADCAST                    = 0x2
+       IFF_DEBUG                        = 0x4
+       IFF_DETACH_QUEUE                 = 0x400
+       IFF_DORMANT                      = 0x20000
+       IFF_DYNAMIC                      = 0x8000
+       IFF_ECHO                         = 0x40000
+       IFF_LOOPBACK                     = 0x8
+       IFF_LOWER_UP                     = 0x10000
+       IFF_MASTER                       = 0x400
+       IFF_MULTICAST                    = 0x1000
+       IFF_MULTI_QUEUE                  = 0x100
+       IFF_NOARP                        = 0x80
+       IFF_NOFILTER                     = 0x1000
+       IFF_NOTRAILERS                   = 0x20
+       IFF_NO_PI                        = 0x1000
+       IFF_ONE_QUEUE                    = 0x2000
+       IFF_PERSIST                      = 0x800
+       IFF_POINTOPOINT                  = 0x10
+       IFF_PORTSEL                      = 0x2000
+       IFF_PROMISC                      = 0x100
+       IFF_RUNNING                      = 0x40
+       IFF_SLAVE                        = 0x800
+       IFF_TAP                          = 0x2
+       IFF_TUN                          = 0x1
+       IFF_TUN_EXCL                     = 0x8000
+       IFF_UP                           = 0x1
+       IFF_VNET_HDR                     = 0x4000
+       IFF_VOLATILE                     = 0x70c5a
+       IFNAMSIZ                         = 0x10
+       IGNBRK                           = 0x1
+       IGNCR                            = 0x80
+       IGNPAR                           = 0x4
+       IMAXBEL                          = 0x2000
+       INLCR                            = 0x40
+       INPCK                            = 0x10
+       IN_ACCESS                        = 0x1
+       IN_ALL_EVENTS                    = 0xfff
+       IN_ATTRIB                        = 0x4
+       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_CLOEXEC                       = 0x80000
+       IN_CLOSE                         = 0x18
+       IN_CLOSE_NOWRITE                 = 0x10
+       IN_CLOSE_WRITE                   = 0x8
+       IN_CREATE                        = 0x100
+       IN_DELETE                        = 0x200
+       IN_DELETE_SELF                   = 0x400
+       IN_DONT_FOLLOW                   = 0x2000000
+       IN_EXCL_UNLINK                   = 0x4000000
+       IN_IGNORED                       = 0x8000
+       IN_ISDIR                         = 0x40000000
+       IN_LOOPBACKNET                   = 0x7f
+       IN_MASK_ADD                      = 0x20000000
+       IN_MODIFY                        = 0x2
+       IN_MOVE                          = 0xc0
+       IN_MOVED_FROM                    = 0x40
+       IN_MOVED_TO                      = 0x80
+       IN_MOVE_SELF                     = 0x800
+       IN_NONBLOCK                      = 0x80
+       IN_ONESHOT                       = 0x80000000
+       IN_ONLYDIR                       = 0x1000000
+       IN_OPEN                          = 0x20
+       IN_Q_OVERFLOW                    = 0x4000
+       IN_UNMOUNT                       = 0x2000
+       IPPROTO_AH                       = 0x33
+       IPPROTO_BEETPH                   = 0x5e
+       IPPROTO_COMP                     = 0x6c
+       IPPROTO_DCCP                     = 0x21
+       IPPROTO_DSTOPTS                  = 0x3c
+       IPPROTO_EGP                      = 0x8
+       IPPROTO_ENCAP                    = 0x62
+       IPPROTO_ESP                      = 0x32
+       IPPROTO_FRAGMENT                 = 0x2c
+       IPPROTO_GRE                      = 0x2f
+       IPPROTO_HOPOPTS                  = 0x0
+       IPPROTO_ICMP                     = 0x1
+       IPPROTO_ICMPV6                   = 0x3a
+       IPPROTO_IDP                      = 0x16
+       IPPROTO_IGMP                     = 0x2
+       IPPROTO_IP                       = 0x0
+       IPPROTO_IPIP                     = 0x4
+       IPPROTO_IPV6                     = 0x29
+       IPPROTO_MH                       = 0x87
+       IPPROTO_MTP                      = 0x5c
+       IPPROTO_NONE                     = 0x3b
+       IPPROTO_PIM                      = 0x67
+       IPPROTO_PUP                      = 0xc
+       IPPROTO_RAW                      = 0xff
+       IPPROTO_ROUTING                  = 0x2b
+       IPPROTO_RSVP                     = 0x2e
+       IPPROTO_SCTP                     = 0x84
+       IPPROTO_TCP                      = 0x6
+       IPPROTO_TP                       = 0x1d
+       IPPROTO_UDP                      = 0x11
+       IPPROTO_UDPLITE                  = 0x88
+       IPV6_2292DSTOPTS                 = 0x4
+       IPV6_2292HOPLIMIT                = 0x8
+       IPV6_2292HOPOPTS                 = 0x3
+       IPV6_2292PKTINFO                 = 0x2
+       IPV6_2292PKTOPTIONS              = 0x6
+       IPV6_2292RTHDR                   = 0x5
+       IPV6_ADDRFORM                    = 0x1
+       IPV6_ADD_MEMBERSHIP              = 0x14
+       IPV6_AUTHHDR                     = 0xa
+       IPV6_CHECKSUM                    = 0x7
+       IPV6_DONTFRAG                    = 0x3e
+       IPV6_DROP_MEMBERSHIP             = 0x15
+       IPV6_DSTOPTS                     = 0x3b
+       IPV6_HOPLIMIT                    = 0x34
+       IPV6_HOPOPTS                     = 0x36
+       IPV6_IPSEC_POLICY                = 0x22
+       IPV6_JOIN_ANYCAST                = 0x1b
+       IPV6_JOIN_GROUP                  = 0x14
+       IPV6_LEAVE_ANYCAST               = 0x1c
+       IPV6_LEAVE_GROUP                 = 0x15
+       IPV6_MTU                         = 0x18
+       IPV6_MTU_DISCOVER                = 0x17
+       IPV6_MULTICAST_HOPS              = 0x12
+       IPV6_MULTICAST_IF                = 0x11
+       IPV6_MULTICAST_LOOP              = 0x13
+       IPV6_NEXTHOP                     = 0x9
+       IPV6_PATHMTU                     = 0x3d
+       IPV6_PKTINFO                     = 0x32
+       IPV6_PMTUDISC_DO                 = 0x2
+       IPV6_PMTUDISC_DONT               = 0x0
+       IPV6_PMTUDISC_INTERFACE          = 0x4
+       IPV6_PMTUDISC_OMIT               = 0x5
+       IPV6_PMTUDISC_PROBE              = 0x3
+       IPV6_PMTUDISC_WANT               = 0x1
+       IPV6_RECVDSTOPTS                 = 0x3a
+       IPV6_RECVERR                     = 0x19
+       IPV6_RECVHOPLIMIT                = 0x33
+       IPV6_RECVHOPOPTS                 = 0x35
+       IPV6_RECVPATHMTU                 = 0x3c
+       IPV6_RECVPKTINFO                 = 0x31
+       IPV6_RECVRTHDR                   = 0x38
+       IPV6_RECVTCLASS                  = 0x42
+       IPV6_ROUTER_ALERT                = 0x16
+       IPV6_RTHDR                       = 0x39
+       IPV6_RTHDRDSTOPTS                = 0x37
+       IPV6_RTHDR_LOOSE                 = 0x0
+       IPV6_RTHDR_STRICT                = 0x1
+       IPV6_RTHDR_TYPE_0                = 0x0
+       IPV6_RXDSTOPTS                   = 0x3b
+       IPV6_RXHOPOPTS                   = 0x36
+       IPV6_TCLASS                      = 0x43
+       IPV6_UNICAST_HOPS                = 0x10
+       IPV6_V6ONLY                      = 0x1a
+       IPV6_XFRM_POLICY                 = 0x23
+       IP_ADD_MEMBERSHIP                = 0x23
+       IP_ADD_SOURCE_MEMBERSHIP         = 0x27
+       IP_BLOCK_SOURCE                  = 0x26
+       IP_CHECKSUM                      = 0x17
+       IP_DEFAULT_MULTICAST_LOOP        = 0x1
+       IP_DEFAULT_MULTICAST_TTL         = 0x1
+       IP_DF                            = 0x4000
+       IP_DROP_MEMBERSHIP               = 0x24
+       IP_DROP_SOURCE_MEMBERSHIP        = 0x28
+       IP_FREEBIND                      = 0xf
+       IP_HDRINCL                       = 0x3
+       IP_IPSEC_POLICY                  = 0x10
+       IP_MAXPACKET                     = 0xffff
+       IP_MAX_MEMBERSHIPS               = 0x14
+       IP_MF                            = 0x2000
+       IP_MINTTL                        = 0x15
+       IP_MSFILTER                      = 0x29
+       IP_MSS                           = 0x240
+       IP_MTU                           = 0xe
+       IP_MTU_DISCOVER                  = 0xa
+       IP_MULTICAST_ALL                 = 0x31
+       IP_MULTICAST_IF                  = 0x20
+       IP_MULTICAST_LOOP                = 0x22
+       IP_MULTICAST_TTL                 = 0x21
+       IP_NODEFRAG                      = 0x16
+       IP_OFFMASK                       = 0x1fff
+       IP_OPTIONS                       = 0x4
+       IP_ORIGDSTADDR                   = 0x14
+       IP_PASSSEC                       = 0x12
+       IP_PKTINFO                       = 0x8
+       IP_PKTOPTIONS                    = 0x9
+       IP_PMTUDISC                      = 0xa
+       IP_PMTUDISC_DO                   = 0x2
+       IP_PMTUDISC_DONT                 = 0x0
+       IP_PMTUDISC_INTERFACE            = 0x4
+       IP_PMTUDISC_OMIT                 = 0x5
+       IP_PMTUDISC_PROBE                = 0x3
+       IP_PMTUDISC_WANT                 = 0x1
+       IP_RECVERR                       = 0xb
+       IP_RECVOPTS                      = 0x6
+       IP_RECVORIGDSTADDR               = 0x14
+       IP_RECVRETOPTS                   = 0x7
+       IP_RECVTOS                       = 0xd
+       IP_RECVTTL                       = 0xc
+       IP_RETOPTS                       = 0x7
+       IP_RF                            = 0x8000
+       IP_ROUTER_ALERT                  = 0x5
+       IP_TOS                           = 0x1
+       IP_TRANSPARENT                   = 0x13
+       IP_TTL                           = 0x2
+       IP_UNBLOCK_SOURCE                = 0x25
+       IP_UNICAST_IF                    = 0x32
+       IP_XFRM_POLICY                   = 0x11
+       ISIG                             = 0x1
+       ISTRIP                           = 0x20
+       IUTF8                            = 0x4000
+       IXANY                            = 0x800
+       IXOFF                            = 0x1000
+       IXON                             = 0x400
+       LINUX_REBOOT_CMD_CAD_OFF         = 0x0
+       LINUX_REBOOT_CMD_CAD_ON          = 0x89abcdef
+       LINUX_REBOOT_CMD_HALT            = 0xcdef0123
+       LINUX_REBOOT_CMD_KEXEC           = 0x45584543
+       LINUX_REBOOT_CMD_POWER_OFF       = 0x4321fedc
+       LINUX_REBOOT_CMD_RESTART         = 0x1234567
+       LINUX_REBOOT_CMD_RESTART2        = 0xa1b2c3d4
+       LINUX_REBOOT_CMD_SW_SUSPEND      = 0xd000fce2
+       LINUX_REBOOT_MAGIC1              = 0xfee1dead
+       LINUX_REBOOT_MAGIC2              = 0x28121969
+       LOCK_EX                          = 0x2
+       LOCK_NB                          = 0x4
+       LOCK_SH                          = 0x1
+       LOCK_UN                          = 0x8
+       MADV_DODUMP                      = 0x11
+       MADV_DOFORK                      = 0xb
+       MADV_DONTDUMP                    = 0x10
+       MADV_DONTFORK                    = 0xa
+       MADV_DONTNEED                    = 0x4
+       MADV_HUGEPAGE                    = 0xe
+       MADV_HWPOISON                    = 0x64
+       MADV_MERGEABLE                   = 0xc
+       MADV_NOHUGEPAGE                  = 0xf
+       MADV_NORMAL                      = 0x0
+       MADV_RANDOM                      = 0x1
+       MADV_REMOVE                      = 0x9
+       MADV_SEQUENTIAL                  = 0x2
+       MADV_UNMERGEABLE                 = 0xd
+       MADV_WILLNEED                    = 0x3
+       MAP_ANON                         = 0x800
+       MAP_ANONYMOUS                    = 0x800
+       MAP_DENYWRITE                    = 0x2000
+       MAP_EXECUTABLE                   = 0x4000
+       MAP_FILE                         = 0x0
+       MAP_FIXED                        = 0x10
+       MAP_GROWSDOWN                    = 0x1000
+       MAP_HUGETLB                      = 0x80000
+       MAP_HUGE_MASK                    = 0x3f
+       MAP_HUGE_SHIFT                   = 0x1a
+       MAP_LOCKED                       = 0x8000
+       MAP_NONBLOCK                     = 0x20000
+       MAP_NORESERVE                    = 0x400
+       MAP_POPULATE                     = 0x10000
+       MAP_PRIVATE                      = 0x2
+       MAP_RENAME                       = 0x800
+       MAP_SHARED                       = 0x1
+       MAP_STACK                        = 0x40000
+       MAP_TYPE                         = 0xf
+       MCL_CURRENT                      = 0x1
+       MCL_FUTURE                       = 0x2
+       MNT_DETACH                       = 0x2
+       MNT_EXPIRE                       = 0x4
+       MNT_FORCE                        = 0x1
+       MSG_CMSG_CLOEXEC                 = 0x40000000
+       MSG_CONFIRM                      = 0x800
+       MSG_CTRUNC                       = 0x8
+       MSG_DONTROUTE                    = 0x4
+       MSG_DONTWAIT                     = 0x40
+       MSG_EOR                          = 0x80
+       MSG_ERRQUEUE                     = 0x2000
+       MSG_FASTOPEN                     = 0x20000000
+       MSG_FIN                          = 0x200
+       MSG_MORE                         = 0x8000
+       MSG_NOSIGNAL                     = 0x4000
+       MSG_OOB                          = 0x1
+       MSG_PEEK                         = 0x2
+       MSG_PROXY                        = 0x10
+       MSG_RST                          = 0x1000
+       MSG_SYN                          = 0x400
+       MSG_TRUNC                        = 0x20
+       MSG_TRYHARD                      = 0x4
+       MSG_WAITALL                      = 0x100
+       MSG_WAITFORONE                   = 0x10000
+       MS_ACTIVE                        = 0x40000000
+       MS_ASYNC                         = 0x1
+       MS_BIND                          = 0x1000
+       MS_DIRSYNC                       = 0x80
+       MS_INVALIDATE                    = 0x2
+       MS_I_VERSION                     = 0x800000
+       MS_KERNMOUNT                     = 0x400000
+       MS_LAZYTIME                      = 0x2000000
+       MS_MANDLOCK                      = 0x40
+       MS_MGC_MSK                       = 0xffff0000
+       MS_MGC_VAL                       = 0xc0ed0000
+       MS_MOVE                          = 0x2000
+       MS_NOATIME                       = 0x400
+       MS_NODEV                         = 0x4
+       MS_NODIRATIME                    = 0x800
+       MS_NOEXEC                        = 0x8
+       MS_NOSUID                        = 0x2
+       MS_NOUSER                        = -0x80000000
+       MS_POSIXACL                      = 0x10000
+       MS_PRIVATE                       = 0x40000
+       MS_RDONLY                        = 0x1
+       MS_REC                           = 0x4000
+       MS_RELATIME                      = 0x200000
+       MS_REMOUNT                       = 0x20
+       MS_RMT_MASK                      = 0x2800051
+       MS_SHARED                        = 0x100000
+       MS_SILENT                        = 0x8000
+       MS_SLAVE                         = 0x80000
+       MS_STRICTATIME                   = 0x1000000
+       MS_SYNC                          = 0x4
+       MS_SYNCHRONOUS                   = 0x10
+       MS_UNBINDABLE                    = 0x20000
+       NAME_MAX                         = 0xff
+       NETLINK_ADD_MEMBERSHIP           = 0x1
+       NETLINK_AUDIT                    = 0x9
+       NETLINK_BROADCAST_ERROR          = 0x4
+       NETLINK_CAP_ACK                  = 0xa
+       NETLINK_CONNECTOR                = 0xb
+       NETLINK_CRYPTO                   = 0x15
+       NETLINK_DNRTMSG                  = 0xe
+       NETLINK_DROP_MEMBERSHIP          = 0x2
+       NETLINK_ECRYPTFS                 = 0x13
+       NETLINK_FIB_LOOKUP               = 0xa
+       NETLINK_FIREWALL                 = 0x3
+       NETLINK_GENERIC                  = 0x10
+       NETLINK_INET_DIAG                = 0x4
+       NETLINK_IP6_FW                   = 0xd
+       NETLINK_ISCSI                    = 0x8
+       NETLINK_KOBJECT_UEVENT           = 0xf
+       NETLINK_LISTEN_ALL_NSID          = 0x8
+       NETLINK_LIST_MEMBERSHIPS         = 0x9
+       NETLINK_NETFILTER                = 0xc
+       NETLINK_NFLOG                    = 0x5
+       NETLINK_NO_ENOBUFS               = 0x5
+       NETLINK_PKTINFO                  = 0x3
+       NETLINK_RDMA                     = 0x14
+       NETLINK_ROUTE                    = 0x0
+       NETLINK_RX_RING                  = 0x6
+       NETLINK_SCSITRANSPORT            = 0x12
+       NETLINK_SELINUX                  = 0x7
+       NETLINK_SOCK_DIAG                = 0x4
+       NETLINK_TX_RING                  = 0x7
+       NETLINK_UNUSED                   = 0x1
+       NETLINK_USERSOCK                 = 0x2
+       NETLINK_XFRM                     = 0x6
+       NLA_ALIGNTO                      = 0x4
+       NLA_F_NESTED                     = 0x8000
+       NLA_F_NET_BYTEORDER              = 0x4000
+       NLA_HDRLEN                       = 0x4
+       NLMSG_ALIGNTO                    = 0x4
+       NLMSG_DONE                       = 0x3
+       NLMSG_ERROR                      = 0x2
+       NLMSG_HDRLEN                     = 0x10
+       NLMSG_MIN_TYPE                   = 0x10
+       NLMSG_NOOP                       = 0x1
+       NLMSG_OVERRUN                    = 0x4
+       NLM_F_ACK                        = 0x4
+       NLM_F_APPEND                     = 0x800
+       NLM_F_ATOMIC                     = 0x400
+       NLM_F_CREATE                     = 0x400
+       NLM_F_DUMP                       = 0x300
+       NLM_F_DUMP_INTR                  = 0x10
+       NLM_F_ECHO                       = 0x8
+       NLM_F_EXCL                       = 0x200
+       NLM_F_MATCH                      = 0x200
+       NLM_F_MULTI                      = 0x2
+       NLM_F_REPLACE                    = 0x100
+       NLM_F_REQUEST                    = 0x1
+       NLM_F_ROOT                       = 0x100
+       NOFLSH                           = 0x80
+       OCRNL                            = 0x8
+       OFDEL                            = 0x80
+       OFILL                            = 0x40
+       ONLCR                            = 0x4
+       ONLRET                           = 0x20
+       ONOCR                            = 0x10
+       OPOST                            = 0x1
+       O_ACCMODE                        = 0x3
+       O_APPEND                         = 0x8
+       O_ASYNC                          = 0x1000
+       O_CLOEXEC                        = 0x80000
+       O_CREAT                          = 0x100
+       O_DIRECT                         = 0x8000
+       O_DIRECTORY                      = 0x10000
+       O_DSYNC                          = 0x10
+       O_EXCL                           = 0x400
+       O_FSYNC                          = 0x4010
+       O_LARGEFILE                      = 0x0
+       O_NDELAY                         = 0x80
+       O_NOATIME                        = 0x40000
+       O_NOCTTY                         = 0x800
+       O_NOFOLLOW                       = 0x20000
+       O_NONBLOCK                       = 0x80
+       O_PATH                           = 0x200000
+       O_RDONLY                         = 0x0
+       O_RDWR                           = 0x2
+       O_RSYNC                          = 0x4010
+       O_SYNC                           = 0x4010
+       O_TMPFILE                        = 0x410000
+       O_TRUNC                          = 0x200
+       O_WRONLY                         = 0x1
+       PACKET_ADD_MEMBERSHIP            = 0x1
+       PACKET_AUXDATA                   = 0x8
+       PACKET_BROADCAST                 = 0x1
+       PACKET_COPY_THRESH               = 0x7
+       PACKET_DROP_MEMBERSHIP           = 0x2
+       PACKET_FANOUT                    = 0x12
+       PACKET_FANOUT_CBPF               = 0x6
+       PACKET_FANOUT_CPU                = 0x2
+       PACKET_FANOUT_DATA               = 0x16
+       PACKET_FANOUT_EBPF               = 0x7
+       PACKET_FANOUT_FLAG_DEFRAG        = 0x8000
+       PACKET_FANOUT_FLAG_ROLLOVER      = 0x1000
+       PACKET_FANOUT_HASH               = 0x0
+       PACKET_FANOUT_LB                 = 0x1
+       PACKET_FANOUT_QM                 = 0x5
+       PACKET_FANOUT_RND                = 0x4
+       PACKET_FANOUT_ROLLOVER           = 0x3
+       PACKET_FASTROUTE                 = 0x6
+       PACKET_HDRLEN                    = 0xb
+       PACKET_HOST                      = 0x0
+       PACKET_KERNEL                    = 0x7
+       PACKET_LOOPBACK                  = 0x5
+       PACKET_LOSS                      = 0xe
+       PACKET_MR_ALLMULTI               = 0x2
+       PACKET_MR_MULTICAST              = 0x0
+       PACKET_MR_PROMISC                = 0x1
+       PACKET_MR_UNICAST                = 0x3
+       PACKET_MULTICAST                 = 0x2
+       PACKET_ORIGDEV                   = 0x9
+       PACKET_OTHERHOST                 = 0x3
+       PACKET_OUTGOING                  = 0x4
+       PACKET_QDISC_BYPASS              = 0x14
+       PACKET_RECV_OUTPUT               = 0x3
+       PACKET_RESERVE                   = 0xc
+       PACKET_ROLLOVER_STATS            = 0x15
+       PACKET_RX_RING                   = 0x5
+       PACKET_STATISTICS                = 0x6
+       PACKET_TIMESTAMP                 = 0x11
+       PACKET_TX_HAS_OFF                = 0x13
+       PACKET_TX_RING                   = 0xd
+       PACKET_TX_TIMESTAMP              = 0x10
+       PACKET_USER                      = 0x6
+       PACKET_VERSION                   = 0xa
+       PACKET_VNET_HDR                  = 0xf
+       PARENB                           = 0x100
+       PARITY_CRC16_PR0                 = 0x2
+       PARITY_CRC16_PR0_CCITT           = 0x4
+       PARITY_CRC16_PR1                 = 0x3
+       PARITY_CRC16_PR1_CCITT           = 0x5
+       PARITY_CRC32_PR0_CCITT           = 0x6
+       PARITY_CRC32_PR1_CCITT           = 0x7
+       PARITY_DEFAULT                   = 0x0
+       PARITY_NONE                      = 0x1
+       PARMRK                           = 0x8
+       PARODD                           = 0x200
+       PENDIN                           = 0x4000
+       PRIO_PGRP                        = 0x1
+       PRIO_PROCESS                     = 0x0
+       PRIO_USER                        = 0x2
+       PROT_EXEC                        = 0x4
+       PROT_GROWSDOWN                   = 0x1000000
+       PROT_GROWSUP                     = 0x2000000
+       PROT_NONE                        = 0x0
+       PROT_READ                        = 0x1
+       PROT_WRITE                       = 0x2
+       PR_CAPBSET_DROP                  = 0x18
+       PR_CAPBSET_READ                  = 0x17
+       PR_CAP_AMBIENT                   = 0x2f
+       PR_CAP_AMBIENT_CLEAR_ALL         = 0x4
+       PR_CAP_AMBIENT_IS_SET            = 0x1
+       PR_CAP_AMBIENT_LOWER             = 0x3
+       PR_CAP_AMBIENT_RAISE             = 0x2
+       PR_ENDIAN_BIG                    = 0x0
+       PR_ENDIAN_LITTLE                 = 0x1
+       PR_ENDIAN_PPC_LITTLE             = 0x2
+       PR_FPEMU_NOPRINT                 = 0x1
+       PR_FPEMU_SIGFPE                  = 0x2
+       PR_FP_EXC_ASYNC                  = 0x2
+       PR_FP_EXC_DISABLED               = 0x0
+       PR_FP_EXC_DIV                    = 0x10000
+       PR_FP_EXC_INV                    = 0x100000
+       PR_FP_EXC_NONRECOV               = 0x1
+       PR_FP_EXC_OVF                    = 0x20000
+       PR_FP_EXC_PRECISE                = 0x3
+       PR_FP_EXC_RES                    = 0x80000
+       PR_FP_EXC_SW_ENABLE              = 0x80
+       PR_FP_EXC_UND                    = 0x40000
+       PR_FP_MODE_FR                    = 0x1
+       PR_FP_MODE_FRE                   = 0x2
+       PR_GET_CHILD_SUBREAPER           = 0x25
+       PR_GET_DUMPABLE                  = 0x3
+       PR_GET_ENDIAN                    = 0x13
+       PR_GET_FPEMU                     = 0x9
+       PR_GET_FPEXC                     = 0xb
+       PR_GET_FP_MODE                   = 0x2e
+       PR_GET_KEEPCAPS                  = 0x7
+       PR_GET_NAME                      = 0x10
+       PR_GET_NO_NEW_PRIVS              = 0x27
+       PR_GET_PDEATHSIG                 = 0x2
+       PR_GET_SECCOMP                   = 0x15
+       PR_GET_SECUREBITS                = 0x1b
+       PR_GET_THP_DISABLE               = 0x2a
+       PR_GET_TID_ADDRESS               = 0x28
+       PR_GET_TIMERSLACK                = 0x1e
+       PR_GET_TIMING                    = 0xd
+       PR_GET_TSC                       = 0x19
+       PR_GET_UNALIGN                   = 0x5
+       PR_MCE_KILL                      = 0x21
+       PR_MCE_KILL_CLEAR                = 0x0
+       PR_MCE_KILL_DEFAULT              = 0x2
+       PR_MCE_KILL_EARLY                = 0x1
+       PR_MCE_KILL_GET                  = 0x22
+       PR_MCE_KILL_LATE                 = 0x0
+       PR_MCE_KILL_SET                  = 0x1
+       PR_MPX_DISABLE_MANAGEMENT        = 0x2c
+       PR_MPX_ENABLE_MANAGEMENT         = 0x2b
+       PR_SET_CHILD_SUBREAPER           = 0x24
+       PR_SET_DUMPABLE                  = 0x4
+       PR_SET_ENDIAN                    = 0x14
+       PR_SET_FPEMU                     = 0xa
+       PR_SET_FPEXC                     = 0xc
+       PR_SET_FP_MODE                   = 0x2d
+       PR_SET_KEEPCAPS                  = 0x8
+       PR_SET_MM                        = 0x23
+       PR_SET_MM_ARG_END                = 0x9
+       PR_SET_MM_ARG_START              = 0x8
+       PR_SET_MM_AUXV                   = 0xc
+       PR_SET_MM_BRK                    = 0x7
+       PR_SET_MM_END_CODE               = 0x2
+       PR_SET_MM_END_DATA               = 0x4
+       PR_SET_MM_ENV_END                = 0xb
+       PR_SET_MM_ENV_START              = 0xa
+       PR_SET_MM_EXE_FILE               = 0xd
+       PR_SET_MM_MAP                    = 0xe
+       PR_SET_MM_MAP_SIZE               = 0xf
+       PR_SET_MM_START_BRK              = 0x6
+       PR_SET_MM_START_CODE             = 0x1
+       PR_SET_MM_START_DATA             = 0x3
+       PR_SET_MM_START_STACK            = 0x5
+       PR_SET_NAME                      = 0xf
+       PR_SET_NO_NEW_PRIVS              = 0x26
+       PR_SET_PDEATHSIG                 = 0x1
+       PR_SET_PTRACER                   = 0x59616d61
+       PR_SET_PTRACER_ANY               = -0x1
+       PR_SET_SECCOMP                   = 0x16
+       PR_SET_SECUREBITS                = 0x1c
+       PR_SET_THP_DISABLE               = 0x29
+       PR_SET_TIMERSLACK                = 0x1d
+       PR_SET_TIMING                    = 0xe
+       PR_SET_TSC                       = 0x1a
+       PR_SET_UNALIGN                   = 0x6
+       PR_TASK_PERF_EVENTS_DISABLE      = 0x1f
+       PR_TASK_PERF_EVENTS_ENABLE       = 0x20
+       PR_TIMING_STATISTICAL            = 0x0
+       PR_TIMING_TIMESTAMP              = 0x1
+       PR_TSC_ENABLE                    = 0x1
+       PR_TSC_SIGSEGV                   = 0x2
+       PR_UNALIGN_NOPRINT               = 0x1
+       PR_UNALIGN_SIGBUS                = 0x2
+       PTRACE_ATTACH                    = 0x10
+       PTRACE_CONT                      = 0x7
+       PTRACE_DETACH                    = 0x11
+       PTRACE_EVENT_CLONE               = 0x3
+       PTRACE_EVENT_EXEC                = 0x4
+       PTRACE_EVENT_EXIT                = 0x6
+       PTRACE_EVENT_FORK                = 0x1
+       PTRACE_EVENT_SECCOMP             = 0x7
+       PTRACE_EVENT_STOP                = 0x80
+       PTRACE_EVENT_VFORK               = 0x2
+       PTRACE_EVENT_VFORK_DONE          = 0x5
+       PTRACE_GETEVENTMSG               = 0x4201
+       PTRACE_GETFPREGS                 = 0xe
+       PTRACE_GETREGS                   = 0xc
+       PTRACE_GETREGSET                 = 0x4204
+       PTRACE_GETSIGINFO                = 0x4202
+       PTRACE_GETSIGMASK                = 0x420a
+       PTRACE_GET_THREAD_AREA           = 0x19
+       PTRACE_GET_THREAD_AREA_3264      = 0xc4
+       PTRACE_GET_WATCH_REGS            = 0xd0
+       PTRACE_INTERRUPT                 = 0x4207
+       PTRACE_KILL                      = 0x8
+       PTRACE_LISTEN                    = 0x4208
+       PTRACE_OLDSETOPTIONS             = 0x15
+       PTRACE_O_EXITKILL                = 0x100000
+       PTRACE_O_MASK                    = 0x3000ff
+       PTRACE_O_SUSPEND_SECCOMP         = 0x200000
+       PTRACE_O_TRACECLONE              = 0x8
+       PTRACE_O_TRACEEXEC               = 0x10
+       PTRACE_O_TRACEEXIT               = 0x40
+       PTRACE_O_TRACEFORK               = 0x2
+       PTRACE_O_TRACESECCOMP            = 0x80
+       PTRACE_O_TRACESYSGOOD            = 0x1
+       PTRACE_O_TRACEVFORK              = 0x4
+       PTRACE_O_TRACEVFORKDONE          = 0x20
+       PTRACE_PEEKDATA                  = 0x2
+       PTRACE_PEEKDATA_3264             = 0xc1
+       PTRACE_PEEKSIGINFO               = 0x4209
+       PTRACE_PEEKSIGINFO_SHARED        = 0x1
+       PTRACE_PEEKTEXT                  = 0x1
+       PTRACE_PEEKTEXT_3264             = 0xc0
+       PTRACE_PEEKUSR                   = 0x3
+       PTRACE_POKEDATA                  = 0x5
+       PTRACE_POKEDATA_3264             = 0xc3
+       PTRACE_POKETEXT                  = 0x4
+       PTRACE_POKETEXT_3264             = 0xc2
+       PTRACE_POKEUSR                   = 0x6
+       PTRACE_SEIZE                     = 0x4206
+       PTRACE_SETFPREGS                 = 0xf
+       PTRACE_SETOPTIONS                = 0x4200
+       PTRACE_SETREGS                   = 0xd
+       PTRACE_SETREGSET                 = 0x4205
+       PTRACE_SETSIGINFO                = 0x4203
+       PTRACE_SETSIGMASK                = 0x420b
+       PTRACE_SET_THREAD_AREA           = 0x1a
+       PTRACE_SET_WATCH_REGS            = 0xd1
+       PTRACE_SINGLESTEP                = 0x9
+       PTRACE_SYSCALL                   = 0x18
+       PTRACE_TRACEME                   = 0x0
+       RLIMIT_AS                        = 0x6
+       RLIMIT_CORE                      = 0x4
+       RLIMIT_CPU                       = 0x0
+       RLIMIT_DATA                      = 0x2
+       RLIMIT_FSIZE                     = 0x1
+       RLIMIT_NOFILE                    = 0x5
+       RLIMIT_STACK                     = 0x3
+       RLIM_INFINITY                    = -0x1
+       RTAX_ADVMSS                      = 0x8
+       RTAX_CC_ALGO                     = 0x10
+       RTAX_CWND                        = 0x7
+       RTAX_FEATURES                    = 0xc
+       RTAX_FEATURE_ALLFRAG             = 0x8
+       RTAX_FEATURE_ECN                 = 0x1
+       RTAX_FEATURE_MASK                = 0xf
+       RTAX_FEATURE_SACK                = 0x2
+       RTAX_FEATURE_TIMESTAMP           = 0x4
+       RTAX_HOPLIMIT                    = 0xa
+       RTAX_INITCWND                    = 0xb
+       RTAX_INITRWND                    = 0xe
+       RTAX_LOCK                        = 0x1
+       RTAX_MAX                         = 0x10
+       RTAX_MTU                         = 0x2
+       RTAX_QUICKACK                    = 0xf
+       RTAX_REORDERING                  = 0x9
+       RTAX_RTO_MIN                     = 0xd
+       RTAX_RTT                         = 0x4
+       RTAX_RTTVAR                      = 0x5
+       RTAX_SSTHRESH                    = 0x6
+       RTAX_UNSPEC                      = 0x0
+       RTAX_WINDOW                      = 0x3
+       RTA_ALIGNTO                      = 0x4
+       RTA_MAX                          = 0x16
+       RTCF_DIRECTSRC                   = 0x4000000
+       RTCF_DOREDIRECT                  = 0x1000000
+       RTCF_LOG                         = 0x2000000
+       RTCF_MASQ                        = 0x400000
+       RTCF_NAT                         = 0x800000
+       RTCF_VALVE                       = 0x200000
+       RTF_ADDRCLASSMASK                = 0xf8000000
+       RTF_ADDRCONF                     = 0x40000
+       RTF_ALLONLINK                    = 0x20000
+       RTF_BROADCAST                    = 0x10000000
+       RTF_CACHE                        = 0x1000000
+       RTF_DEFAULT                      = 0x10000
+       RTF_DYNAMIC                      = 0x10
+       RTF_FLOW                         = 0x2000000
+       RTF_GATEWAY                      = 0x2
+       RTF_HOST                         = 0x4
+       RTF_INTERFACE                    = 0x40000000
+       RTF_IRTT                         = 0x100
+       RTF_LINKRT                       = 0x100000
+       RTF_LOCAL                        = 0x80000000
+       RTF_MODIFIED                     = 0x20
+       RTF_MSS                          = 0x40
+       RTF_MTU                          = 0x40
+       RTF_MULTICAST                    = 0x20000000
+       RTF_NAT                          = 0x8000000
+       RTF_NOFORWARD                    = 0x1000
+       RTF_NONEXTHOP                    = 0x200000
+       RTF_NOPMTUDISC                   = 0x4000
+       RTF_POLICY                       = 0x4000000
+       RTF_REINSTATE                    = 0x8
+       RTF_REJECT                       = 0x200
+       RTF_STATIC                       = 0x400
+       RTF_THROW                        = 0x2000
+       RTF_UP                           = 0x1
+       RTF_WINDOW                       = 0x80
+       RTF_XRESOLVE                     = 0x800
+       RTM_BASE                         = 0x10
+       RTM_DELACTION                    = 0x31
+       RTM_DELADDR                      = 0x15
+       RTM_DELADDRLABEL                 = 0x49
+       RTM_DELLINK                      = 0x11
+       RTM_DELMDB                       = 0x55
+       RTM_DELNEIGH                     = 0x1d
+       RTM_DELNSID                      = 0x59
+       RTM_DELQDISC                     = 0x25
+       RTM_DELROUTE                     = 0x19
+       RTM_DELRULE                      = 0x21
+       RTM_DELTCLASS                    = 0x29
+       RTM_DELTFILTER                   = 0x2d
+       RTM_F_CLONED                     = 0x200
+       RTM_F_EQUALIZE                   = 0x400
+       RTM_F_NOTIFY                     = 0x100
+       RTM_F_PREFIX                     = 0x800
+       RTM_GETACTION                    = 0x32
+       RTM_GETADDR                      = 0x16
+       RTM_GETADDRLABEL                 = 0x4a
+       RTM_GETANYCAST                   = 0x3e
+       RTM_GETDCB                       = 0x4e
+       RTM_GETLINK                      = 0x12
+       RTM_GETMDB                       = 0x56
+       RTM_GETMULTICAST                 = 0x3a
+       RTM_GETNEIGH                     = 0x1e
+       RTM_GETNEIGHTBL                  = 0x42
+       RTM_GETNETCONF                   = 0x52
+       RTM_GETNSID                      = 0x5a
+       RTM_GETQDISC                     = 0x26
+       RTM_GETROUTE                     = 0x1a
+       RTM_GETRULE                      = 0x22
+       RTM_GETTCLASS                    = 0x2a
+       RTM_GETTFILTER                   = 0x2e
+       RTM_MAX                          = 0x5b
+       RTM_NEWACTION                    = 0x30
+       RTM_NEWADDR                      = 0x14
+       RTM_NEWADDRLABEL                 = 0x48
+       RTM_NEWLINK                      = 0x10
+       RTM_NEWMDB                       = 0x54
+       RTM_NEWNDUSEROPT                 = 0x44
+       RTM_NEWNEIGH                     = 0x1c
+       RTM_NEWNEIGHTBL                  = 0x40
+       RTM_NEWNETCONF                   = 0x50
+       RTM_NEWNSID                      = 0x58
+       RTM_NEWPREFIX                    = 0x34
+       RTM_NEWQDISC                     = 0x24
+       RTM_NEWROUTE                     = 0x18
+       RTM_NEWRULE                      = 0x20
+       RTM_NEWTCLASS                    = 0x28
+       RTM_NEWTFILTER                   = 0x2c
+       RTM_NR_FAMILIES                  = 0x13
+       RTM_NR_MSGTYPES                  = 0x4c
+       RTM_SETDCB                       = 0x4f
+       RTM_SETLINK                      = 0x13
+       RTM_SETNEIGHTBL                  = 0x43
+       RTNH_ALIGNTO                     = 0x4
+       RTNH_COMPARE_MASK                = 0x11
+       RTNH_F_DEAD                      = 0x1
+       RTNH_F_LINKDOWN                  = 0x10
+       RTNH_F_OFFLOAD                   = 0x8
+       RTNH_F_ONLINK                    = 0x4
+       RTNH_F_PERVASIVE                 = 0x2
+       RTN_MAX                          = 0xb
+       RTPROT_BABEL                     = 0x2a
+       RTPROT_BIRD                      = 0xc
+       RTPROT_BOOT                      = 0x3
+       RTPROT_DHCP                      = 0x10
+       RTPROT_DNROUTED                  = 0xd
+       RTPROT_GATED                     = 0x8
+       RTPROT_KERNEL                    = 0x2
+       RTPROT_MROUTED                   = 0x11
+       RTPROT_MRT                       = 0xa
+       RTPROT_NTK                       = 0xf
+       RTPROT_RA                        = 0x9
+       RTPROT_REDIRECT                  = 0x1
+       RTPROT_STATIC                    = 0x4
+       RTPROT_UNSPEC                    = 0x0
+       RTPROT_XORP                      = 0xe
+       RTPROT_ZEBRA                     = 0xb
+       RT_CLASS_DEFAULT                 = 0xfd
+       RT_CLASS_LOCAL                   = 0xff
+       RT_CLASS_MAIN                    = 0xfe
+       RT_CLASS_MAX                     = 0xff
+       RT_CLASS_UNSPEC                  = 0x0
+       RUSAGE_CHILDREN                  = -0x1
+       RUSAGE_SELF                      = 0x0
+       RUSAGE_THREAD                    = 0x1
+       SCM_CREDENTIALS                  = 0x2
+       SCM_RIGHTS                       = 0x1
+       SCM_TIMESTAMP                    = 0x1d
+       SCM_TIMESTAMPING                 = 0x25
+       SCM_TIMESTAMPNS                  = 0x23
+       SCM_WIFI_STATUS                  = 0x29
+       SHUT_RD                          = 0x0
+       SHUT_RDWR                        = 0x2
+       SHUT_WR                          = 0x1
+       SIOCADDDLCI                      = 0x8980
+       SIOCADDMULTI                     = 0x8931
+       SIOCADDRT                        = 0x890b
+       SIOCATMARK                       = 0x40047307
+       SIOCDARP                         = 0x8953
+       SIOCDELDLCI                      = 0x8981
+       SIOCDELMULTI                     = 0x8932
+       SIOCDELRT                        = 0x890c
+       SIOCDEVPRIVATE                   = 0x89f0
+       SIOCDIFADDR                      = 0x8936
+       SIOCDRARP                        = 0x8960
+       SIOCGARP                         = 0x8954
+       SIOCGIFADDR                      = 0x8915
+       SIOCGIFBR                        = 0x8940
+       SIOCGIFBRDADDR                   = 0x8919
+       SIOCGIFCONF                      = 0x8912
+       SIOCGIFCOUNT                     = 0x8938
+       SIOCGIFDSTADDR                   = 0x8917
+       SIOCGIFENCAP                     = 0x8925
+       SIOCGIFFLAGS                     = 0x8913
+       SIOCGIFHWADDR                    = 0x8927
+       SIOCGIFINDEX                     = 0x8933
+       SIOCGIFMAP                       = 0x8970
+       SIOCGIFMEM                       = 0x891f
+       SIOCGIFMETRIC                    = 0x891d
+       SIOCGIFMTU                       = 0x8921
+       SIOCGIFNAME                      = 0x8910
+       SIOCGIFNETMASK                   = 0x891b
+       SIOCGIFPFLAGS                    = 0x8935
+       SIOCGIFSLAVE                     = 0x8929
+       SIOCGIFTXQLEN                    = 0x8942
+       SIOCGPGRP                        = 0x40047309
+       SIOCGRARP                        = 0x8961
+       SIOCGSTAMP                       = 0x8906
+       SIOCGSTAMPNS                     = 0x8907
+       SIOCPROTOPRIVATE                 = 0x89e0
+       SIOCRTMSG                        = 0x890d
+       SIOCSARP                         = 0x8955
+       SIOCSIFADDR                      = 0x8916
+       SIOCSIFBR                        = 0x8941
+       SIOCSIFBRDADDR                   = 0x891a
+       SIOCSIFDSTADDR                   = 0x8918
+       SIOCSIFENCAP                     = 0x8926
+       SIOCSIFFLAGS                     = 0x8914
+       SIOCSIFHWADDR                    = 0x8924
+       SIOCSIFHWBROADCAST               = 0x8937
+       SIOCSIFLINK                      = 0x8911
+       SIOCSIFMAP                       = 0x8971
+       SIOCSIFMEM                       = 0x8920
+       SIOCSIFMETRIC                    = 0x891e
+       SIOCSIFMTU                       = 0x8922
+       SIOCSIFNAME                      = 0x8923
+       SIOCSIFNETMASK                   = 0x891c
+       SIOCSIFPFLAGS                    = 0x8934
+       SIOCSIFSLAVE                     = 0x8930
+       SIOCSIFTXQLEN                    = 0x8943
+       SIOCSPGRP                        = 0x80047308
+       SIOCSRARP                        = 0x8962
+       SOCK_CLOEXEC                     = 0x80000
+       SOCK_DCCP                        = 0x6
+       SOCK_DGRAM                       = 0x1
+       SOCK_NONBLOCK                    = 0x80
+       SOCK_PACKET                      = 0xa
+       SOCK_RAW                         = 0x3
+       SOCK_RDM                         = 0x4
+       SOCK_SEQPACKET                   = 0x5
+       SOCK_STREAM                      = 0x2
+       SOL_AAL                          = 0x109
+       SOL_ATM                          = 0x108
+       SOL_DECNET                       = 0x105
+       SOL_ICMPV6                       = 0x3a
+       SOL_IP                           = 0x0
+       SOL_IPV6                         = 0x29
+       SOL_IRDA                         = 0x10a
+       SOL_PACKET                       = 0x107
+       SOL_RAW                          = 0xff
+       SOL_SOCKET                       = 0xffff
+       SOL_TCP                          = 0x6
+       SOL_X25                          = 0x106
+       SOMAXCONN                        = 0x80
+       SO_ACCEPTCONN                    = 0x1009
+       SO_ATTACH_BPF                    = 0x32
+       SO_ATTACH_FILTER                 = 0x1a
+       SO_BINDTODEVICE                  = 0x19
+       SO_BPF_EXTENSIONS                = 0x30
+       SO_BROADCAST                     = 0x20
+       SO_BSDCOMPAT                     = 0xe
+       SO_BUSY_POLL                     = 0x2e
+       SO_DEBUG                         = 0x1
+       SO_DETACH_BPF                    = 0x1b
+       SO_DETACH_FILTER                 = 0x1b
+       SO_DOMAIN                        = 0x1029
+       SO_DONTROUTE                     = 0x10
+       SO_ERROR                         = 0x1007
+       SO_GET_FILTER                    = 0x1a
+       SO_INCOMING_CPU                  = 0x31
+       SO_KEEPALIVE                     = 0x8
+       SO_LINGER                        = 0x80
+       SO_LOCK_FILTER                   = 0x2c
+       SO_MARK                          = 0x24
+       SO_MAX_PACING_RATE               = 0x2f
+       SO_NOFCS                         = 0x2b
+       SO_NO_CHECK                      = 0xb
+       SO_OOBINLINE                     = 0x100
+       SO_PASSCRED                      = 0x11
+       SO_PASSSEC                       = 0x22
+       SO_PEEK_OFF                      = 0x2a
+       SO_PEERCRED                      = 0x12
+       SO_PEERNAME                      = 0x1c
+       SO_PEERSEC                       = 0x1e
+       SO_PRIORITY                      = 0xc
+       SO_PROTOCOL                      = 0x1028
+       SO_RCVBUF                        = 0x1002
+       SO_RCVBUFFORCE                   = 0x21
+       SO_RCVLOWAT                      = 0x1004
+       SO_RCVTIMEO                      = 0x1006
+       SO_REUSEADDR                     = 0x4
+       SO_REUSEPORT                     = 0x200
+       SO_RXQ_OVFL                      = 0x28
+       SO_SECURITY_AUTHENTICATION       = 0x16
+       SO_SECURITY_ENCRYPTION_NETWORK   = 0x18
+       SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
+       SO_SELECT_ERR_QUEUE              = 0x2d
+       SO_SNDBUF                        = 0x1001
+       SO_SNDBUFFORCE                   = 0x1f
+       SO_SNDLOWAT                      = 0x1003
+       SO_SNDTIMEO                      = 0x1005
+       SO_STYLE                         = 0x1008
+       SO_TIMESTAMP                     = 0x1d
+       SO_TIMESTAMPING                  = 0x25
+       SO_TIMESTAMPNS                   = 0x23
+       SO_TYPE                          = 0x1008
+       SO_WIFI_STATUS                   = 0x29
+       S_BLKSIZE                        = 0x200
+       S_IEXEC                          = 0x40
+       S_IFBLK                          = 0x6000
+       S_IFCHR                          = 0x2000
+       S_IFDIR                          = 0x4000
+       S_IFIFO                          = 0x1000
+       S_IFLNK                          = 0xa000
+       S_IFMT                           = 0xf000
+       S_IFREG                          = 0x8000
+       S_IFSOCK                         = 0xc000
+       S_IREAD                          = 0x100
+       S_IRGRP                          = 0x20
+       S_IROTH                          = 0x4
+       S_IRUSR                          = 0x100
+       S_IRWXG                          = 0x38
+       S_IRWXO                          = 0x7
+       S_IRWXU                          = 0x1c0
+       S_ISGID                          = 0x400
+       S_ISUID                          = 0x800
+       S_ISVTX                          = 0x200
+       S_IWGRP                          = 0x10
+       S_IWOTH                          = 0x2
+       S_IWRITE                         = 0x80
+       S_IWUSR                          = 0x80
+       S_IXGRP                          = 0x8
+       S_IXOTH                          = 0x1
+       S_IXUSR                          = 0x40
+       TCFLSH                           = 0x5407
+       TCIFLUSH                         = 0x0
+       TCIOFLUSH                        = 0x2
+       TCOFLUSH                         = 0x1
+       TCP_CONGESTION                   = 0xd
+       TCP_COOKIE_IN_ALWAYS             = 0x1
+       TCP_COOKIE_MAX                   = 0x10
+       TCP_COOKIE_MIN                   = 0x8
+       TCP_COOKIE_OUT_NEVER             = 0x2
+       TCP_COOKIE_PAIR_SIZE             = 0x20
+       TCP_COOKIE_TRANSACTIONS          = 0xf
+       TCP_CORK                         = 0x3
+       TCP_DEFER_ACCEPT                 = 0x9
+       TCP_FASTOPEN                     = 0x17
+       TCP_INFO                         = 0xb
+       TCP_KEEPCNT                      = 0x6
+       TCP_KEEPIDLE                     = 0x4
+       TCP_KEEPINTVL                    = 0x5
+       TCP_LINGER2                      = 0x8
+       TCP_MAXSEG                       = 0x2
+       TCP_MAXWIN                       = 0xffff
+       TCP_MAX_WINSHIFT                 = 0xe
+       TCP_MD5SIG                       = 0xe
+       TCP_MD5SIG_MAXKEYLEN             = 0x50
+       TCP_MSS                          = 0x200
+       TCP_MSS_DEFAULT                  = 0x218
+       TCP_MSS_DESIRED                  = 0x4c4
+       TCP_NODELAY                      = 0x1
+       TCP_QUEUE_SEQ                    = 0x15
+       TCP_QUICKACK                     = 0xc
+       TCP_REPAIR                       = 0x13
+       TCP_REPAIR_OPTIONS               = 0x16
+       TCP_REPAIR_QUEUE                 = 0x14
+       TCP_SYNCNT                       = 0x7
+       TCP_S_DATA_IN                    = 0x4
+       TCP_S_DATA_OUT                   = 0x8
+       TCP_THIN_DUPACK                  = 0x11
+       TCP_THIN_LINEAR_TIMEOUTS         = 0x10
+       TCP_TIMESTAMP                    = 0x18
+       TCP_USER_TIMEOUT                 = 0x12
+       TCP_WINDOW_CLAMP                 = 0xa
+       TCSAFLUSH                        = 0x5410
+       TCSBRK                           = 0x5405
+       TCXONC                           = 0x5406
+       TIOCCBRK                         = 0x5428
+       TIOCCONS                         = 0x80047478
+       TIOCEXCL                         = 0x740d
+       TIOCGDEV                         = 0x40045432
+       TIOCGETD                         = 0x7400
+       TIOCGETP                         = 0x7408
+       TIOCGEXCL                        = 0x40045440
+       TIOCGICOUNT                      = 0x5492
+       TIOCGLCKTRMIOS                   = 0x548b
+       TIOCGLTC                         = 0x7474
+       TIOCGPGRP                        = 0x40047477
+       TIOCGPKT                         = 0x40045438
+       TIOCGPTLCK                       = 0x40045439
+       TIOCGPTN                         = 0x40045430
+       TIOCGRS485                       = 0x4020542e
+       TIOCGSERIAL                      = 0x5484
+       TIOCGSID                         = 0x7416
+       TIOCGSOFTCAR                     = 0x5481
+       TIOCGWINSZ                       = 0x40087468
+       TIOCINQ                          = 0x467f
+       TIOCLINUX                        = 0x5483
+       TIOCMBIC                         = 0x741c
+       TIOCMBIS                         = 0x741b
+       TIOCMGET                         = 0x741d
+       TIOCMIWAIT                       = 0x5491
+       TIOCMSET                         = 0x741a
+       TIOCM_CAR                        = 0x100
+       TIOCM_CD                         = 0x100
+       TIOCM_CTS                        = 0x40
+       TIOCM_DSR                        = 0x400
+       TIOCM_DTR                        = 0x2
+       TIOCM_LE                         = 0x1
+       TIOCM_RI                         = 0x200
+       TIOCM_RNG                        = 0x200
+       TIOCM_RTS                        = 0x4
+       TIOCM_SR                         = 0x20
+       TIOCM_ST                         = 0x10
+       TIOCNOTTY                        = 0x5471
+       TIOCNXCL                         = 0x740e
+       TIOCOUTQ                         = 0x7472
+       TIOCPKT                          = 0x5470
+       TIOCPKT_DATA                     = 0x0
+       TIOCPKT_DOSTOP                   = 0x20
+       TIOCPKT_FLUSHREAD                = 0x1
+       TIOCPKT_FLUSHWRITE               = 0x2
+       TIOCPKT_IOCTL                    = 0x40
+       TIOCPKT_NOSTOP                   = 0x10
+       TIOCPKT_START                    = 0x8
+       TIOCPKT_STOP                     = 0x4
+       TIOCSBRK                         = 0x5427
+       TIOCSCTTY                        = 0x5480
+       TIOCSERCONFIG                    = 0x5488
+       TIOCSERGETLSR                    = 0x548e
+       TIOCSERGETMULTI                  = 0x548f
+       TIOCSERGSTRUCT                   = 0x548d
+       TIOCSERGWILD                     = 0x5489
+       TIOCSERSETMULTI                  = 0x5490
+       TIOCSERSWILD                     = 0x548a
+       TIOCSER_TEMT                     = 0x1
+       TIOCSETD                         = 0x7401
+       TIOCSETN                         = 0x740a
+       TIOCSETP                         = 0x7409
+       TIOCSIG                          = 0x80045436
+       TIOCSLCKTRMIOS                   = 0x548c
+       TIOCSLTC                         = 0x7475
+       TIOCSPGRP                        = 0x80047476
+       TIOCSPTLCK                       = 0x80045431
+       TIOCSRS485                       = 0xc020542f
+       TIOCSSERIAL                      = 0x5485
+       TIOCSSOFTCAR                     = 0x5482
+       TIOCSTI                          = 0x5472
+       TIOCSWINSZ                       = 0x80087467
+       TIOCVHANGUP                      = 0x5437
+       TOSTOP                           = 0x8000
+       TUNATTACHFILTER                  = 0x801054d5
+       TUNDETACHFILTER                  = 0x801054d6
+       TUNGETFEATURES                   = 0x400454cf
+       TUNGETFILTER                     = 0x401054db
+       TUNGETIFF                        = 0x400454d2
+       TUNGETSNDBUF                     = 0x400454d3
+       TUNGETVNETBE                     = 0x400454df
+       TUNGETVNETHDRSZ                  = 0x400454d7
+       TUNGETVNETLE                     = 0x400454dd
+       TUNSETDEBUG                      = 0x800454c9
+       TUNSETGROUP                      = 0x800454ce
+       TUNSETIFF                        = 0x800454ca
+       TUNSETIFINDEX                    = 0x800454da
+       TUNSETLINK                       = 0x800454cd
+       TUNSETNOCSUM                     = 0x800454c8
+       TUNSETOFFLOAD                    = 0x800454d0
+       TUNSETOWNER                      = 0x800454cc
+       TUNSETPERSIST                    = 0x800454cb
+       TUNSETQUEUE                      = 0x800454d9
+       TUNSETSNDBUF                     = 0x800454d4
+       TUNSETTXFILTER                   = 0x800454d1
+       TUNSETVNETBE                     = 0x800454de
+       TUNSETVNETHDRSZ                  = 0x800454d8
+       TUNSETVNETLE                     = 0x800454dc
+       VDISCARD                         = 0xd
+       VEOF                             = 0x10
+       VEOL                             = 0x11
+       VEOL2                            = 0x6
+       VERASE                           = 0x2
+       VINTR                            = 0x0
+       VKILL                            = 0x3
+       VLNEXT                           = 0xf
+       VMIN                             = 0x4
+       VQUIT                            = 0x1
+       VREPRINT                         = 0xc
+       VSTART                           = 0x8
+       VSTOP                            = 0x9
+       VSUSP                            = 0xa
+       VSWTC                            = 0x7
+       VSWTCH                           = 0x7
+       VT0                              = 0x0
+       VT1                              = 0x4000
+       VTDLY                            = 0x4000
+       VTIME                            = 0x5
+       VWERASE                          = 0xe
+       WALL                             = 0x40000000
+       WCLONE                           = 0x80000000
+       WCONTINUED                       = 0x8
+       WEXITED                          = 0x4
+       WNOHANG                          = 0x1
+       WNOTHREAD                        = 0x20000000
+       WNOWAIT                          = 0x1000000
+       WORDSIZE                         = 0x40
+       WSTOPPED                         = 0x2
+       WUNTRACED                        = 0x2
+)
+
+// Errors
+const (
+       E2BIG           = syscall.Errno(0x7)
+       EACCES          = syscall.Errno(0xd)
+       EADDRINUSE      = syscall.Errno(0x7d)
+       EADDRNOTAVAIL   = syscall.Errno(0x7e)
+       EADV            = syscall.Errno(0x44)
+       EAFNOSUPPORT    = syscall.Errno(0x7c)
+       EAGAIN          = syscall.Errno(0xb)
+       EALREADY        = syscall.Errno(0x95)
+       EBADE           = syscall.Errno(0x32)
+       EBADF           = syscall.Errno(0x9)
+       EBADFD          = syscall.Errno(0x51)
+       EBADMSG         = syscall.Errno(0x4d)
+       EBADR           = syscall.Errno(0x33)
+       EBADRQC         = syscall.Errno(0x36)
+       EBADSLT         = syscall.Errno(0x37)
+       EBFONT          = syscall.Errno(0x3b)
+       EBUSY           = syscall.Errno(0x10)
+       ECANCELED       = syscall.Errno(0x9e)
+       ECHILD          = syscall.Errno(0xa)
+       ECHRNG          = syscall.Errno(0x25)
+       ECOMM           = syscall.Errno(0x46)
+       ECONNABORTED    = syscall.Errno(0x82)
+       ECONNREFUSED    = syscall.Errno(0x92)
+       ECONNRESET      = syscall.Errno(0x83)
+       EDEADLK         = syscall.Errno(0x2d)
+       EDEADLOCK       = syscall.Errno(0x38)
+       EDESTADDRREQ    = syscall.Errno(0x60)
+       EDOM            = syscall.Errno(0x21)
+       EDOTDOT         = syscall.Errno(0x49)
+       EDQUOT          = syscall.Errno(0x46d)
+       EEXIST          = syscall.Errno(0x11)
+       EFAULT          = syscall.Errno(0xe)
+       EFBIG           = syscall.Errno(0x1b)
+       EHOSTDOWN       = syscall.Errno(0x93)
+       EHOSTUNREACH    = syscall.Errno(0x94)
+       EHWPOISON       = syscall.Errno(0xa8)
+       EIDRM           = syscall.Errno(0x24)
+       EILSEQ          = syscall.Errno(0x58)
+       EINIT           = syscall.Errno(0x8d)
+       EINPROGRESS     = syscall.Errno(0x96)
+       EINTR           = syscall.Errno(0x4)
+       EINVAL          = syscall.Errno(0x16)
+       EIO             = syscall.Errno(0x5)
+       EISCONN         = syscall.Errno(0x85)
+       EISDIR          = syscall.Errno(0x15)
+       EISNAM          = syscall.Errno(0x8b)
+       EKEYEXPIRED     = syscall.Errno(0xa2)
+       EKEYREJECTED    = syscall.Errno(0xa4)
+       EKEYREVOKED     = syscall.Errno(0xa3)
+       EL2HLT          = syscall.Errno(0x2c)
+       EL2NSYNC        = syscall.Errno(0x26)
+       EL3HLT          = syscall.Errno(0x27)
+       EL3RST          = syscall.Errno(0x28)
+       ELIBACC         = syscall.Errno(0x53)
+       ELIBBAD         = syscall.Errno(0x54)
+       ELIBEXEC        = syscall.Errno(0x57)
+       ELIBMAX         = syscall.Errno(0x56)
+       ELIBSCN         = syscall.Errno(0x55)
+       ELNRNG          = syscall.Errno(0x29)
+       ELOOP           = syscall.Errno(0x5a)
+       EMEDIUMTYPE     = syscall.Errno(0xa0)
+       EMFILE          = syscall.Errno(0x18)
+       EMLINK          = syscall.Errno(0x1f)
+       EMSGSIZE        = syscall.Errno(0x61)
+       EMULTIHOP       = syscall.Errno(0x4a)
+       ENAMETOOLONG    = syscall.Errno(0x4e)
+       ENAVAIL         = syscall.Errno(0x8a)
+       ENETDOWN        = syscall.Errno(0x7f)
+       ENETRESET       = syscall.Errno(0x81)
+       ENETUNREACH     = syscall.Errno(0x80)
+       ENFILE          = syscall.Errno(0x17)
+       ENOANO          = syscall.Errno(0x35)
+       ENOBUFS         = syscall.Errno(0x84)
+       ENOCSI          = syscall.Errno(0x2b)
+       ENODATA         = syscall.Errno(0x3d)
+       ENODEV          = syscall.Errno(0x13)
+       ENOENT          = syscall.Errno(0x2)
+       ENOEXEC         = syscall.Errno(0x8)
+       ENOKEY          = syscall.Errno(0xa1)
+       ENOLCK          = syscall.Errno(0x2e)
+       ENOLINK         = syscall.Errno(0x43)
+       ENOMEDIUM       = syscall.Errno(0x9f)
+       ENOMEM          = syscall.Errno(0xc)
+       ENOMSG          = syscall.Errno(0x23)
+       ENONET          = syscall.Errno(0x40)
+       ENOPKG          = syscall.Errno(0x41)
+       ENOPROTOOPT     = syscall.Errno(0x63)
+       ENOSPC          = syscall.Errno(0x1c)
+       ENOSR           = syscall.Errno(0x3f)
+       ENOSTR          = syscall.Errno(0x3c)
+       ENOSYS          = syscall.Errno(0x59)
+       ENOTBLK         = syscall.Errno(0xf)
+       ENOTCONN        = syscall.Errno(0x86)
+       ENOTDIR         = syscall.Errno(0x14)
+       ENOTEMPTY       = syscall.Errno(0x5d)
+       ENOTNAM         = syscall.Errno(0x89)
+       ENOTRECOVERABLE = syscall.Errno(0xa6)
+       ENOTSOCK        = syscall.Errno(0x5f)
+       ENOTSUP         = syscall.Errno(0x7a)
+       ENOTTY          = syscall.Errno(0x19)
+       ENOTUNIQ        = syscall.Errno(0x50)
+       ENXIO           = syscall.Errno(0x6)
+       EOPNOTSUPP      = syscall.Errno(0x7a)
+       EOVERFLOW       = syscall.Errno(0x4f)
+       EOWNERDEAD      = syscall.Errno(0xa5)
+       EPERM           = syscall.Errno(0x1)
+       EPFNOSUPPORT    = syscall.Errno(0x7b)
+       EPIPE           = syscall.Errno(0x20)
+       EPROTO          = syscall.Errno(0x47)
+       EPROTONOSUPPORT = syscall.Errno(0x78)
+       EPROTOTYPE      = syscall.Errno(0x62)
+       ERANGE          = syscall.Errno(0x22)
+       EREMCHG         = syscall.Errno(0x52)
+       EREMDEV         = syscall.Errno(0x8e)
+       EREMOTE         = syscall.Errno(0x42)
+       EREMOTEIO       = syscall.Errno(0x8c)
+       ERESTART        = syscall.Errno(0x5b)
+       ERFKILL         = syscall.Errno(0xa7)
+       EROFS           = syscall.Errno(0x1e)
+       ESHUTDOWN       = syscall.Errno(0x8f)
+       ESOCKTNOSUPPORT = syscall.Errno(0x79)
+       ESPIPE          = syscall.Errno(0x1d)
+       ESRCH           = syscall.Errno(0x3)
+       ESRMNT          = syscall.Errno(0x45)
+       ESTALE          = syscall.Errno(0x97)
+       ESTRPIPE        = syscall.Errno(0x5c)
+       ETIME           = syscall.Errno(0x3e)
+       ETIMEDOUT       = syscall.Errno(0x91)
+       ETOOMANYREFS    = syscall.Errno(0x90)
+       ETXTBSY         = syscall.Errno(0x1a)
+       EUCLEAN         = syscall.Errno(0x87)
+       EUNATCH         = syscall.Errno(0x2a)
+       EUSERS          = syscall.Errno(0x5e)
+       EWOULDBLOCK     = syscall.Errno(0xb)
+       EXDEV           = syscall.Errno(0x12)
+       EXFULL          = syscall.Errno(0x34)
+)
+
+// Signals
+const (
+       SIGABRT   = syscall.Signal(0x6)
+       SIGALRM   = syscall.Signal(0xe)
+       SIGBUS    = syscall.Signal(0xa)
+       SIGCHLD   = syscall.Signal(0x12)
+       SIGCLD    = syscall.Signal(0x12)
+       SIGCONT   = syscall.Signal(0x19)
+       SIGEMT    = syscall.Signal(0x7)
+       SIGFPE    = syscall.Signal(0x8)
+       SIGHUP    = syscall.Signal(0x1)
+       SIGILL    = syscall.Signal(0x4)
+       SIGINT    = syscall.Signal(0x2)
+       SIGIO     = syscall.Signal(0x16)
+       SIGIOT    = syscall.Signal(0x6)
+       SIGKILL   = syscall.Signal(0x9)
+       SIGPIPE   = syscall.Signal(0xd)
+       SIGPOLL   = syscall.Signal(0x16)
+       SIGPROF   = syscall.Signal(0x1d)
+       SIGPWR    = syscall.Signal(0x13)
+       SIGQUIT   = syscall.Signal(0x3)
+       SIGSEGV   = syscall.Signal(0xb)
+       SIGSTOP   = syscall.Signal(0x17)
+       SIGSYS    = syscall.Signal(0xc)
+       SIGTERM   = syscall.Signal(0xf)
+       SIGTRAP   = syscall.Signal(0x5)
+       SIGTSTP   = syscall.Signal(0x18)
+       SIGTTIN   = syscall.Signal(0x1a)
+       SIGTTOU   = syscall.Signal(0x1b)
+       SIGURG    = syscall.Signal(0x15)
+       SIGUSR1   = syscall.Signal(0x10)
+       SIGUSR2   = syscall.Signal(0x11)
+       SIGVTALRM = syscall.Signal(0x1c)
+       SIGWINCH  = syscall.Signal(0x14)
+       SIGXCPU   = syscall.Signal(0x1e)
+       SIGXFSZ   = syscall.Signal(0x1f)
+)
+
+// 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:    "no such device or address",
+       7:    "argument list too long",
+       8:    "exec format error",
+       9:    "bad file descriptor",
+       10:   "no child processes",
+       11:   "resource temporarily unavailable",
+       12:   "cannot allocate memory",
+       13:   "permission denied",
+       14:   "bad address",
+       15:   "block device required",
+       16:   "device or resource busy",
+       17:   "file exists",
+       18:   "invalid cross-device link",
+       19:   "no such 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:   "numerical result out of range",
+       35:   "no message of desired type",
+       36:   "identifier removed",
+       37:   "channel number out of range",
+       38:   "level 2 not synchronized",
+       39:   "level 3 halted",
+       40:   "level 3 reset",
+       41:   "link number out of range",
+       42:   "protocol driver not attached",
+       43:   "no CSI structure available",
+       44:   "level 2 halted",
+       45:   "resource deadlock avoided",
+       46:   "no locks available",
+       50:   "invalid exchange",
+       51:   "invalid request descriptor",
+       52:   "exchange full",
+       53:   "no anode",
+       54:   "invalid request code",
+       55:   "invalid slot",
+       56:   "file locking deadlock error",
+       59:   "bad font file format",
+       60:   "device not a stream",
+       61:   "no data available",
+       62:   "timer expired",
+       63:   "out of streams resources",
+       64:   "machine is not on the network",
+       65:   "package not installed",
+       66:   "object is remote",
+       67:   "link has been severed",
+       68:   "advertise error",
+       69:   "srmount error",
+       70:   "communication error on send",
+       71:   "protocol error",
+       73:   "RFS specific error",
+       74:   "multihop attempted",
+       77:   "bad message",
+       78:   "file name too long",
+       79:   "value too large for defined data type",
+       80:   "name not unique on network",
+       81:   "file descriptor in bad state",
+       82:   "remote address changed",
+       83:   "can not access a needed shared library",
+       84:   "accessing a corrupted shared library",
+       85:   ".lib section in a.out corrupted",
+       86:   "attempting to link in too many shared libraries",
+       87:   "cannot exec a shared library directly",
+       88:   "invalid or incomplete multibyte or wide character",
+       89:   "function not implemented",
+       90:   "too many levels of symbolic links",
+       91:   "interrupted system call should be restarted",
+       92:   "streams pipe error",
+       93:   "directory not empty",
+       94:   "too many users",
+       95:   "socket operation on non-socket",
+       96:   "destination address required",
+       97:   "message too long",
+       98:   "protocol wrong type for socket",
+       99:   "protocol not available",
+       120:  "protocol not supported",
+       121:  "socket type not supported",
+       122:  "operation not supported",
+       123:  "protocol family not supported",
+       124:  "address family not supported by protocol",
+       125:  "address already in use",
+       126:  "cannot assign requested address",
+       127:  "network is down",
+       128:  "network is unreachable",
+       129:  "network dropped connection on reset",
+       130:  "software caused connection abort",
+       131:  "connection reset by peer",
+       132:  "no buffer space available",
+       133:  "transport endpoint is already connected",
+       134:  "transport endpoint is not connected",
+       135:  "structure needs cleaning",
+       137:  "not a XENIX named type file",
+       138:  "no XENIX semaphores available",
+       139:  "is a named type file",
+       140:  "remote I/O error",
+       141:  "unknown error 141",
+       142:  "unknown error 142",
+       143:  "cannot send after transport endpoint shutdown",
+       144:  "too many references: cannot splice",
+       145:  "connection timed out",
+       146:  "connection refused",
+       147:  "host is down",
+       148:  "no route to host",
+       149:  "operation already in progress",
+       150:  "operation now in progress",
+       151:  "stale file handle",
+       158:  "operation canceled",
+       159:  "no medium found",
+       160:  "wrong medium type",
+       161:  "required key not available",
+       162:  "key has expired",
+       163:  "key has been revoked",
+       164:  "key was rejected by service",
+       165:  "owner died",
+       166:  "state not recoverable",
+       167:  "operation not possible due to RF-kill",
+       168:  "memory page has hardware error",
+       1133: "disk quota exceeded",
+}
+
+// Signal table
+var signals = [...]string{
+       1:  "hangup",
+       2:  "interrupt",
+       3:  "quit",
+       4:  "illegal instruction",
+       5:  "trace/breakpoint trap",
+       6:  "aborted",
+       7:  "EMT trap",
+       8:  "floating point exception",
+       9:  "killed",
+       10: "bus error",
+       11: "segmentation fault",
+       12: "bad system call",
+       13: "broken pipe",
+       14: "alarm clock",
+       15: "terminated",
+       16: "user defined signal 1",
+       17: "user defined signal 2",
+       18: "child exited",
+       19: "power failure",
+       20: "window changed",
+       21: "urgent I/O condition",
+       22: "I/O possible",
+       23: "stopped (signal)",
+       24: "stopped",
+       25: "continued",
+       26: "stopped (tty input)",
+       27: "stopped (tty output)",
+       28: "virtual timer expired",
+       29: "profiling timer expired",
+       30: "CPU time limit exceeded",
+       31: "file size limit exceeded",
+}
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go
new file mode 100644 (file)
index 0000000..5b90d07
--- /dev/null
@@ -0,0 +1,1969 @@
+// mkerrors.sh -m64
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build ppc64,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m64 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+       AF_ALG                           = 0x26
+       AF_APPLETALK                     = 0x5
+       AF_ASH                           = 0x12
+       AF_ATMPVC                        = 0x8
+       AF_ATMSVC                        = 0x14
+       AF_AX25                          = 0x3
+       AF_BLUETOOTH                     = 0x1f
+       AF_BRIDGE                        = 0x7
+       AF_CAIF                          = 0x25
+       AF_CAN                           = 0x1d
+       AF_DECnet                        = 0xc
+       AF_ECONET                        = 0x13
+       AF_FILE                          = 0x1
+       AF_IEEE802154                    = 0x24
+       AF_INET                          = 0x2
+       AF_INET6                         = 0xa
+       AF_IPX                           = 0x4
+       AF_IRDA                          = 0x17
+       AF_ISDN                          = 0x22
+       AF_IUCV                          = 0x20
+       AF_KEY                           = 0xf
+       AF_LLC                           = 0x1a
+       AF_LOCAL                         = 0x1
+       AF_MAX                           = 0x29
+       AF_NETBEUI                       = 0xd
+       AF_NETLINK                       = 0x10
+       AF_NETROM                        = 0x6
+       AF_NFC                           = 0x27
+       AF_PACKET                        = 0x11
+       AF_PHONET                        = 0x23
+       AF_PPPOX                         = 0x18
+       AF_RDS                           = 0x15
+       AF_ROSE                          = 0xb
+       AF_ROUTE                         = 0x10
+       AF_RXRPC                         = 0x21
+       AF_SECURITY                      = 0xe
+       AF_SNA                           = 0x16
+       AF_TIPC                          = 0x1e
+       AF_UNIX                          = 0x1
+       AF_UNSPEC                        = 0x0
+       AF_VSOCK                         = 0x28
+       AF_WANPIPE                       = 0x19
+       AF_X25                           = 0x9
+       ARPHRD_6LOWPAN                   = 0x339
+       ARPHRD_ADAPT                     = 0x108
+       ARPHRD_APPLETLK                  = 0x8
+       ARPHRD_ARCNET                    = 0x7
+       ARPHRD_ASH                       = 0x30d
+       ARPHRD_ATM                       = 0x13
+       ARPHRD_AX25                      = 0x3
+       ARPHRD_BIF                       = 0x307
+       ARPHRD_CAIF                      = 0x336
+       ARPHRD_CAN                       = 0x118
+       ARPHRD_CHAOS                     = 0x5
+       ARPHRD_CISCO                     = 0x201
+       ARPHRD_CSLIP                     = 0x101
+       ARPHRD_CSLIP6                    = 0x103
+       ARPHRD_DDCMP                     = 0x205
+       ARPHRD_DLCI                      = 0xf
+       ARPHRD_ECONET                    = 0x30e
+       ARPHRD_EETHER                    = 0x2
+       ARPHRD_ETHER                     = 0x1
+       ARPHRD_EUI64                     = 0x1b
+       ARPHRD_FCAL                      = 0x311
+       ARPHRD_FCFABRIC                  = 0x313
+       ARPHRD_FCPL                      = 0x312
+       ARPHRD_FCPP                      = 0x310
+       ARPHRD_FDDI                      = 0x306
+       ARPHRD_FRAD                      = 0x302
+       ARPHRD_HDLC                      = 0x201
+       ARPHRD_HIPPI                     = 0x30c
+       ARPHRD_HWX25                     = 0x110
+       ARPHRD_IEEE1394                  = 0x18
+       ARPHRD_IEEE802                   = 0x6
+       ARPHRD_IEEE80211                 = 0x321
+       ARPHRD_IEEE80211_PRISM           = 0x322
+       ARPHRD_IEEE80211_RADIOTAP        = 0x323
+       ARPHRD_IEEE802154                = 0x324
+       ARPHRD_IEEE802154_MONITOR        = 0x325
+       ARPHRD_IEEE802_TR                = 0x320
+       ARPHRD_INFINIBAND                = 0x20
+       ARPHRD_IP6GRE                    = 0x337
+       ARPHRD_IPDDP                     = 0x309
+       ARPHRD_IPGRE                     = 0x30a
+       ARPHRD_IRDA                      = 0x30f
+       ARPHRD_LAPB                      = 0x204
+       ARPHRD_LOCALTLK                  = 0x305
+       ARPHRD_LOOPBACK                  = 0x304
+       ARPHRD_METRICOM                  = 0x17
+       ARPHRD_NETLINK                   = 0x338
+       ARPHRD_NETROM                    = 0x0
+       ARPHRD_NONE                      = 0xfffe
+       ARPHRD_PHONET                    = 0x334
+       ARPHRD_PHONET_PIPE               = 0x335
+       ARPHRD_PIMREG                    = 0x30b
+       ARPHRD_PPP                       = 0x200
+       ARPHRD_PRONET                    = 0x4
+       ARPHRD_RAWHDLC                   = 0x206
+       ARPHRD_ROSE                      = 0x10e
+       ARPHRD_RSRVD                     = 0x104
+       ARPHRD_SIT                       = 0x308
+       ARPHRD_SKIP                      = 0x303
+       ARPHRD_SLIP                      = 0x100
+       ARPHRD_SLIP6                     = 0x102
+       ARPHRD_TUNNEL                    = 0x300
+       ARPHRD_TUNNEL6                   = 0x301
+       ARPHRD_VOID                      = 0xffff
+       ARPHRD_X25                       = 0x10f
+       B0                               = 0x0
+       B1000000                         = 0x17
+       B110                             = 0x3
+       B115200                          = 0x11
+       B1152000                         = 0x18
+       B1200                            = 0x9
+       B134                             = 0x4
+       B150                             = 0x5
+       B1500000                         = 0x19
+       B1800                            = 0xa
+       B19200                           = 0xe
+       B200                             = 0x6
+       B2000000                         = 0x1a
+       B230400                          = 0x12
+       B2400                            = 0xb
+       B2500000                         = 0x1b
+       B300                             = 0x7
+       B3000000                         = 0x1c
+       B3500000                         = 0x1d
+       B38400                           = 0xf
+       B4000000                         = 0x1e
+       B460800                          = 0x13
+       B4800                            = 0xc
+       B50                              = 0x1
+       B500000                          = 0x14
+       B57600                           = 0x10
+       B576000                          = 0x15
+       B600                             = 0x8
+       B75                              = 0x2
+       B921600                          = 0x16
+       B9600                            = 0xd
+       BOTHER                           = 0x1f
+       BPF_A                            = 0x10
+       BPF_ABS                          = 0x20
+       BPF_ADD                          = 0x0
+       BPF_ALU                          = 0x4
+       BPF_AND                          = 0x50
+       BPF_B                            = 0x10
+       BPF_DIV                          = 0x30
+       BPF_H                            = 0x8
+       BPF_IMM                          = 0x0
+       BPF_IND                          = 0x40
+       BPF_JA                           = 0x0
+       BPF_JEQ                          = 0x10
+       BPF_JGE                          = 0x30
+       BPF_JGT                          = 0x20
+       BPF_JMP                          = 0x5
+       BPF_JSET                         = 0x40
+       BPF_K                            = 0x0
+       BPF_LD                           = 0x0
+       BPF_LDX                          = 0x1
+       BPF_LEN                          = 0x80
+       BPF_LSH                          = 0x60
+       BPF_MAJOR_VERSION                = 0x1
+       BPF_MAXINSNS                     = 0x1000
+       BPF_MEM                          = 0x60
+       BPF_MEMWORDS                     = 0x10
+       BPF_MINOR_VERSION                = 0x1
+       BPF_MISC                         = 0x7
+       BPF_MOD                          = 0x90
+       BPF_MSH                          = 0xa0
+       BPF_MUL                          = 0x20
+       BPF_NEG                          = 0x80
+       BPF_OR                           = 0x40
+       BPF_RET                          = 0x6
+       BPF_RSH                          = 0x70
+       BPF_ST                           = 0x2
+       BPF_STX                          = 0x3
+       BPF_SUB                          = 0x10
+       BPF_TAX                          = 0x0
+       BPF_TXA                          = 0x80
+       BPF_W                            = 0x0
+       BPF_X                            = 0x8
+       BPF_XOR                          = 0xa0
+       BRKINT                           = 0x2
+       BS0                              = 0x0
+       BS1                              = 0x8000
+       BSDLY                            = 0x8000
+       CBAUD                            = 0xff
+       CBAUDEX                          = 0x0
+       CFLUSH                           = 0xf
+       CIBAUD                           = 0xff0000
+       CLOCAL                           = 0x8000
+       CLOCK_BOOTTIME                   = 0x7
+       CLOCK_BOOTTIME_ALARM             = 0x9
+       CLOCK_DEFAULT                    = 0x0
+       CLOCK_EXT                        = 0x1
+       CLOCK_INT                        = 0x2
+       CLOCK_MONOTONIC                  = 0x1
+       CLOCK_MONOTONIC_COARSE           = 0x6
+       CLOCK_MONOTONIC_RAW              = 0x4
+       CLOCK_PROCESS_CPUTIME_ID         = 0x2
+       CLOCK_REALTIME                   = 0x0
+       CLOCK_REALTIME_ALARM             = 0x8
+       CLOCK_REALTIME_COARSE            = 0x5
+       CLOCK_THREAD_CPUTIME_ID          = 0x3
+       CLOCK_TXFROMRX                   = 0x4
+       CLOCK_TXINT                      = 0x3
+       CLONE_CHILD_CLEARTID             = 0x200000
+       CLONE_CHILD_SETTID               = 0x1000000
+       CLONE_DETACHED                   = 0x400000
+       CLONE_FILES                      = 0x400
+       CLONE_FS                         = 0x200
+       CLONE_IO                         = 0x80000000
+       CLONE_NEWIPC                     = 0x8000000
+       CLONE_NEWNET                     = 0x40000000
+       CLONE_NEWNS                      = 0x20000
+       CLONE_NEWPID                     = 0x20000000
+       CLONE_NEWUSER                    = 0x10000000
+       CLONE_NEWUTS                     = 0x4000000
+       CLONE_PARENT                     = 0x8000
+       CLONE_PARENT_SETTID              = 0x100000
+       CLONE_PTRACE                     = 0x2000
+       CLONE_SETTLS                     = 0x80000
+       CLONE_SIGHAND                    = 0x800
+       CLONE_SYSVSEM                    = 0x40000
+       CLONE_THREAD                     = 0x10000
+       CLONE_UNTRACED                   = 0x800000
+       CLONE_VFORK                      = 0x4000
+       CLONE_VM                         = 0x100
+       CMSPAR                           = 0x40000000
+       CR0                              = 0x0
+       CR1                              = 0x1000
+       CR2                              = 0x2000
+       CR3                              = 0x3000
+       CRDLY                            = 0x3000
+       CREAD                            = 0x800
+       CRTSCTS                          = 0x80000000
+       CS5                              = 0x0
+       CS6                              = 0x100
+       CS7                              = 0x200
+       CS8                              = 0x300
+       CSIGNAL                          = 0xff
+       CSIZE                            = 0x300
+       CSTART                           = 0x11
+       CSTATUS                          = 0x0
+       CSTOP                            = 0x13
+       CSTOPB                           = 0x400
+       CSUSP                            = 0x1a
+       DT_BLK                           = 0x6
+       DT_CHR                           = 0x2
+       DT_DIR                           = 0x4
+       DT_FIFO                          = 0x1
+       DT_LNK                           = 0xa
+       DT_REG                           = 0x8
+       DT_SOCK                          = 0xc
+       DT_UNKNOWN                       = 0x0
+       DT_WHT                           = 0xe
+       ECHO                             = 0x8
+       ECHOCTL                          = 0x40
+       ECHOE                            = 0x2
+       ECHOK                            = 0x4
+       ECHOKE                           = 0x1
+       ECHONL                           = 0x10
+       ECHOPRT                          = 0x20
+       ENCODING_DEFAULT                 = 0x0
+       ENCODING_FM_MARK                 = 0x3
+       ENCODING_FM_SPACE                = 0x4
+       ENCODING_MANCHESTER              = 0x5
+       ENCODING_NRZ                     = 0x1
+       ENCODING_NRZI                    = 0x2
+       EPOLLERR                         = 0x8
+       EPOLLET                          = 0x80000000
+       EPOLLHUP                         = 0x10
+       EPOLLIN                          = 0x1
+       EPOLLMSG                         = 0x400
+       EPOLLONESHOT                     = 0x40000000
+       EPOLLOUT                         = 0x4
+       EPOLLPRI                         = 0x2
+       EPOLLRDBAND                      = 0x80
+       EPOLLRDHUP                       = 0x2000
+       EPOLLRDNORM                      = 0x40
+       EPOLLWAKEUP                      = 0x20000000
+       EPOLLWRBAND                      = 0x200
+       EPOLLWRNORM                      = 0x100
+       EPOLL_CLOEXEC                    = 0x80000
+       EPOLL_CTL_ADD                    = 0x1
+       EPOLL_CTL_DEL                    = 0x2
+       EPOLL_CTL_MOD                    = 0x3
+       ETH_P_1588                       = 0x88f7
+       ETH_P_8021AD                     = 0x88a8
+       ETH_P_8021AH                     = 0x88e7
+       ETH_P_8021Q                      = 0x8100
+       ETH_P_80221                      = 0x8917
+       ETH_P_802_2                      = 0x4
+       ETH_P_802_3                      = 0x1
+       ETH_P_802_3_MIN                  = 0x600
+       ETH_P_802_EX1                    = 0x88b5
+       ETH_P_AARP                       = 0x80f3
+       ETH_P_AF_IUCV                    = 0xfbfb
+       ETH_P_ALL                        = 0x3
+       ETH_P_AOE                        = 0x88a2
+       ETH_P_ARCNET                     = 0x1a
+       ETH_P_ARP                        = 0x806
+       ETH_P_ATALK                      = 0x809b
+       ETH_P_ATMFATE                    = 0x8884
+       ETH_P_ATMMPOA                    = 0x884c
+       ETH_P_AX25                       = 0x2
+       ETH_P_BATMAN                     = 0x4305
+       ETH_P_BPQ                        = 0x8ff
+       ETH_P_CAIF                       = 0xf7
+       ETH_P_CAN                        = 0xc
+       ETH_P_CANFD                      = 0xd
+       ETH_P_CONTROL                    = 0x16
+       ETH_P_CUST                       = 0x6006
+       ETH_P_DDCMP                      = 0x6
+       ETH_P_DEC                        = 0x6000
+       ETH_P_DIAG                       = 0x6005
+       ETH_P_DNA_DL                     = 0x6001
+       ETH_P_DNA_RC                     = 0x6002
+       ETH_P_DNA_RT                     = 0x6003
+       ETH_P_DSA                        = 0x1b
+       ETH_P_ECONET                     = 0x18
+       ETH_P_EDSA                       = 0xdada
+       ETH_P_FCOE                       = 0x8906
+       ETH_P_FIP                        = 0x8914
+       ETH_P_HDLC                       = 0x19
+       ETH_P_IEEE802154                 = 0xf6
+       ETH_P_IEEEPUP                    = 0xa00
+       ETH_P_IEEEPUPAT                  = 0xa01
+       ETH_P_IP                         = 0x800
+       ETH_P_IPV6                       = 0x86dd
+       ETH_P_IPX                        = 0x8137
+       ETH_P_IRDA                       = 0x17
+       ETH_P_LAT                        = 0x6004
+       ETH_P_LINK_CTL                   = 0x886c
+       ETH_P_LOCALTALK                  = 0x9
+       ETH_P_LOOP                       = 0x60
+       ETH_P_LOOPBACK                   = 0x9000
+       ETH_P_MOBITEX                    = 0x15
+       ETH_P_MPLS_MC                    = 0x8848
+       ETH_P_MPLS_UC                    = 0x8847
+       ETH_P_MVRP                       = 0x88f5
+       ETH_P_PAE                        = 0x888e
+       ETH_P_PAUSE                      = 0x8808
+       ETH_P_PHONET                     = 0xf5
+       ETH_P_PPPTALK                    = 0x10
+       ETH_P_PPP_DISC                   = 0x8863
+       ETH_P_PPP_MP                     = 0x8
+       ETH_P_PPP_SES                    = 0x8864
+       ETH_P_PRP                        = 0x88fb
+       ETH_P_PUP                        = 0x200
+       ETH_P_PUPAT                      = 0x201
+       ETH_P_QINQ1                      = 0x9100
+       ETH_P_QINQ2                      = 0x9200
+       ETH_P_QINQ3                      = 0x9300
+       ETH_P_RARP                       = 0x8035
+       ETH_P_SCA                        = 0x6007
+       ETH_P_SLOW                       = 0x8809
+       ETH_P_SNAP                       = 0x5
+       ETH_P_TDLS                       = 0x890d
+       ETH_P_TEB                        = 0x6558
+       ETH_P_TIPC                       = 0x88ca
+       ETH_P_TRAILER                    = 0x1c
+       ETH_P_TR_802_2                   = 0x11
+       ETH_P_WAN_PPP                    = 0x7
+       ETH_P_WCCP                       = 0x883e
+       ETH_P_X25                        = 0x805
+       ETH_P_XDSA                       = 0xf8
+       EXTA                             = 0xe
+       EXTB                             = 0xf
+       EXTPROC                          = 0x10000000
+       FD_CLOEXEC                       = 0x1
+       FD_SETSIZE                       = 0x400
+       FF0                              = 0x0
+       FF1                              = 0x4000
+       FFDLY                            = 0x4000
+       FLUSHO                           = 0x800000
+       F_DUPFD                          = 0x0
+       F_DUPFD_CLOEXEC                  = 0x406
+       F_EXLCK                          = 0x4
+       F_GETFD                          = 0x1
+       F_GETFL                          = 0x3
+       F_GETLEASE                       = 0x401
+       F_GETLK                          = 0x5
+       F_GETLK64                        = 0xc
+       F_GETOWN                         = 0x9
+       F_GETOWN_EX                      = 0x10
+       F_GETPIPE_SZ                     = 0x408
+       F_GETSIG                         = 0xb
+       F_LOCK                           = 0x1
+       F_NOTIFY                         = 0x402
+       F_OFD_GETLK                      = 0x24
+       F_OFD_SETLK                      = 0x25
+       F_OFD_SETLKW                     = 0x26
+       F_OK                             = 0x0
+       F_RDLCK                          = 0x0
+       F_SETFD                          = 0x2
+       F_SETFL                          = 0x4
+       F_SETLEASE                       = 0x400
+       F_SETLK                          = 0x6
+       F_SETLK64                        = 0xd
+       F_SETLKW                         = 0x7
+       F_SETLKW64                       = 0xe
+       F_SETOWN                         = 0x8
+       F_SETOWN_EX                      = 0xf
+       F_SETPIPE_SZ                     = 0x407
+       F_SETSIG                         = 0xa
+       F_SHLCK                          = 0x8
+       F_TEST                           = 0x3
+       F_TLOCK                          = 0x2
+       F_ULOCK                          = 0x0
+       F_UNLCK                          = 0x2
+       F_WRLCK                          = 0x1
+       HUPCL                            = 0x4000
+       IBSHIFT                          = 0x10
+       ICANON                           = 0x100
+       ICMPV6_FILTER                    = 0x1
+       ICRNL                            = 0x100
+       IEXTEN                           = 0x400
+       IFA_F_DADFAILED                  = 0x8
+       IFA_F_DEPRECATED                 = 0x20
+       IFA_F_HOMEADDRESS                = 0x10
+       IFA_F_MANAGETEMPADDR             = 0x100
+       IFA_F_NODAD                      = 0x2
+       IFA_F_NOPREFIXROUTE              = 0x200
+       IFA_F_OPTIMISTIC                 = 0x4
+       IFA_F_PERMANENT                  = 0x80
+       IFA_F_SECONDARY                  = 0x1
+       IFA_F_TEMPORARY                  = 0x1
+       IFA_F_TENTATIVE                  = 0x40
+       IFA_MAX                          = 0x8
+       IFF_ALLMULTI                     = 0x200
+       IFF_ATTACH_QUEUE                 = 0x200
+       IFF_AUTOMEDIA                    = 0x4000
+       IFF_BROADCAST                    = 0x2
+       IFF_DEBUG                        = 0x4
+       IFF_DETACH_QUEUE                 = 0x400
+       IFF_DORMANT                      = 0x20000
+       IFF_DYNAMIC                      = 0x8000
+       IFF_ECHO                         = 0x40000
+       IFF_LOOPBACK                     = 0x8
+       IFF_LOWER_UP                     = 0x10000
+       IFF_MASTER                       = 0x400
+       IFF_MULTICAST                    = 0x1000
+       IFF_MULTI_QUEUE                  = 0x100
+       IFF_NOARP                        = 0x80
+       IFF_NOFILTER                     = 0x1000
+       IFF_NOTRAILERS                   = 0x20
+       IFF_NO_PI                        = 0x1000
+       IFF_ONE_QUEUE                    = 0x2000
+       IFF_PERSIST                      = 0x800
+       IFF_POINTOPOINT                  = 0x10
+       IFF_PORTSEL                      = 0x2000
+       IFF_PROMISC                      = 0x100
+       IFF_RUNNING                      = 0x40
+       IFF_SLAVE                        = 0x800
+       IFF_TAP                          = 0x2
+       IFF_TUN                          = 0x1
+       IFF_TUN_EXCL                     = 0x8000
+       IFF_UP                           = 0x1
+       IFF_VNET_HDR                     = 0x4000
+       IFF_VOLATILE                     = 0x70c5a
+       IFNAMSIZ                         = 0x10
+       IGNBRK                           = 0x1
+       IGNCR                            = 0x80
+       IGNPAR                           = 0x4
+       IMAXBEL                          = 0x2000
+       INLCR                            = 0x40
+       INPCK                            = 0x10
+       IN_ACCESS                        = 0x1
+       IN_ALL_EVENTS                    = 0xfff
+       IN_ATTRIB                        = 0x4
+       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_CLOEXEC                       = 0x80000
+       IN_CLOSE                         = 0x18
+       IN_CLOSE_NOWRITE                 = 0x10
+       IN_CLOSE_WRITE                   = 0x8
+       IN_CREATE                        = 0x100
+       IN_DELETE                        = 0x200
+       IN_DELETE_SELF                   = 0x400
+       IN_DONT_FOLLOW                   = 0x2000000
+       IN_EXCL_UNLINK                   = 0x4000000
+       IN_IGNORED                       = 0x8000
+       IN_ISDIR                         = 0x40000000
+       IN_LOOPBACKNET                   = 0x7f
+       IN_MASK_ADD                      = 0x20000000
+       IN_MODIFY                        = 0x2
+       IN_MOVE                          = 0xc0
+       IN_MOVED_FROM                    = 0x40
+       IN_MOVED_TO                      = 0x80
+       IN_MOVE_SELF                     = 0x800
+       IN_NONBLOCK                      = 0x800
+       IN_ONESHOT                       = 0x80000000
+       IN_ONLYDIR                       = 0x1000000
+       IN_OPEN                          = 0x20
+       IN_Q_OVERFLOW                    = 0x4000
+       IN_UNMOUNT                       = 0x2000
+       IPPROTO_AH                       = 0x33
+       IPPROTO_BEETPH                   = 0x5e
+       IPPROTO_COMP                     = 0x6c
+       IPPROTO_DCCP                     = 0x21
+       IPPROTO_DSTOPTS                  = 0x3c
+       IPPROTO_EGP                      = 0x8
+       IPPROTO_ENCAP                    = 0x62
+       IPPROTO_ESP                      = 0x32
+       IPPROTO_FRAGMENT                 = 0x2c
+       IPPROTO_GRE                      = 0x2f
+       IPPROTO_HOPOPTS                  = 0x0
+       IPPROTO_ICMP                     = 0x1
+       IPPROTO_ICMPV6                   = 0x3a
+       IPPROTO_IDP                      = 0x16
+       IPPROTO_IGMP                     = 0x2
+       IPPROTO_IP                       = 0x0
+       IPPROTO_IPIP                     = 0x4
+       IPPROTO_IPV6                     = 0x29
+       IPPROTO_MH                       = 0x87
+       IPPROTO_MTP                      = 0x5c
+       IPPROTO_NONE                     = 0x3b
+       IPPROTO_PIM                      = 0x67
+       IPPROTO_PUP                      = 0xc
+       IPPROTO_RAW                      = 0xff
+       IPPROTO_ROUTING                  = 0x2b
+       IPPROTO_RSVP                     = 0x2e
+       IPPROTO_SCTP                     = 0x84
+       IPPROTO_TCP                      = 0x6
+       IPPROTO_TP                       = 0x1d
+       IPPROTO_UDP                      = 0x11
+       IPPROTO_UDPLITE                  = 0x88
+       IPV6_2292DSTOPTS                 = 0x4
+       IPV6_2292HOPLIMIT                = 0x8
+       IPV6_2292HOPOPTS                 = 0x3
+       IPV6_2292PKTINFO                 = 0x2
+       IPV6_2292PKTOPTIONS              = 0x6
+       IPV6_2292RTHDR                   = 0x5
+       IPV6_ADDRFORM                    = 0x1
+       IPV6_ADD_MEMBERSHIP              = 0x14
+       IPV6_AUTHHDR                     = 0xa
+       IPV6_CHECKSUM                    = 0x7
+       IPV6_DROP_MEMBERSHIP             = 0x15
+       IPV6_DSTOPTS                     = 0x3b
+       IPV6_HOPLIMIT                    = 0x34
+       IPV6_HOPOPTS                     = 0x36
+       IPV6_IPSEC_POLICY                = 0x22
+       IPV6_JOIN_ANYCAST                = 0x1b
+       IPV6_JOIN_GROUP                  = 0x14
+       IPV6_LEAVE_ANYCAST               = 0x1c
+       IPV6_LEAVE_GROUP                 = 0x15
+       IPV6_MTU                         = 0x18
+       IPV6_MTU_DISCOVER                = 0x17
+       IPV6_MULTICAST_HOPS              = 0x12
+       IPV6_MULTICAST_IF                = 0x11
+       IPV6_MULTICAST_LOOP              = 0x13
+       IPV6_NEXTHOP                     = 0x9
+       IPV6_PKTINFO                     = 0x32
+       IPV6_PMTUDISC_DO                 = 0x2
+       IPV6_PMTUDISC_DONT               = 0x0
+       IPV6_PMTUDISC_INTERFACE          = 0x4
+       IPV6_PMTUDISC_OMIT               = 0x5
+       IPV6_PMTUDISC_PROBE              = 0x3
+       IPV6_PMTUDISC_WANT               = 0x1
+       IPV6_RECVDSTOPTS                 = 0x3a
+       IPV6_RECVERR                     = 0x19
+       IPV6_RECVHOPLIMIT                = 0x33
+       IPV6_RECVHOPOPTS                 = 0x35
+       IPV6_RECVPKTINFO                 = 0x31
+       IPV6_RECVRTHDR                   = 0x38
+       IPV6_RECVTCLASS                  = 0x42
+       IPV6_ROUTER_ALERT                = 0x16
+       IPV6_RTHDR                       = 0x39
+       IPV6_RTHDRDSTOPTS                = 0x37
+       IPV6_RTHDR_LOOSE                 = 0x0
+       IPV6_RTHDR_STRICT                = 0x1
+       IPV6_RTHDR_TYPE_0                = 0x0
+       IPV6_RXDSTOPTS                   = 0x3b
+       IPV6_RXHOPOPTS                   = 0x36
+       IPV6_TCLASS                      = 0x43
+       IPV6_UNICAST_HOPS                = 0x10
+       IPV6_V6ONLY                      = 0x1a
+       IPV6_XFRM_POLICY                 = 0x23
+       IP_ADD_MEMBERSHIP                = 0x23
+       IP_ADD_SOURCE_MEMBERSHIP         = 0x27
+       IP_BLOCK_SOURCE                  = 0x26
+       IP_DEFAULT_MULTICAST_LOOP        = 0x1
+       IP_DEFAULT_MULTICAST_TTL         = 0x1
+       IP_DF                            = 0x4000
+       IP_DROP_MEMBERSHIP               = 0x24
+       IP_DROP_SOURCE_MEMBERSHIP        = 0x28
+       IP_FREEBIND                      = 0xf
+       IP_HDRINCL                       = 0x3
+       IP_IPSEC_POLICY                  = 0x10
+       IP_MAXPACKET                     = 0xffff
+       IP_MAX_MEMBERSHIPS               = 0x14
+       IP_MF                            = 0x2000
+       IP_MINTTL                        = 0x15
+       IP_MSFILTER                      = 0x29
+       IP_MSS                           = 0x240
+       IP_MTU                           = 0xe
+       IP_MTU_DISCOVER                  = 0xa
+       IP_MULTICAST_ALL                 = 0x31
+       IP_MULTICAST_IF                  = 0x20
+       IP_MULTICAST_LOOP                = 0x22
+       IP_MULTICAST_TTL                 = 0x21
+       IP_NODEFRAG                      = 0x16
+       IP_OFFMASK                       = 0x1fff
+       IP_OPTIONS                       = 0x4
+       IP_ORIGDSTADDR                   = 0x14
+       IP_PASSSEC                       = 0x12
+       IP_PKTINFO                       = 0x8
+       IP_PKTOPTIONS                    = 0x9
+       IP_PMTUDISC                      = 0xa
+       IP_PMTUDISC_DO                   = 0x2
+       IP_PMTUDISC_DONT                 = 0x0
+       IP_PMTUDISC_INTERFACE            = 0x4
+       IP_PMTUDISC_OMIT                 = 0x5
+       IP_PMTUDISC_PROBE                = 0x3
+       IP_PMTUDISC_WANT                 = 0x1
+       IP_RECVERR                       = 0xb
+       IP_RECVOPTS                      = 0x6
+       IP_RECVORIGDSTADDR               = 0x14
+       IP_RECVRETOPTS                   = 0x7
+       IP_RECVTOS                       = 0xd
+       IP_RECVTTL                       = 0xc
+       IP_RETOPTS                       = 0x7
+       IP_RF                            = 0x8000
+       IP_ROUTER_ALERT                  = 0x5
+       IP_TOS                           = 0x1
+       IP_TRANSPARENT                   = 0x13
+       IP_TTL                           = 0x2
+       IP_UNBLOCK_SOURCE                = 0x25
+       IP_UNICAST_IF                    = 0x32
+       IP_XFRM_POLICY                   = 0x11
+       ISIG                             = 0x80
+       ISTRIP                           = 0x20
+       IUCLC                            = 0x1000
+       IUTF8                            = 0x4000
+       IXANY                            = 0x800
+       IXOFF                            = 0x400
+       IXON                             = 0x200
+       LINUX_REBOOT_CMD_CAD_OFF         = 0x0
+       LINUX_REBOOT_CMD_CAD_ON          = 0x89abcdef
+       LINUX_REBOOT_CMD_HALT            = 0xcdef0123
+       LINUX_REBOOT_CMD_KEXEC           = 0x45584543
+       LINUX_REBOOT_CMD_POWER_OFF       = 0x4321fedc
+       LINUX_REBOOT_CMD_RESTART         = 0x1234567
+       LINUX_REBOOT_CMD_RESTART2        = 0xa1b2c3d4
+       LINUX_REBOOT_CMD_SW_SUSPEND      = 0xd000fce2
+       LINUX_REBOOT_MAGIC1              = 0xfee1dead
+       LINUX_REBOOT_MAGIC2              = 0x28121969
+       LOCK_EX                          = 0x2
+       LOCK_NB                          = 0x4
+       LOCK_SH                          = 0x1
+       LOCK_UN                          = 0x8
+       MADV_DODUMP                      = 0x11
+       MADV_DOFORK                      = 0xb
+       MADV_DONTDUMP                    = 0x10
+       MADV_DONTFORK                    = 0xa
+       MADV_DONTNEED                    = 0x4
+       MADV_HUGEPAGE                    = 0xe
+       MADV_HWPOISON                    = 0x64
+       MADV_MERGEABLE                   = 0xc
+       MADV_NOHUGEPAGE                  = 0xf
+       MADV_NORMAL                      = 0x0
+       MADV_RANDOM                      = 0x1
+       MADV_REMOVE                      = 0x9
+       MADV_SEQUENTIAL                  = 0x2
+       MADV_UNMERGEABLE                 = 0xd
+       MADV_WILLNEED                    = 0x3
+       MAP_ANON                         = 0x20
+       MAP_ANONYMOUS                    = 0x20
+       MAP_DENYWRITE                    = 0x800
+       MAP_EXECUTABLE                   = 0x1000
+       MAP_FILE                         = 0x0
+       MAP_FIXED                        = 0x10
+       MAP_GROWSDOWN                    = 0x100
+       MAP_HUGETLB                      = 0x40000
+       MAP_HUGE_MASK                    = 0x3f
+       MAP_HUGE_SHIFT                   = 0x1a
+       MAP_LOCKED                       = 0x80
+       MAP_NONBLOCK                     = 0x10000
+       MAP_NORESERVE                    = 0x40
+       MAP_POPULATE                     = 0x8000
+       MAP_PRIVATE                      = 0x2
+       MAP_SHARED                       = 0x1
+       MAP_STACK                        = 0x20000
+       MAP_TYPE                         = 0xf
+       MCL_CURRENT                      = 0x2000
+       MCL_FUTURE                       = 0x4000
+       MNT_DETACH                       = 0x2
+       MNT_EXPIRE                       = 0x4
+       MNT_FORCE                        = 0x1
+       MSG_CMSG_CLOEXEC                 = 0x40000000
+       MSG_CONFIRM                      = 0x800
+       MSG_CTRUNC                       = 0x8
+       MSG_DONTROUTE                    = 0x4
+       MSG_DONTWAIT                     = 0x40
+       MSG_EOR                          = 0x80
+       MSG_ERRQUEUE                     = 0x2000
+       MSG_FASTOPEN                     = 0x20000000
+       MSG_FIN                          = 0x200
+       MSG_MORE                         = 0x8000
+       MSG_NOSIGNAL                     = 0x4000
+       MSG_OOB                          = 0x1
+       MSG_PEEK                         = 0x2
+       MSG_PROXY                        = 0x10
+       MSG_RST                          = 0x1000
+       MSG_SYN                          = 0x400
+       MSG_TRUNC                        = 0x20
+       MSG_TRYHARD                      = 0x4
+       MSG_WAITALL                      = 0x100
+       MSG_WAITFORONE                   = 0x10000
+       MS_ACTIVE                        = 0x40000000
+       MS_ASYNC                         = 0x1
+       MS_BIND                          = 0x1000
+       MS_DIRSYNC                       = 0x80
+       MS_INVALIDATE                    = 0x2
+       MS_I_VERSION                     = 0x800000
+       MS_KERNMOUNT                     = 0x400000
+       MS_MANDLOCK                      = 0x40
+       MS_MGC_MSK                       = 0xffff0000
+       MS_MGC_VAL                       = 0xc0ed0000
+       MS_MOVE                          = 0x2000
+       MS_NOATIME                       = 0x400
+       MS_NODEV                         = 0x4
+       MS_NODIRATIME                    = 0x800
+       MS_NOEXEC                        = 0x8
+       MS_NOSUID                        = 0x2
+       MS_NOUSER                        = -0x80000000
+       MS_POSIXACL                      = 0x10000
+       MS_PRIVATE                       = 0x40000
+       MS_RDONLY                        = 0x1
+       MS_REC                           = 0x4000
+       MS_RELATIME                      = 0x200000
+       MS_REMOUNT                       = 0x20
+       MS_RMT_MASK                      = 0x800051
+       MS_SHARED                        = 0x100000
+       MS_SILENT                        = 0x8000
+       MS_SLAVE                         = 0x80000
+       MS_STRICTATIME                   = 0x1000000
+       MS_SYNC                          = 0x4
+       MS_SYNCHRONOUS                   = 0x10
+       MS_UNBINDABLE                    = 0x20000
+       NAME_MAX                         = 0xff
+       NETLINK_ADD_MEMBERSHIP           = 0x1
+       NETLINK_AUDIT                    = 0x9
+       NETLINK_BROADCAST_ERROR          = 0x4
+       NETLINK_CONNECTOR                = 0xb
+       NETLINK_CRYPTO                   = 0x15
+       NETLINK_DNRTMSG                  = 0xe
+       NETLINK_DROP_MEMBERSHIP          = 0x2
+       NETLINK_ECRYPTFS                 = 0x13
+       NETLINK_FIB_LOOKUP               = 0xa
+       NETLINK_FIREWALL                 = 0x3
+       NETLINK_GENERIC                  = 0x10
+       NETLINK_INET_DIAG                = 0x4
+       NETLINK_IP6_FW                   = 0xd
+       NETLINK_ISCSI                    = 0x8
+       NETLINK_KOBJECT_UEVENT           = 0xf
+       NETLINK_NETFILTER                = 0xc
+       NETLINK_NFLOG                    = 0x5
+       NETLINK_NO_ENOBUFS               = 0x5
+       NETLINK_PKTINFO                  = 0x3
+       NETLINK_RDMA                     = 0x14
+       NETLINK_ROUTE                    = 0x0
+       NETLINK_RX_RING                  = 0x6
+       NETLINK_SCSITRANSPORT            = 0x12
+       NETLINK_SELINUX                  = 0x7
+       NETLINK_SOCK_DIAG                = 0x4
+       NETLINK_TX_RING                  = 0x7
+       NETLINK_UNUSED                   = 0x1
+       NETLINK_USERSOCK                 = 0x2
+       NETLINK_XFRM                     = 0x6
+       NL0                              = 0x0
+       NL1                              = 0x100
+       NL2                              = 0x200
+       NL3                              = 0x300
+       NLA_ALIGNTO                      = 0x4
+       NLA_F_NESTED                     = 0x8000
+       NLA_F_NET_BYTEORDER              = 0x4000
+       NLA_HDRLEN                       = 0x4
+       NLDLY                            = 0x300
+       NLMSG_ALIGNTO                    = 0x4
+       NLMSG_DONE                       = 0x3
+       NLMSG_ERROR                      = 0x2
+       NLMSG_HDRLEN                     = 0x10
+       NLMSG_MIN_TYPE                   = 0x10
+       NLMSG_NOOP                       = 0x1
+       NLMSG_OVERRUN                    = 0x4
+       NLM_F_ACK                        = 0x4
+       NLM_F_APPEND                     = 0x800
+       NLM_F_ATOMIC                     = 0x400
+       NLM_F_CREATE                     = 0x400
+       NLM_F_DUMP                       = 0x300
+       NLM_F_DUMP_INTR                  = 0x10
+       NLM_F_ECHO                       = 0x8
+       NLM_F_EXCL                       = 0x200
+       NLM_F_MATCH                      = 0x200
+       NLM_F_MULTI                      = 0x2
+       NLM_F_REPLACE                    = 0x100
+       NLM_F_REQUEST                    = 0x1
+       NLM_F_ROOT                       = 0x100
+       NOFLSH                           = 0x80000000
+       OCRNL                            = 0x8
+       OFDEL                            = 0x80
+       OFILL                            = 0x40
+       OLCUC                            = 0x4
+       ONLCR                            = 0x2
+       ONLRET                           = 0x20
+       ONOCR                            = 0x10
+       OPOST                            = 0x1
+       O_ACCMODE                        = 0x3
+       O_APPEND                         = 0x400
+       O_ASYNC                          = 0x2000
+       O_CLOEXEC                        = 0x80000
+       O_CREAT                          = 0x40
+       O_DIRECT                         = 0x20000
+       O_DIRECTORY                      = 0x4000
+       O_DSYNC                          = 0x1000
+       O_EXCL                           = 0x80
+       O_FSYNC                          = 0x101000
+       O_LARGEFILE                      = 0x0
+       O_NDELAY                         = 0x800
+       O_NOATIME                        = 0x40000
+       O_NOCTTY                         = 0x100
+       O_NOFOLLOW                       = 0x8000
+       O_NONBLOCK                       = 0x800
+       O_PATH                           = 0x200000
+       O_RDONLY                         = 0x0
+       O_RDWR                           = 0x2
+       O_RSYNC                          = 0x101000
+       O_SYNC                           = 0x101000
+       O_TMPFILE                        = 0x410000
+       O_TRUNC                          = 0x200
+       O_WRONLY                         = 0x1
+       PACKET_ADD_MEMBERSHIP            = 0x1
+       PACKET_AUXDATA                   = 0x8
+       PACKET_BROADCAST                 = 0x1
+       PACKET_COPY_THRESH               = 0x7
+       PACKET_DROP_MEMBERSHIP           = 0x2
+       PACKET_FANOUT                    = 0x12
+       PACKET_FANOUT_CPU                = 0x2
+       PACKET_FANOUT_FLAG_DEFRAG        = 0x8000
+       PACKET_FANOUT_FLAG_ROLLOVER      = 0x1000
+       PACKET_FANOUT_HASH               = 0x0
+       PACKET_FANOUT_LB                 = 0x1
+       PACKET_FANOUT_QM                 = 0x5
+       PACKET_FANOUT_RND                = 0x4
+       PACKET_FANOUT_ROLLOVER           = 0x3
+       PACKET_FASTROUTE                 = 0x6
+       PACKET_HDRLEN                    = 0xb
+       PACKET_HOST                      = 0x0
+       PACKET_KERNEL                    = 0x7
+       PACKET_LOOPBACK                  = 0x5
+       PACKET_LOSS                      = 0xe
+       PACKET_MR_ALLMULTI               = 0x2
+       PACKET_MR_MULTICAST              = 0x0
+       PACKET_MR_PROMISC                = 0x1
+       PACKET_MR_UNICAST                = 0x3
+       PACKET_MULTICAST                 = 0x2
+       PACKET_ORIGDEV                   = 0x9
+       PACKET_OTHERHOST                 = 0x3
+       PACKET_OUTGOING                  = 0x4
+       PACKET_QDISC_BYPASS              = 0x14
+       PACKET_RECV_OUTPUT               = 0x3
+       PACKET_RESERVE                   = 0xc
+       PACKET_RX_RING                   = 0x5
+       PACKET_STATISTICS                = 0x6
+       PACKET_TIMESTAMP                 = 0x11
+       PACKET_TX_HAS_OFF                = 0x13
+       PACKET_TX_RING                   = 0xd
+       PACKET_TX_TIMESTAMP              = 0x10
+       PACKET_USER                      = 0x6
+       PACKET_VERSION                   = 0xa
+       PACKET_VNET_HDR                  = 0xf
+       PARENB                           = 0x1000
+       PARITY_CRC16_PR0                 = 0x2
+       PARITY_CRC16_PR0_CCITT           = 0x4
+       PARITY_CRC16_PR1                 = 0x3
+       PARITY_CRC16_PR1_CCITT           = 0x5
+       PARITY_CRC32_PR0_CCITT           = 0x6
+       PARITY_CRC32_PR1_CCITT           = 0x7
+       PARITY_DEFAULT                   = 0x0
+       PARITY_NONE                      = 0x1
+       PARMRK                           = 0x8
+       PARODD                           = 0x2000
+       PENDIN                           = 0x20000000
+       PRIO_PGRP                        = 0x1
+       PRIO_PROCESS                     = 0x0
+       PRIO_USER                        = 0x2
+       PROT_EXEC                        = 0x4
+       PROT_GROWSDOWN                   = 0x1000000
+       PROT_GROWSUP                     = 0x2000000
+       PROT_NONE                        = 0x0
+       PROT_READ                        = 0x1
+       PROT_SAO                         = 0x10
+       PROT_WRITE                       = 0x2
+       PR_CAPBSET_DROP                  = 0x18
+       PR_CAPBSET_READ                  = 0x17
+       PR_ENDIAN_BIG                    = 0x0
+       PR_ENDIAN_LITTLE                 = 0x1
+       PR_ENDIAN_PPC_LITTLE             = 0x2
+       PR_FPEMU_NOPRINT                 = 0x1
+       PR_FPEMU_SIGFPE                  = 0x2
+       PR_FP_EXC_ASYNC                  = 0x2
+       PR_FP_EXC_DISABLED               = 0x0
+       PR_FP_EXC_DIV                    = 0x10000
+       PR_FP_EXC_INV                    = 0x100000
+       PR_FP_EXC_NONRECOV               = 0x1
+       PR_FP_EXC_OVF                    = 0x20000
+       PR_FP_EXC_PRECISE                = 0x3
+       PR_FP_EXC_RES                    = 0x80000
+       PR_FP_EXC_SW_ENABLE              = 0x80
+       PR_FP_EXC_UND                    = 0x40000
+       PR_GET_CHILD_SUBREAPER           = 0x25
+       PR_GET_DUMPABLE                  = 0x3
+       PR_GET_ENDIAN                    = 0x13
+       PR_GET_FPEMU                     = 0x9
+       PR_GET_FPEXC                     = 0xb
+       PR_GET_KEEPCAPS                  = 0x7
+       PR_GET_NAME                      = 0x10
+       PR_GET_NO_NEW_PRIVS              = 0x27
+       PR_GET_PDEATHSIG                 = 0x2
+       PR_GET_SECCOMP                   = 0x15
+       PR_GET_SECUREBITS                = 0x1b
+       PR_GET_THP_DISABLE               = 0x2a
+       PR_GET_TID_ADDRESS               = 0x28
+       PR_GET_TIMERSLACK                = 0x1e
+       PR_GET_TIMING                    = 0xd
+       PR_GET_TSC                       = 0x19
+       PR_GET_UNALIGN                   = 0x5
+       PR_MCE_KILL                      = 0x21
+       PR_MCE_KILL_CLEAR                = 0x0
+       PR_MCE_KILL_DEFAULT              = 0x2
+       PR_MCE_KILL_EARLY                = 0x1
+       PR_MCE_KILL_GET                  = 0x22
+       PR_MCE_KILL_LATE                 = 0x0
+       PR_MCE_KILL_SET                  = 0x1
+       PR_SET_CHILD_SUBREAPER           = 0x24
+       PR_SET_DUMPABLE                  = 0x4
+       PR_SET_ENDIAN                    = 0x14
+       PR_SET_FPEMU                     = 0xa
+       PR_SET_FPEXC                     = 0xc
+       PR_SET_KEEPCAPS                  = 0x8
+       PR_SET_MM                        = 0x23
+       PR_SET_MM_ARG_END                = 0x9
+       PR_SET_MM_ARG_START              = 0x8
+       PR_SET_MM_AUXV                   = 0xc
+       PR_SET_MM_BRK                    = 0x7
+       PR_SET_MM_END_CODE               = 0x2
+       PR_SET_MM_END_DATA               = 0x4
+       PR_SET_MM_ENV_END                = 0xb
+       PR_SET_MM_ENV_START              = 0xa
+       PR_SET_MM_EXE_FILE               = 0xd
+       PR_SET_MM_MAP                    = 0xe
+       PR_SET_MM_MAP_SIZE               = 0xf
+       PR_SET_MM_START_BRK              = 0x6
+       PR_SET_MM_START_CODE             = 0x1
+       PR_SET_MM_START_DATA             = 0x3
+       PR_SET_MM_START_STACK            = 0x5
+       PR_SET_NAME                      = 0xf
+       PR_SET_NO_NEW_PRIVS              = 0x26
+       PR_SET_PDEATHSIG                 = 0x1
+       PR_SET_PTRACER                   = 0x59616d61
+       PR_SET_PTRACER_ANY               = -0x1
+       PR_SET_SECCOMP                   = 0x16
+       PR_SET_SECUREBITS                = 0x1c
+       PR_SET_THP_DISABLE               = 0x29
+       PR_SET_TIMERSLACK                = 0x1d
+       PR_SET_TIMING                    = 0xe
+       PR_SET_TSC                       = 0x1a
+       PR_SET_UNALIGN                   = 0x6
+       PR_TASK_PERF_EVENTS_DISABLE      = 0x1f
+       PR_TASK_PERF_EVENTS_ENABLE       = 0x20
+       PR_TIMING_STATISTICAL            = 0x0
+       PR_TIMING_TIMESTAMP              = 0x1
+       PR_TSC_ENABLE                    = 0x1
+       PR_TSC_SIGSEGV                   = 0x2
+       PR_UNALIGN_NOPRINT               = 0x1
+       PR_UNALIGN_SIGBUS                = 0x2
+       PTRACE_ATTACH                    = 0x10
+       PTRACE_CONT                      = 0x7
+       PTRACE_DETACH                    = 0x11
+       PTRACE_EVENT_CLONE               = 0x3
+       PTRACE_EVENT_EXEC                = 0x4
+       PTRACE_EVENT_EXIT                = 0x6
+       PTRACE_EVENT_FORK                = 0x1
+       PTRACE_EVENT_SECCOMP             = 0x7
+       PTRACE_EVENT_STOP                = 0x80
+       PTRACE_EVENT_VFORK               = 0x2
+       PTRACE_EVENT_VFORK_DONE          = 0x5
+       PTRACE_GETEVENTMSG               = 0x4201
+       PTRACE_GETEVRREGS                = 0x14
+       PTRACE_GETFPREGS                 = 0xe
+       PTRACE_GETREGS                   = 0xc
+       PTRACE_GETREGS64                 = 0x16
+       PTRACE_GETREGSET                 = 0x4204
+       PTRACE_GETSIGINFO                = 0x4202
+       PTRACE_GETSIGMASK                = 0x420a
+       PTRACE_GETVRREGS                 = 0x12
+       PTRACE_GETVSRREGS                = 0x1b
+       PTRACE_GET_DEBUGREG              = 0x19
+       PTRACE_INTERRUPT                 = 0x4207
+       PTRACE_KILL                      = 0x8
+       PTRACE_LISTEN                    = 0x4208
+       PTRACE_O_EXITKILL                = 0x100000
+       PTRACE_O_MASK                    = 0x1000ff
+       PTRACE_O_TRACECLONE              = 0x8
+       PTRACE_O_TRACEEXEC               = 0x10
+       PTRACE_O_TRACEEXIT               = 0x40
+       PTRACE_O_TRACEFORK               = 0x2
+       PTRACE_O_TRACESECCOMP            = 0x80
+       PTRACE_O_TRACESYSGOOD            = 0x1
+       PTRACE_O_TRACEVFORK              = 0x4
+       PTRACE_O_TRACEVFORKDONE          = 0x20
+       PTRACE_PEEKDATA                  = 0x2
+       PTRACE_PEEKSIGINFO               = 0x4209
+       PTRACE_PEEKSIGINFO_SHARED        = 0x1
+       PTRACE_PEEKTEXT                  = 0x1
+       PTRACE_PEEKUSR                   = 0x3
+       PTRACE_POKEDATA                  = 0x5
+       PTRACE_POKETEXT                  = 0x4
+       PTRACE_POKEUSR                   = 0x6
+       PTRACE_SEIZE                     = 0x4206
+       PTRACE_SETEVRREGS                = 0x15
+       PTRACE_SETFPREGS                 = 0xf
+       PTRACE_SETOPTIONS                = 0x4200
+       PTRACE_SETREGS                   = 0xd
+       PTRACE_SETREGS64                 = 0x17
+       PTRACE_SETREGSET                 = 0x4205
+       PTRACE_SETSIGINFO                = 0x4203
+       PTRACE_SETSIGMASK                = 0x420b
+       PTRACE_SETVRREGS                 = 0x13
+       PTRACE_SETVSRREGS                = 0x1c
+       PTRACE_SET_DEBUGREG              = 0x1a
+       PTRACE_SINGLEBLOCK               = 0x100
+       PTRACE_SINGLESTEP                = 0x9
+       PTRACE_SYSCALL                   = 0x18
+       PTRACE_TRACEME                   = 0x0
+       PT_CCR                           = 0x26
+       PT_CTR                           = 0x23
+       PT_DAR                           = 0x29
+       PT_DSCR                          = 0x2c
+       PT_DSISR                         = 0x2a
+       PT_FPR0                          = 0x30
+       PT_FPSCR                         = 0x50
+       PT_LNK                           = 0x24
+       PT_MSR                           = 0x21
+       PT_NIP                           = 0x20
+       PT_ORIG_R3                       = 0x22
+       PT_R0                            = 0x0
+       PT_R1                            = 0x1
+       PT_R10                           = 0xa
+       PT_R11                           = 0xb
+       PT_R12                           = 0xc
+       PT_R13                           = 0xd
+       PT_R14                           = 0xe
+       PT_R15                           = 0xf
+       PT_R16                           = 0x10
+       PT_R17                           = 0x11
+       PT_R18                           = 0x12
+       PT_R19                           = 0x13
+       PT_R2                            = 0x2
+       PT_R20                           = 0x14
+       PT_R21                           = 0x15
+       PT_R22                           = 0x16
+       PT_R23                           = 0x17
+       PT_R24                           = 0x18
+       PT_R25                           = 0x19
+       PT_R26                           = 0x1a
+       PT_R27                           = 0x1b
+       PT_R28                           = 0x1c
+       PT_R29                           = 0x1d
+       PT_R3                            = 0x3
+       PT_R30                           = 0x1e
+       PT_R31                           = 0x1f
+       PT_R4                            = 0x4
+       PT_R5                            = 0x5
+       PT_R6                            = 0x6
+       PT_R7                            = 0x7
+       PT_R8                            = 0x8
+       PT_R9                            = 0x9
+       PT_REGS_COUNT                    = 0x2c
+       PT_RESULT                        = 0x2b
+       PT_SOFTE                         = 0x27
+       PT_TRAP                          = 0x28
+       PT_VR0                           = 0x52
+       PT_VRSAVE                        = 0x94
+       PT_VSCR                          = 0x93
+       PT_VSR0                          = 0x96
+       PT_VSR31                         = 0xd4
+       PT_XER                           = 0x25
+       RLIMIT_AS                        = 0x9
+       RLIMIT_CORE                      = 0x4
+       RLIMIT_CPU                       = 0x0
+       RLIMIT_DATA                      = 0x2
+       RLIMIT_FSIZE                     = 0x1
+       RLIMIT_NOFILE                    = 0x7
+       RLIMIT_STACK                     = 0x3
+       RLIM_INFINITY                    = -0x1
+       RTAX_ADVMSS                      = 0x8
+       RTAX_CWND                        = 0x7
+       RTAX_FEATURES                    = 0xc
+       RTAX_FEATURE_ALLFRAG             = 0x8
+       RTAX_FEATURE_ECN                 = 0x1
+       RTAX_FEATURE_SACK                = 0x2
+       RTAX_FEATURE_TIMESTAMP           = 0x4
+       RTAX_HOPLIMIT                    = 0xa
+       RTAX_INITCWND                    = 0xb
+       RTAX_INITRWND                    = 0xe
+       RTAX_LOCK                        = 0x1
+       RTAX_MAX                         = 0xf
+       RTAX_MTU                         = 0x2
+       RTAX_QUICKACK                    = 0xf
+       RTAX_REORDERING                  = 0x9
+       RTAX_RTO_MIN                     = 0xd
+       RTAX_RTT                         = 0x4
+       RTAX_RTTVAR                      = 0x5
+       RTAX_SSTHRESH                    = 0x6
+       RTAX_UNSPEC                      = 0x0
+       RTAX_WINDOW                      = 0x3
+       RTA_ALIGNTO                      = 0x4
+       RTA_MAX                          = 0x11
+       RTCF_DIRECTSRC                   = 0x4000000
+       RTCF_DOREDIRECT                  = 0x1000000
+       RTCF_LOG                         = 0x2000000
+       RTCF_MASQ                        = 0x400000
+       RTCF_NAT                         = 0x800000
+       RTCF_VALVE                       = 0x200000
+       RTF_ADDRCLASSMASK                = 0xf8000000
+       RTF_ADDRCONF                     = 0x40000
+       RTF_ALLONLINK                    = 0x20000
+       RTF_BROADCAST                    = 0x10000000
+       RTF_CACHE                        = 0x1000000
+       RTF_DEFAULT                      = 0x10000
+       RTF_DYNAMIC                      = 0x10
+       RTF_FLOW                         = 0x2000000
+       RTF_GATEWAY                      = 0x2
+       RTF_HOST                         = 0x4
+       RTF_INTERFACE                    = 0x40000000
+       RTF_IRTT                         = 0x100
+       RTF_LINKRT                       = 0x100000
+       RTF_LOCAL                        = 0x80000000
+       RTF_MODIFIED                     = 0x20
+       RTF_MSS                          = 0x40
+       RTF_MTU                          = 0x40
+       RTF_MULTICAST                    = 0x20000000
+       RTF_NAT                          = 0x8000000
+       RTF_NOFORWARD                    = 0x1000
+       RTF_NONEXTHOP                    = 0x200000
+       RTF_NOPMTUDISC                   = 0x4000
+       RTF_POLICY                       = 0x4000000
+       RTF_REINSTATE                    = 0x8
+       RTF_REJECT                       = 0x200
+       RTF_STATIC                       = 0x400
+       RTF_THROW                        = 0x2000
+       RTF_UP                           = 0x1
+       RTF_WINDOW                       = 0x80
+       RTF_XRESOLVE                     = 0x800
+       RTM_BASE                         = 0x10
+       RTM_DELACTION                    = 0x31
+       RTM_DELADDR                      = 0x15
+       RTM_DELADDRLABEL                 = 0x49
+       RTM_DELLINK                      = 0x11
+       RTM_DELMDB                       = 0x55
+       RTM_DELNEIGH                     = 0x1d
+       RTM_DELQDISC                     = 0x25
+       RTM_DELROUTE                     = 0x19
+       RTM_DELRULE                      = 0x21
+       RTM_DELTCLASS                    = 0x29
+       RTM_DELTFILTER                   = 0x2d
+       RTM_F_CLONED                     = 0x200
+       RTM_F_EQUALIZE                   = 0x400
+       RTM_F_NOTIFY                     = 0x100
+       RTM_F_PREFIX                     = 0x800
+       RTM_GETACTION                    = 0x32
+       RTM_GETADDR                      = 0x16
+       RTM_GETADDRLABEL                 = 0x4a
+       RTM_GETANYCAST                   = 0x3e
+       RTM_GETDCB                       = 0x4e
+       RTM_GETLINK                      = 0x12
+       RTM_GETMDB                       = 0x56
+       RTM_GETMULTICAST                 = 0x3a
+       RTM_GETNEIGH                     = 0x1e
+       RTM_GETNEIGHTBL                  = 0x42
+       RTM_GETNETCONF                   = 0x52
+       RTM_GETQDISC                     = 0x26
+       RTM_GETROUTE                     = 0x1a
+       RTM_GETRULE                      = 0x22
+       RTM_GETTCLASS                    = 0x2a
+       RTM_GETTFILTER                   = 0x2e
+       RTM_MAX                          = 0x57
+       RTM_NEWACTION                    = 0x30
+       RTM_NEWADDR                      = 0x14
+       RTM_NEWADDRLABEL                 = 0x48
+       RTM_NEWLINK                      = 0x10
+       RTM_NEWMDB                       = 0x54
+       RTM_NEWNDUSEROPT                 = 0x44
+       RTM_NEWNEIGH                     = 0x1c
+       RTM_NEWNEIGHTBL                  = 0x40
+       RTM_NEWNETCONF                   = 0x50
+       RTM_NEWPREFIX                    = 0x34
+       RTM_NEWQDISC                     = 0x24
+       RTM_NEWROUTE                     = 0x18
+       RTM_NEWRULE                      = 0x20
+       RTM_NEWTCLASS                    = 0x28
+       RTM_NEWTFILTER                   = 0x2c
+       RTM_NR_FAMILIES                  = 0x12
+       RTM_NR_MSGTYPES                  = 0x48
+       RTM_SETDCB                       = 0x4f
+       RTM_SETLINK                      = 0x13
+       RTM_SETNEIGHTBL                  = 0x43
+       RTNH_ALIGNTO                     = 0x4
+       RTNH_F_DEAD                      = 0x1
+       RTNH_F_ONLINK                    = 0x4
+       RTNH_F_PERVASIVE                 = 0x2
+       RTN_MAX                          = 0xb
+       RTPROT_BIRD                      = 0xc
+       RTPROT_BOOT                      = 0x3
+       RTPROT_DHCP                      = 0x10
+       RTPROT_DNROUTED                  = 0xd
+       RTPROT_GATED                     = 0x8
+       RTPROT_KERNEL                    = 0x2
+       RTPROT_MROUTED                   = 0x11
+       RTPROT_MRT                       = 0xa
+       RTPROT_NTK                       = 0xf
+       RTPROT_RA                        = 0x9
+       RTPROT_REDIRECT                  = 0x1
+       RTPROT_STATIC                    = 0x4
+       RTPROT_UNSPEC                    = 0x0
+       RTPROT_XORP                      = 0xe
+       RTPROT_ZEBRA                     = 0xb
+       RT_CLASS_DEFAULT                 = 0xfd
+       RT_CLASS_LOCAL                   = 0xff
+       RT_CLASS_MAIN                    = 0xfe
+       RT_CLASS_MAX                     = 0xff
+       RT_CLASS_UNSPEC                  = 0x0
+       RUSAGE_CHILDREN                  = -0x1
+       RUSAGE_SELF                      = 0x0
+       RUSAGE_THREAD                    = 0x1
+       SCM_CREDENTIALS                  = 0x2
+       SCM_RIGHTS                       = 0x1
+       SCM_TIMESTAMP                    = 0x1d
+       SCM_TIMESTAMPING                 = 0x25
+       SCM_TIMESTAMPNS                  = 0x23
+       SCM_WIFI_STATUS                  = 0x29
+       SHUT_RD                          = 0x0
+       SHUT_RDWR                        = 0x2
+       SHUT_WR                          = 0x1
+       SIOCADDDLCI                      = 0x8980
+       SIOCADDMULTI                     = 0x8931
+       SIOCADDRT                        = 0x890b
+       SIOCATMARK                       = 0x8905
+       SIOCDARP                         = 0x8953
+       SIOCDELDLCI                      = 0x8981
+       SIOCDELMULTI                     = 0x8932
+       SIOCDELRT                        = 0x890c
+       SIOCDEVPRIVATE                   = 0x89f0
+       SIOCDIFADDR                      = 0x8936
+       SIOCDRARP                        = 0x8960
+       SIOCGARP                         = 0x8954
+       SIOCGIFADDR                      = 0x8915
+       SIOCGIFBR                        = 0x8940
+       SIOCGIFBRDADDR                   = 0x8919
+       SIOCGIFCONF                      = 0x8912
+       SIOCGIFCOUNT                     = 0x8938
+       SIOCGIFDSTADDR                   = 0x8917
+       SIOCGIFENCAP                     = 0x8925
+       SIOCGIFFLAGS                     = 0x8913
+       SIOCGIFHWADDR                    = 0x8927
+       SIOCGIFINDEX                     = 0x8933
+       SIOCGIFMAP                       = 0x8970
+       SIOCGIFMEM                       = 0x891f
+       SIOCGIFMETRIC                    = 0x891d
+       SIOCGIFMTU                       = 0x8921
+       SIOCGIFNAME                      = 0x8910
+       SIOCGIFNETMASK                   = 0x891b
+       SIOCGIFPFLAGS                    = 0x8935
+       SIOCGIFSLAVE                     = 0x8929
+       SIOCGIFTXQLEN                    = 0x8942
+       SIOCGPGRP                        = 0x8904
+       SIOCGRARP                        = 0x8961
+       SIOCGSTAMP                       = 0x8906
+       SIOCGSTAMPNS                     = 0x8907
+       SIOCPROTOPRIVATE                 = 0x89e0
+       SIOCRTMSG                        = 0x890d
+       SIOCSARP                         = 0x8955
+       SIOCSIFADDR                      = 0x8916
+       SIOCSIFBR                        = 0x8941
+       SIOCSIFBRDADDR                   = 0x891a
+       SIOCSIFDSTADDR                   = 0x8918
+       SIOCSIFENCAP                     = 0x8926
+       SIOCSIFFLAGS                     = 0x8914
+       SIOCSIFHWADDR                    = 0x8924
+       SIOCSIFHWBROADCAST               = 0x8937
+       SIOCSIFLINK                      = 0x8911
+       SIOCSIFMAP                       = 0x8971
+       SIOCSIFMEM                       = 0x8920
+       SIOCSIFMETRIC                    = 0x891e
+       SIOCSIFMTU                       = 0x8922
+       SIOCSIFNAME                      = 0x8923
+       SIOCSIFNETMASK                   = 0x891c
+       SIOCSIFPFLAGS                    = 0x8934
+       SIOCSIFSLAVE                     = 0x8930
+       SIOCSIFTXQLEN                    = 0x8943
+       SIOCSPGRP                        = 0x8902
+       SIOCSRARP                        = 0x8962
+       SOCK_CLOEXEC                     = 0x80000
+       SOCK_DCCP                        = 0x6
+       SOCK_DGRAM                       = 0x2
+       SOCK_NONBLOCK                    = 0x800
+       SOCK_PACKET                      = 0xa
+       SOCK_RAW                         = 0x3
+       SOCK_RDM                         = 0x4
+       SOCK_SEQPACKET                   = 0x5
+       SOCK_STREAM                      = 0x1
+       SOL_AAL                          = 0x109
+       SOL_ATM                          = 0x108
+       SOL_DECNET                       = 0x105
+       SOL_ICMPV6                       = 0x3a
+       SOL_IP                           = 0x0
+       SOL_IPV6                         = 0x29
+       SOL_IRDA                         = 0x10a
+       SOL_PACKET                       = 0x107
+       SOL_RAW                          = 0xff
+       SOL_SOCKET                       = 0x1
+       SOL_TCP                          = 0x6
+       SOL_X25                          = 0x106
+       SOMAXCONN                        = 0x80
+       SO_ACCEPTCONN                    = 0x1e
+       SO_ATTACH_FILTER                 = 0x1a
+       SO_BINDTODEVICE                  = 0x19
+       SO_BPF_EXTENSIONS                = 0x30
+       SO_BROADCAST                     = 0x6
+       SO_BSDCOMPAT                     = 0xe
+       SO_BUSY_POLL                     = 0x2e
+       SO_DEBUG                         = 0x1
+       SO_DETACH_FILTER                 = 0x1b
+       SO_DOMAIN                        = 0x27
+       SO_DONTROUTE                     = 0x5
+       SO_ERROR                         = 0x4
+       SO_GET_FILTER                    = 0x1a
+       SO_KEEPALIVE                     = 0x9
+       SO_LINGER                        = 0xd
+       SO_LOCK_FILTER                   = 0x2c
+       SO_MARK                          = 0x24
+       SO_MAX_PACING_RATE               = 0x2f
+       SO_NOFCS                         = 0x2b
+       SO_NO_CHECK                      = 0xb
+       SO_OOBINLINE                     = 0xa
+       SO_PASSCRED                      = 0x14
+       SO_PASSSEC                       = 0x22
+       SO_PEEK_OFF                      = 0x2a
+       SO_PEERCRED                      = 0x15
+       SO_PEERNAME                      = 0x1c
+       SO_PEERSEC                       = 0x1f
+       SO_PRIORITY                      = 0xc
+       SO_PROTOCOL                      = 0x26
+       SO_RCVBUF                        = 0x8
+       SO_RCVBUFFORCE                   = 0x21
+       SO_RCVLOWAT                      = 0x10
+       SO_RCVTIMEO                      = 0x12
+       SO_REUSEADDR                     = 0x2
+       SO_REUSEPORT                     = 0xf
+       SO_RXQ_OVFL                      = 0x28
+       SO_SECURITY_AUTHENTICATION       = 0x16
+       SO_SECURITY_ENCRYPTION_NETWORK   = 0x18
+       SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
+       SO_SELECT_ERR_QUEUE              = 0x2d
+       SO_SNDBUF                        = 0x7
+       SO_SNDBUFFORCE                   = 0x20
+       SO_SNDLOWAT                      = 0x11
+       SO_SNDTIMEO                      = 0x13
+       SO_TIMESTAMP                     = 0x1d
+       SO_TIMESTAMPING                  = 0x25
+       SO_TIMESTAMPNS                   = 0x23
+       SO_TYPE                          = 0x3
+       SO_WIFI_STATUS                   = 0x29
+       S_BLKSIZE                        = 0x200
+       S_IEXEC                          = 0x40
+       S_IFBLK                          = 0x6000
+       S_IFCHR                          = 0x2000
+       S_IFDIR                          = 0x4000
+       S_IFIFO                          = 0x1000
+       S_IFLNK                          = 0xa000
+       S_IFMT                           = 0xf000
+       S_IFREG                          = 0x8000
+       S_IFSOCK                         = 0xc000
+       S_IREAD                          = 0x100
+       S_IRGRP                          = 0x20
+       S_IROTH                          = 0x4
+       S_IRUSR                          = 0x100
+       S_IRWXG                          = 0x38
+       S_IRWXO                          = 0x7
+       S_IRWXU                          = 0x1c0
+       S_ISGID                          = 0x400
+       S_ISUID                          = 0x800
+       S_ISVTX                          = 0x200
+       S_IWGRP                          = 0x10
+       S_IWOTH                          = 0x2
+       S_IWRITE                         = 0x80
+       S_IWUSR                          = 0x80
+       S_IXGRP                          = 0x8
+       S_IXOTH                          = 0x1
+       S_IXUSR                          = 0x40
+       TAB0                             = 0x0
+       TAB1                             = 0x400
+       TAB2                             = 0x800
+       TAB3                             = 0xc00
+       TABDLY                           = 0xc00
+       TCFLSH                           = 0x2000741f
+       TCGETA                           = 0x40147417
+       TCGETS                           = 0x402c7413
+       TCIFLUSH                         = 0x0
+       TCIOFF                           = 0x2
+       TCIOFLUSH                        = 0x2
+       TCION                            = 0x3
+       TCOFLUSH                         = 0x1
+       TCOOFF                           = 0x0
+       TCOON                            = 0x1
+       TCP_CONGESTION                   = 0xd
+       TCP_COOKIE_IN_ALWAYS             = 0x1
+       TCP_COOKIE_MAX                   = 0x10
+       TCP_COOKIE_MIN                   = 0x8
+       TCP_COOKIE_OUT_NEVER             = 0x2
+       TCP_COOKIE_PAIR_SIZE             = 0x20
+       TCP_COOKIE_TRANSACTIONS          = 0xf
+       TCP_CORK                         = 0x3
+       TCP_DEFER_ACCEPT                 = 0x9
+       TCP_FASTOPEN                     = 0x17
+       TCP_INFO                         = 0xb
+       TCP_KEEPCNT                      = 0x6
+       TCP_KEEPIDLE                     = 0x4
+       TCP_KEEPINTVL                    = 0x5
+       TCP_LINGER2                      = 0x8
+       TCP_MAXSEG                       = 0x2
+       TCP_MAXWIN                       = 0xffff
+       TCP_MAX_WINSHIFT                 = 0xe
+       TCP_MD5SIG                       = 0xe
+       TCP_MD5SIG_MAXKEYLEN             = 0x50
+       TCP_MSS                          = 0x200
+       TCP_MSS_DEFAULT                  = 0x218
+       TCP_MSS_DESIRED                  = 0x4c4
+       TCP_NODELAY                      = 0x1
+       TCP_QUEUE_SEQ                    = 0x15
+       TCP_QUICKACK                     = 0xc
+       TCP_REPAIR                       = 0x13
+       TCP_REPAIR_OPTIONS               = 0x16
+       TCP_REPAIR_QUEUE                 = 0x14
+       TCP_SYNCNT                       = 0x7
+       TCP_S_DATA_IN                    = 0x4
+       TCP_S_DATA_OUT                   = 0x8
+       TCP_THIN_DUPACK                  = 0x11
+       TCP_THIN_LINEAR_TIMEOUTS         = 0x10
+       TCP_TIMESTAMP                    = 0x18
+       TCP_USER_TIMEOUT                 = 0x12
+       TCP_WINDOW_CLAMP                 = 0xa
+       TCSAFLUSH                        = 0x2
+       TCSBRK                           = 0x2000741d
+       TCSBRKP                          = 0x5425
+       TCSETA                           = 0x80147418
+       TCSETAF                          = 0x8014741c
+       TCSETAW                          = 0x80147419
+       TCSETS                           = 0x802c7414
+       TCSETSF                          = 0x802c7416
+       TCSETSW                          = 0x802c7415
+       TCXONC                           = 0x2000741e
+       TIOCCBRK                         = 0x5428
+       TIOCCONS                         = 0x541d
+       TIOCEXCL                         = 0x540c
+       TIOCGDEV                         = 0x40045432
+       TIOCGETC                         = 0x40067412
+       TIOCGETD                         = 0x5424
+       TIOCGETP                         = 0x40067408
+       TIOCGEXCL                        = 0x40045440
+       TIOCGICOUNT                      = 0x545d
+       TIOCGLCKTRMIOS                   = 0x5456
+       TIOCGLTC                         = 0x40067474
+       TIOCGPGRP                        = 0x40047477
+       TIOCGPKT                         = 0x40045438
+       TIOCGPTLCK                       = 0x40045439
+       TIOCGPTN                         = 0x40045430
+       TIOCGRS485                       = 0x542e
+       TIOCGSERIAL                      = 0x541e
+       TIOCGSID                         = 0x5429
+       TIOCGSOFTCAR                     = 0x5419
+       TIOCGWINSZ                       = 0x40087468
+       TIOCINQ                          = 0x4004667f
+       TIOCLINUX                        = 0x541c
+       TIOCMBIC                         = 0x5417
+       TIOCMBIS                         = 0x5416
+       TIOCMGET                         = 0x5415
+       TIOCMIWAIT                       = 0x545c
+       TIOCMSET                         = 0x5418
+       TIOCM_CAR                        = 0x40
+       TIOCM_CD                         = 0x40
+       TIOCM_CTS                        = 0x20
+       TIOCM_DSR                        = 0x100
+       TIOCM_DTR                        = 0x2
+       TIOCM_LE                         = 0x1
+       TIOCM_LOOP                       = 0x8000
+       TIOCM_OUT1                       = 0x2000
+       TIOCM_OUT2                       = 0x4000
+       TIOCM_RI                         = 0x80
+       TIOCM_RNG                        = 0x80
+       TIOCM_RTS                        = 0x4
+       TIOCM_SR                         = 0x10
+       TIOCM_ST                         = 0x8
+       TIOCNOTTY                        = 0x5422
+       TIOCNXCL                         = 0x540d
+       TIOCOUTQ                         = 0x40047473
+       TIOCPKT                          = 0x5420
+       TIOCPKT_DATA                     = 0x0
+       TIOCPKT_DOSTOP                   = 0x20
+       TIOCPKT_FLUSHREAD                = 0x1
+       TIOCPKT_FLUSHWRITE               = 0x2
+       TIOCPKT_IOCTL                    = 0x40
+       TIOCPKT_NOSTOP                   = 0x10
+       TIOCPKT_START                    = 0x8
+       TIOCPKT_STOP                     = 0x4
+       TIOCSBRK                         = 0x5427
+       TIOCSCTTY                        = 0x540e
+       TIOCSERCONFIG                    = 0x5453
+       TIOCSERGETLSR                    = 0x5459
+       TIOCSERGETMULTI                  = 0x545a
+       TIOCSERGSTRUCT                   = 0x5458
+       TIOCSERGWILD                     = 0x5454
+       TIOCSERSETMULTI                  = 0x545b
+       TIOCSERSWILD                     = 0x5455
+       TIOCSER_TEMT                     = 0x1
+       TIOCSETC                         = 0x80067411
+       TIOCSETD                         = 0x5423
+       TIOCSETN                         = 0x8006740a
+       TIOCSETP                         = 0x80067409
+       TIOCSIG                          = 0x80045436
+       TIOCSLCKTRMIOS                   = 0x5457
+       TIOCSLTC                         = 0x80067475
+       TIOCSPGRP                        = 0x80047476
+       TIOCSPTLCK                       = 0x80045431
+       TIOCSRS485                       = 0x542f
+       TIOCSSERIAL                      = 0x541f
+       TIOCSSOFTCAR                     = 0x541a
+       TIOCSTART                        = 0x2000746e
+       TIOCSTI                          = 0x5412
+       TIOCSTOP                         = 0x2000746f
+       TIOCSWINSZ                       = 0x80087467
+       TIOCVHANGUP                      = 0x5437
+       TOSTOP                           = 0x400000
+       TUNATTACHFILTER                  = 0x801054d5
+       TUNDETACHFILTER                  = 0x801054d6
+       TUNGETFEATURES                   = 0x400454cf
+       TUNGETFILTER                     = 0x401054db
+       TUNGETIFF                        = 0x400454d2
+       TUNGETSNDBUF                     = 0x400454d3
+       TUNGETVNETHDRSZ                  = 0x400454d7
+       TUNSETDEBUG                      = 0x800454c9
+       TUNSETGROUP                      = 0x800454ce
+       TUNSETIFF                        = 0x800454ca
+       TUNSETIFINDEX                    = 0x800454da
+       TUNSETLINK                       = 0x800454cd
+       TUNSETNOCSUM                     = 0x800454c8
+       TUNSETOFFLOAD                    = 0x800454d0
+       TUNSETOWNER                      = 0x800454cc
+       TUNSETPERSIST                    = 0x800454cb
+       TUNSETQUEUE                      = 0x800454d9
+       TUNSETSNDBUF                     = 0x800454d4
+       TUNSETTXFILTER                   = 0x800454d1
+       TUNSETVNETHDRSZ                  = 0x800454d8
+       VDISCARD                         = 0x10
+       VEOF                             = 0x4
+       VEOL                             = 0x6
+       VEOL2                            = 0x8
+       VERASE                           = 0x2
+       VINTR                            = 0x0
+       VKILL                            = 0x3
+       VLNEXT                           = 0xf
+       VMIN                             = 0x5
+       VQUIT                            = 0x1
+       VREPRINT                         = 0xb
+       VSTART                           = 0xd
+       VSTOP                            = 0xe
+       VSUSP                            = 0xc
+       VSWTC                            = 0x9
+       VT0                              = 0x0
+       VT1                              = 0x10000
+       VTDLY                            = 0x10000
+       VTIME                            = 0x7
+       VWERASE                          = 0xa
+       WALL                             = 0x40000000
+       WCLONE                           = 0x80000000
+       WCONTINUED                       = 0x8
+       WEXITED                          = 0x4
+       WNOHANG                          = 0x1
+       WNOTHREAD                        = 0x20000000
+       WNOWAIT                          = 0x1000000
+       WORDSIZE                         = 0x40
+       WSTOPPED                         = 0x2
+       WUNTRACED                        = 0x2
+       XCASE                            = 0x4000
+       XTABS                            = 0xc00
+)
+
+// Errors
+const (
+       E2BIG           = syscall.Errno(0x7)
+       EACCES          = syscall.Errno(0xd)
+       EADDRINUSE      = syscall.Errno(0x62)
+       EADDRNOTAVAIL   = syscall.Errno(0x63)
+       EADV            = syscall.Errno(0x44)
+       EAFNOSUPPORT    = syscall.Errno(0x61)
+       EAGAIN          = syscall.Errno(0xb)
+       EALREADY        = syscall.Errno(0x72)
+       EBADE           = syscall.Errno(0x34)
+       EBADF           = syscall.Errno(0x9)
+       EBADFD          = syscall.Errno(0x4d)
+       EBADMSG         = syscall.Errno(0x4a)
+       EBADR           = syscall.Errno(0x35)
+       EBADRQC         = syscall.Errno(0x38)
+       EBADSLT         = syscall.Errno(0x39)
+       EBFONT          = syscall.Errno(0x3b)
+       EBUSY           = syscall.Errno(0x10)
+       ECANCELED       = syscall.Errno(0x7d)
+       ECHILD          = syscall.Errno(0xa)
+       ECHRNG          = syscall.Errno(0x2c)
+       ECOMM           = syscall.Errno(0x46)
+       ECONNABORTED    = syscall.Errno(0x67)
+       ECONNREFUSED    = syscall.Errno(0x6f)
+       ECONNRESET      = syscall.Errno(0x68)
+       EDEADLK         = syscall.Errno(0x23)
+       EDEADLOCK       = syscall.Errno(0x3a)
+       EDESTADDRREQ    = syscall.Errno(0x59)
+       EDOM            = syscall.Errno(0x21)
+       EDOTDOT         = syscall.Errno(0x49)
+       EDQUOT          = syscall.Errno(0x7a)
+       EEXIST          = syscall.Errno(0x11)
+       EFAULT          = syscall.Errno(0xe)
+       EFBIG           = syscall.Errno(0x1b)
+       EHOSTDOWN       = syscall.Errno(0x70)
+       EHOSTUNREACH    = syscall.Errno(0x71)
+       EHWPOISON       = syscall.Errno(0x85)
+       EIDRM           = syscall.Errno(0x2b)
+       EILSEQ          = syscall.Errno(0x54)
+       EINPROGRESS     = syscall.Errno(0x73)
+       EINTR           = syscall.Errno(0x4)
+       EINVAL          = syscall.Errno(0x16)
+       EIO             = syscall.Errno(0x5)
+       EISCONN         = syscall.Errno(0x6a)
+       EISDIR          = syscall.Errno(0x15)
+       EISNAM          = syscall.Errno(0x78)
+       EKEYEXPIRED     = syscall.Errno(0x7f)
+       EKEYREJECTED    = syscall.Errno(0x81)
+       EKEYREVOKED     = syscall.Errno(0x80)
+       EL2HLT          = syscall.Errno(0x33)
+       EL2NSYNC        = syscall.Errno(0x2d)
+       EL3HLT          = syscall.Errno(0x2e)
+       EL3RST          = syscall.Errno(0x2f)
+       ELIBACC         = syscall.Errno(0x4f)
+       ELIBBAD         = syscall.Errno(0x50)
+       ELIBEXEC        = syscall.Errno(0x53)
+       ELIBMAX         = syscall.Errno(0x52)
+       ELIBSCN         = syscall.Errno(0x51)
+       ELNRNG          = syscall.Errno(0x30)
+       ELOOP           = syscall.Errno(0x28)
+       EMEDIUMTYPE     = syscall.Errno(0x7c)
+       EMFILE          = syscall.Errno(0x18)
+       EMLINK          = syscall.Errno(0x1f)
+       EMSGSIZE        = syscall.Errno(0x5a)
+       EMULTIHOP       = syscall.Errno(0x48)
+       ENAMETOOLONG    = syscall.Errno(0x24)
+       ENAVAIL         = syscall.Errno(0x77)
+       ENETDOWN        = syscall.Errno(0x64)
+       ENETRESET       = syscall.Errno(0x66)
+       ENETUNREACH     = syscall.Errno(0x65)
+       ENFILE          = syscall.Errno(0x17)
+       ENOANO          = syscall.Errno(0x37)
+       ENOBUFS         = syscall.Errno(0x69)
+       ENOCSI          = syscall.Errno(0x32)
+       ENODATA         = syscall.Errno(0x3d)
+       ENODEV          = syscall.Errno(0x13)
+       ENOENT          = syscall.Errno(0x2)
+       ENOEXEC         = syscall.Errno(0x8)
+       ENOKEY          = syscall.Errno(0x7e)
+       ENOLCK          = syscall.Errno(0x25)
+       ENOLINK         = syscall.Errno(0x43)
+       ENOMEDIUM       = syscall.Errno(0x7b)
+       ENOMEM          = syscall.Errno(0xc)
+       ENOMSG          = syscall.Errno(0x2a)
+       ENONET          = syscall.Errno(0x40)
+       ENOPKG          = syscall.Errno(0x41)
+       ENOPROTOOPT     = syscall.Errno(0x5c)
+       ENOSPC          = syscall.Errno(0x1c)
+       ENOSR           = syscall.Errno(0x3f)
+       ENOSTR          = syscall.Errno(0x3c)
+       ENOSYS          = syscall.Errno(0x26)
+       ENOTBLK         = syscall.Errno(0xf)
+       ENOTCONN        = syscall.Errno(0x6b)
+       ENOTDIR         = syscall.Errno(0x14)
+       ENOTEMPTY       = syscall.Errno(0x27)
+       ENOTNAM         = syscall.Errno(0x76)
+       ENOTRECOVERABLE = syscall.Errno(0x83)
+       ENOTSOCK        = syscall.Errno(0x58)
+       ENOTSUP         = syscall.Errno(0x5f)
+       ENOTTY          = syscall.Errno(0x19)
+       ENOTUNIQ        = syscall.Errno(0x4c)
+       ENXIO           = syscall.Errno(0x6)
+       EOPNOTSUPP      = syscall.Errno(0x5f)
+       EOVERFLOW       = syscall.Errno(0x4b)
+       EOWNERDEAD      = syscall.Errno(0x82)
+       EPERM           = syscall.Errno(0x1)
+       EPFNOSUPPORT    = syscall.Errno(0x60)
+       EPIPE           = syscall.Errno(0x20)
+       EPROTO          = syscall.Errno(0x47)
+       EPROTONOSUPPORT = syscall.Errno(0x5d)
+       EPROTOTYPE      = syscall.Errno(0x5b)
+       ERANGE          = syscall.Errno(0x22)
+       EREMCHG         = syscall.Errno(0x4e)
+       EREMOTE         = syscall.Errno(0x42)
+       EREMOTEIO       = syscall.Errno(0x79)
+       ERESTART        = syscall.Errno(0x55)
+       ERFKILL         = syscall.Errno(0x84)
+       EROFS           = syscall.Errno(0x1e)
+       ESHUTDOWN       = syscall.Errno(0x6c)
+       ESOCKTNOSUPPORT = syscall.Errno(0x5e)
+       ESPIPE          = syscall.Errno(0x1d)
+       ESRCH           = syscall.Errno(0x3)
+       ESRMNT          = syscall.Errno(0x45)
+       ESTALE          = syscall.Errno(0x74)
+       ESTRPIPE        = syscall.Errno(0x56)
+       ETIME           = syscall.Errno(0x3e)
+       ETIMEDOUT       = syscall.Errno(0x6e)
+       ETOOMANYREFS    = syscall.Errno(0x6d)
+       ETXTBSY         = syscall.Errno(0x1a)
+       EUCLEAN         = syscall.Errno(0x75)
+       EUNATCH         = syscall.Errno(0x31)
+       EUSERS          = syscall.Errno(0x57)
+       EWOULDBLOCK     = syscall.Errno(0xb)
+       EXDEV           = syscall.Errno(0x12)
+       EXFULL          = syscall.Errno(0x36)
+)
+
+// Signals
+const (
+       SIGABRT   = syscall.Signal(0x6)
+       SIGALRM   = syscall.Signal(0xe)
+       SIGBUS    = syscall.Signal(0x7)
+       SIGCHLD   = syscall.Signal(0x11)
+       SIGCLD    = syscall.Signal(0x11)
+       SIGCONT   = syscall.Signal(0x12)
+       SIGFPE    = syscall.Signal(0x8)
+       SIGHUP    = syscall.Signal(0x1)
+       SIGILL    = syscall.Signal(0x4)
+       SIGINT    = syscall.Signal(0x2)
+       SIGIO     = syscall.Signal(0x1d)
+       SIGIOT    = syscall.Signal(0x6)
+       SIGKILL   = syscall.Signal(0x9)
+       SIGPIPE   = syscall.Signal(0xd)
+       SIGPOLL   = syscall.Signal(0x1d)
+       SIGPROF   = syscall.Signal(0x1b)
+       SIGPWR    = syscall.Signal(0x1e)
+       SIGQUIT   = syscall.Signal(0x3)
+       SIGSEGV   = syscall.Signal(0xb)
+       SIGSTKFLT = syscall.Signal(0x10)
+       SIGSTOP   = syscall.Signal(0x13)
+       SIGSYS    = syscall.Signal(0x1f)
+       SIGTERM   = syscall.Signal(0xf)
+       SIGTRAP   = syscall.Signal(0x5)
+       SIGTSTP   = syscall.Signal(0x14)
+       SIGTTIN   = syscall.Signal(0x15)
+       SIGTTOU   = syscall.Signal(0x16)
+       SIGUNUSED = syscall.Signal(0x1f)
+       SIGURG    = syscall.Signal(0x17)
+       SIGUSR1   = syscall.Signal(0xa)
+       SIGUSR2   = syscall.Signal(0xc)
+       SIGVTALRM = syscall.Signal(0x1a)
+       SIGWINCH  = syscall.Signal(0x1c)
+       SIGXCPU   = syscall.Signal(0x18)
+       SIGXFSZ   = syscall.Signal(0x19)
+)
+
+// 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:   "no such device or address",
+       7:   "argument list too long",
+       8:   "exec format error",
+       9:   "bad file descriptor",
+       10:  "no child processes",
+       11:  "resource temporarily unavailable",
+       12:  "cannot allocate memory",
+       13:  "permission denied",
+       14:  "bad address",
+       15:  "block device required",
+       16:  "device or resource busy",
+       17:  "file exists",
+       18:  "invalid cross-device link",
+       19:  "no such 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:  "numerical result out of range",
+       35:  "resource deadlock avoided",
+       36:  "file name too long",
+       37:  "no locks available",
+       38:  "function not implemented",
+       39:  "directory not empty",
+       40:  "too many levels of symbolic links",
+       42:  "no message of desired type",
+       43:  "identifier removed",
+       44:  "channel number out of range",
+       45:  "level 2 not synchronized",
+       46:  "level 3 halted",
+       47:  "level 3 reset",
+       48:  "link number out of range",
+       49:  "protocol driver not attached",
+       50:  "no CSI structure available",
+       51:  "level 2 halted",
+       52:  "invalid exchange",
+       53:  "invalid request descriptor",
+       54:  "exchange full",
+       55:  "no anode",
+       56:  "invalid request code",
+       57:  "invalid slot",
+       58:  "file locking deadlock error",
+       59:  "bad font file format",
+       60:  "device not a stream",
+       61:  "no data available",
+       62:  "timer expired",
+       63:  "out of streams resources",
+       64:  "machine is not on the network",
+       65:  "package not installed",
+       66:  "object is remote",
+       67:  "link has been severed",
+       68:  "advertise error",
+       69:  "srmount error",
+       70:  "communication error on send",
+       71:  "protocol error",
+       72:  "multihop attempted",
+       73:  "RFS specific error",
+       74:  "bad message",
+       75:  "value too large for defined data type",
+       76:  "name not unique on network",
+       77:  "file descriptor in bad state",
+       78:  "remote address changed",
+       79:  "can not access a needed shared library",
+       80:  "accessing a corrupted shared library",
+       81:  ".lib section in a.out corrupted",
+       82:  "attempting to link in too many shared libraries",
+       83:  "cannot exec a shared library directly",
+       84:  "invalid or incomplete multibyte or wide character",
+       85:  "interrupted system call should be restarted",
+       86:  "streams pipe error",
+       87:  "too many users",
+       88:  "socket operation on non-socket",
+       89:  "destination address required",
+       90:  "message too long",
+       91:  "protocol wrong type for socket",
+       92:  "protocol not available",
+       93:  "protocol not supported",
+       94:  "socket type not supported",
+       95:  "operation not supported",
+       96:  "protocol family not supported",
+       97:  "address family not supported by protocol",
+       98:  "address already in use",
+       99:  "cannot assign requested address",
+       100: "network is down",
+       101: "network is unreachable",
+       102: "network dropped connection on reset",
+       103: "software caused connection abort",
+       104: "connection reset by peer",
+       105: "no buffer space available",
+       106: "transport endpoint is already connected",
+       107: "transport endpoint is not connected",
+       108: "cannot send after transport endpoint shutdown",
+       109: "too many references: cannot splice",
+       110: "connection timed out",
+       111: "connection refused",
+       112: "host is down",
+       113: "no route to host",
+       114: "operation already in progress",
+       115: "operation now in progress",
+       116: "stale file handle",
+       117: "structure needs cleaning",
+       118: "not a XENIX named type file",
+       119: "no XENIX semaphores available",
+       120: "is a named type file",
+       121: "remote I/O error",
+       122: "disk quota exceeded",
+       123: "no medium found",
+       124: "wrong medium type",
+       125: "operation canceled",
+       126: "required key not available",
+       127: "key has expired",
+       128: "key has been revoked",
+       129: "key was rejected by service",
+       130: "owner died",
+       131: "state not recoverable",
+       132: "operation not possible due to RF-kill",
+       133: "memory page has hardware error",
+}
+
+// Signal table
+var signals = [...]string{
+       1:  "hangup",
+       2:  "interrupt",
+       3:  "quit",
+       4:  "illegal instruction",
+       5:  "trace/breakpoint trap",
+       6:  "aborted",
+       7:  "bus error",
+       8:  "floating point exception",
+       9:  "killed",
+       10: "user defined signal 1",
+       11: "segmentation fault",
+       12: "user defined signal 2",
+       13: "broken pipe",
+       14: "alarm clock",
+       15: "terminated",
+       16: "stack fault",
+       17: "child exited",
+       18: "continued",
+       19: "stopped (signal)",
+       20: "stopped",
+       21: "stopped (tty input)",
+       22: "stopped (tty output)",
+       23: "urgent I/O condition",
+       24: "CPU time limit exceeded",
+       25: "file size limit exceeded",
+       26: "virtual timer expired",
+       27: "profiling timer expired",
+       28: "window changed",
+       29: "I/O possible",
+       30: "power failure",
+       31: "bad system call",
+}
diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go
new file mode 100644 (file)
index 0000000..0861bd5
--- /dev/null
@@ -0,0 +1,1968 @@
+// mkerrors.sh -m64
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build ppc64le,linux
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m64 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+       AF_ALG                           = 0x26
+       AF_APPLETALK                     = 0x5
+       AF_ASH                           = 0x12
+       AF_ATMPVC                        = 0x8
+       AF_ATMSVC                        = 0x14
+       AF_AX25                          = 0x3
+       AF_BLUETOOTH                     = 0x1f
+       AF_BRIDGE                        = 0x7
+       AF_CAIF                          = 0x25
+       AF_CAN                           = 0x1d
+       AF_DECnet                        = 0xc
+       AF_ECONET                        = 0x13
+       AF_FILE                          = 0x1
+       AF_IEEE802154                    = 0x24
+       AF_INET                          = 0x2
+       AF_INET6                         = 0xa
+       AF_IPX                           = 0x4
+       AF_IRDA                          = 0x17
+       AF_ISDN                          = 0x22
+       AF_IUCV                          = 0x20
+       AF_KEY                           = 0xf
+       AF_LLC                           = 0x1a
+       AF_LOCAL                         = 0x1
+       AF_MAX                           = 0x29
+       AF_NETBEUI                       = 0xd
+       AF_NETLINK                       = 0x10
+       AF_NETROM                        = 0x6
+       AF_NFC                           = 0x27
+       AF_PACKET                        = 0x11
+       AF_PHONET                        = 0x23
+       AF_PPPOX                         = 0x18
+       AF_RDS                           = 0x15
+       AF_ROSE                          = 0xb
+       AF_ROUTE                         = 0x10
+       AF_RXRPC                         = 0x21
+       AF_SECURITY                      = 0xe
+       AF_SNA                           = 0x16
+       AF_TIPC                          = 0x1e
+       AF_UNIX                          = 0x1
+       AF_UNSPEC                        = 0x0
+       AF_VSOCK                         = 0x28
+       AF_WANPIPE                       = 0x19
+       AF_X25                           = 0x9
+       ARPHRD_ADAPT                     = 0x108
+       ARPHRD_APPLETLK                  = 0x8
+       ARPHRD_ARCNET                    = 0x7
+       ARPHRD_ASH                       = 0x30d
+       ARPHRD_ATM                       = 0x13
+       ARPHRD_AX25                      = 0x3
+       ARPHRD_BIF                       = 0x307
+       ARPHRD_CAIF                      = 0x336
+       ARPHRD_CAN                       = 0x118
+       ARPHRD_CHAOS                     = 0x5
+       ARPHRD_CISCO                     = 0x201
+       ARPHRD_CSLIP                     = 0x101
+       ARPHRD_CSLIP6                    = 0x103
+       ARPHRD_DDCMP                     = 0x205
+       ARPHRD_DLCI                      = 0xf
+       ARPHRD_ECONET                    = 0x30e
+       ARPHRD_EETHER                    = 0x2
+       ARPHRD_ETHER                     = 0x1
+       ARPHRD_EUI64                     = 0x1b
+       ARPHRD_FCAL                      = 0x311
+       ARPHRD_FCFABRIC                  = 0x313
+       ARPHRD_FCPL                      = 0x312
+       ARPHRD_FCPP                      = 0x310
+       ARPHRD_FDDI                      = 0x306
+       ARPHRD_FRAD                      = 0x302
+       ARPHRD_HDLC                      = 0x201
+       ARPHRD_HIPPI                     = 0x30c
+       ARPHRD_HWX25                     = 0x110
+       ARPHRD_IEEE1394                  = 0x18
+       ARPHRD_IEEE802                   = 0x6
+       ARPHRD_IEEE80211                 = 0x321
+       ARPHRD_IEEE80211_PRISM           = 0x322
+       ARPHRD_IEEE80211_RADIOTAP        = 0x323
+       ARPHRD_IEEE802154                = 0x324
+       ARPHRD_IEEE802154_MONITOR        = 0x325
+       ARPHRD_IEEE802_TR                = 0x320
+       ARPHRD_INFINIBAND                = 0x20
+       ARPHRD_IP6GRE                    = 0x337
+       ARPHRD_IPDDP                     = 0x309
+       ARPHRD_IPGRE                     = 0x30a
+       ARPHRD_IRDA                      = 0x30f
+       ARPHRD_LAPB                      = 0x204
+       ARPHRD_LOCALTLK                  = 0x305
+       ARPHRD_LOOPBACK                  = 0x304
+       ARPHRD_METRICOM                  = 0x17
+       ARPHRD_NETLINK                   = 0x338
+       ARPHRD_NETROM                    = 0x0
+       ARPHRD_NONE                      = 0xfffe
+       ARPHRD_PHONET                    = 0x334
+       ARPHRD_PHONET_PIPE               = 0x335
+       ARPHRD_PIMREG                    = 0x30b
+       ARPHRD_PPP                       = 0x200
+       ARPHRD_PRONET                    = 0x4
+       ARPHRD_RAWHDLC                   = 0x206
+       ARPHRD_ROSE                      = 0x10e
+       ARPHRD_RSRVD                     = 0x104
+       ARPHRD_SIT                       = 0x308
+       ARPHRD_SKIP                      = 0x303
+       ARPHRD_SLIP                      = 0x100
+       ARPHRD_SLIP6                     = 0x102
+       ARPHRD_TUNNEL                    = 0x300
+       ARPHRD_TUNNEL6                   = 0x301
+       ARPHRD_VOID                      = 0xffff
+       ARPHRD_X25                       = 0x10f
+       B0                               = 0x0
+       B1000000                         = 0x17
+       B110                             = 0x3
+       B115200                          = 0x11
+       B1152000                         = 0x18
+       B1200                            = 0x9
+       B134                             = 0x4
+       B150                             = 0x5
+       B1500000                         = 0x19
+       B1800                            = 0xa
+       B19200                           = 0xe
+       B200                             = 0x6
+       B2000000                         = 0x1a
+       B230400                          = 0x12
+       B2400                            = 0xb
+       B2500000                         = 0x1b
+       B300                             = 0x7
+       B3000000                         = 0x1c
+       B3500000                         = 0x1d
+       B38400                           = 0xf
+       B4000000                         = 0x1e
+       B460800                          = 0x13
+       B4800                            = 0xc
+       B50                              = 0x1
+       B500000                          = 0x14
+       B57600                           = 0x10
+       B576000                          = 0x15
+       B600                             = 0x8
+       B75                              = 0x2
+       B921600                          = 0x16
+       B9600                            = 0xd
+       BOTHER                           = 0x1f
+       BPF_A                            = 0x10
+       BPF_ABS                          = 0x20
+       BPF_ADD                          = 0x0
+       BPF_ALU                          = 0x4
+       BPF_AND                          = 0x50
+       BPF_B                            = 0x10
+       BPF_DIV                          = 0x30
+       BPF_H                            = 0x8
+       BPF_IMM                          = 0x0
+       BPF_IND                          = 0x40
+       BPF_JA                           = 0x0
+       BPF_JEQ                          = 0x10
+       BPF_JGE                          = 0x30
+       BPF_JGT                          = 0x20
+       BPF_JMP                          = 0x5
+       BPF_JSET                         = 0x40
+       BPF_K                            = 0x0
+       BPF_LD                           = 0x0
+       BPF_LDX                          = 0x1
+       BPF_LEN                          = 0x80
+       BPF_LSH                          = 0x60
+       BPF_MAJOR_VERSION                = 0x1
+       BPF_MAXINSNS                     = 0x1000
+       BPF_MEM                          = 0x60
+       BPF_MEMWORDS                     = 0x10
+       BPF_MINOR_VERSION                = 0x1
+       BPF_MISC                         = 0x7
+       BPF_MOD                          = 0x90
+       BPF_MSH                          = 0xa0
+       BPF_MUL                          = 0x20
+       BPF_NEG                          = 0x80
+       BPF_OR                           = 0x40
+       BPF_RET                          = 0x6
+       BPF_RSH                          = 0x70
+       BPF_ST                           = 0x2
+       BPF_STX                          = 0x3
+       BPF_SUB                          = 0x10
+       BPF_TAX                          = 0x0
+       BPF_TXA                          = 0x80
+       BPF_W                            = 0x0
+       BPF_X                            = 0x8
+       BPF_XOR                          = 0xa0
+       BRKINT                           = 0x2
+       BS0                              = 0x0
+       BS1                              = 0x8000
+       BSDLY                            = 0x8000
+       CBAUD                            = 0xff
+       CBAUDEX                          = 0x0
+       CFLUSH                           = 0xf
+       CIBAUD                           = 0xff0000
+       CLOCAL                           = 0x8000
+       CLOCK_BOOTTIME                   = 0x7
+       CLOCK_BOOTTIME_ALARM             = 0x9
+       CLOCK_DEFAULT                    = 0x0
+       CLOCK_EXT                        = 0x1
+       CLOCK_INT                        = 0x2
+       CLOCK_MONOTONIC                  = 0x1
+       CLOCK_MONOTONIC_COARSE           = 0x6
+       CLOCK_MONOTONIC_RAW              = 0x4
+       CLOCK_PROCESS_CPUTIME_ID         = 0x2
+       CLOCK_REALTIME                   = 0x0
+       CLOCK_REALTIME_ALARM             = 0x8
+       CLOCK_REALTIME_COARSE            = 0x5
+       CLOCK_THREAD_CPUTIME_ID          = 0x3
+       CLOCK_TXFROMRX                   = 0x4
+       CLOCK_TXINT                      = 0x3
+       CLONE_CHILD_CLEARTID             = 0x200000
+       CLONE_CHILD_SETTID               = 0x1000000
+       CLONE_DETACHED                   = 0x400000
+       CLONE_FILES                      = 0x400
+       CLONE_FS                         = 0x200
+       CLONE_IO                         = 0x80000000
+       CLONE_NEWIPC                     = 0x8000000
+       CLONE_NEWNET                     = 0x40000000
+       CLONE_NEWNS                      = 0x20000
+       CLONE_NEWPID                     = 0x20000000
+       CLONE_NEWUSER                    = 0x10000000
+       CLONE_NEWUTS                     = 0x4000000
+       CLONE_PARENT                     = 0x8000
+       CLONE_PARENT_SETTID              = 0x100000
+       CLONE_PTRACE                     = 0x2000
+       CLONE_SETTLS                     = 0x80000
+       CLONE_SIGHAND                    = 0x800
+       CLONE_SYSVSEM                    = 0x40000
+       CLONE_THREAD                     = 0x10000
+       CLONE_UNTRACED                   = 0x800000
+       CLONE_VFORK                      = 0x4000
+       CLONE_VM                         = 0x100
+       CMSPAR                           = 0x40000000
+       CR0                              = 0x0
+       CR1                              = 0x1000
+       CR2                              = 0x2000
+       CR3                              = 0x3000
+       CRDLY                            = 0x3000
+       CREAD                            = 0x800
+       CRTSCTS                          = 0x80000000
+       CS5                              = 0x0
+       CS6                              = 0x100
+       CS7                              = 0x200
+       CS8                              = 0x300
+       CSIGNAL                          = 0xff
+       CSIZE                            = 0x300
+       CSTART                           = 0x11
+       CSTATUS                          = 0x0
+       CSTOP                            = 0x13
+       CSTOPB                           = 0x400
+       CSUSP                            = 0x1a
+       DT_BLK                           = 0x6
+       DT_CHR                           = 0x2
+       DT_DIR                           = 0x4
+       DT_FIFO                          = 0x1
+       DT_LNK                           = 0xa
+       DT_REG                           = 0x8
+       DT_SOCK                          = 0xc
+       DT_UNKNOWN                       = 0x0
+       DT_WHT                           = 0xe
+       ECHO                             = 0x8
+       ECHOCTL                          = 0x40
+       ECHOE                            = 0x2
+       ECHOK                            = 0x4
+       ECHOKE                           = 0x1
+       ECHONL                           = 0x10
+       ECHOPRT                          = 0x20
+       ENCODING_DEFAULT                 = 0x0
+       ENCODING_FM_MARK                 = 0x3
+       ENCODING_FM_SPACE                = 0x4
+       ENCODING_MANCHESTER              = 0x5
+       ENCODING_NRZ                     = 0x1
+       ENCODING_NRZI                    = 0x2
+       EPOLLERR                         = 0x8
+       EPOLLET                          = 0x80000000
+       EPOLLHUP                         = 0x10
+       EPOLLIN                          = 0x1
+       EPOLLMSG                         = 0x400
+       EPOLLONESHOT                     = 0x40000000
+       EPOLLOUT                         = 0x4
+       EPOLLPRI                         = 0x2
+       EPOLLRDBAND                      = 0x80
+       EPOLLRDHUP                       = 0x2000
+       EPOLLRDNORM                      = 0x40
+       EPOLLWAKEUP                      = 0x20000000
+       EPOLLWRBAND                      = 0x200
+       EPOLLWRNORM                      = 0x100
+       EPOLL_CLOEXEC                    = 0x80000
+       EPOLL_CTL_ADD                    = 0x1
+       EPOLL_CTL_DEL                    = 0x2
+       EPOLL_CTL_MOD                    = 0x3
+       ETH_P_1588                       = 0x88f7
+       ETH_P_8021AD                     = 0x88a8
+       ETH_P_8021AH                     = 0x88e7
+       ETH_P_8021Q                      = 0x8100
+       ETH_P_802_2                      = 0x4
+       ETH_P_802_3                      = 0x1
+       ETH_P_802_3_MIN                  = 0x600
+       ETH_P_802_EX1                    = 0x88b5
+       ETH_P_AARP                       = 0x80f3
+       ETH_P_AF_IUCV                    = 0xfbfb
+       ETH_P_ALL                        = 0x3
+       ETH_P_AOE                        = 0x88a2
+       ETH_P_ARCNET                     = 0x1a
+       ETH_P_ARP                        = 0x806
+       ETH_P_ATALK                      = 0x809b
+       ETH_P_ATMFATE                    = 0x8884
+       ETH_P_ATMMPOA                    = 0x884c
+       ETH_P_AX25                       = 0x2
+       ETH_P_BATMAN                     = 0x4305
+       ETH_P_BPQ                        = 0x8ff
+       ETH_P_CAIF                       = 0xf7
+       ETH_P_CAN                        = 0xc
+       ETH_P_CANFD                      = 0xd
+       ETH_P_CONTROL                    = 0x16
+       ETH_P_CUST                       = 0x6006
+       ETH_P_DDCMP                      = 0x6
+       ETH_P_DEC                        = 0x6000
+       ETH_P_DIAG                       = 0x6005
+       ETH_P_DNA_DL                     = 0x6001
+       ETH_P_DNA_RC                     = 0x6002
+       ETH_P_DNA_RT                     = 0x6003
+       ETH_P_DSA                        = 0x1b
+       ETH_P_ECONET                     = 0x18
+       ETH_P_EDSA                       = 0xdada
+       ETH_P_FCOE                       = 0x8906
+       ETH_P_FIP                        = 0x8914
+       ETH_P_HDLC                       = 0x19
+       ETH_P_IEEE802154                 = 0xf6
+       ETH_P_IEEEPUP                    = 0xa00
+       ETH_P_IEEEPUPAT                  = 0xa01
+       ETH_P_IP                         = 0x800
+       ETH_P_IPV6                       = 0x86dd
+       ETH_P_IPX                        = 0x8137
+       ETH_P_IRDA                       = 0x17
+       ETH_P_LAT                        = 0x6004
+       ETH_P_LINK_CTL                   = 0x886c
+       ETH_P_LOCALTALK                  = 0x9
+       ETH_P_LOOP                       = 0x60
+       ETH_P_MOBITEX                    = 0x15
+       ETH_P_MPLS_MC                    = 0x8848
+       ETH_P_MPLS_UC                    = 0x8847
+       ETH_P_MVRP                       = 0x88f5
+       ETH_P_PAE                        = 0x888e
+       ETH_P_PAUSE                      = 0x8808
+       ETH_P_PHONET                     = 0xf5
+       ETH_P_PPPTALK                    = 0x10
+       ETH_P_PPP_DISC                   = 0x8863
+       ETH_P_PPP_MP                     = 0x8
+       ETH_P_PPP_SES                    = 0x8864
+       ETH_P_PRP                        = 0x88fb
+       ETH_P_PUP                        = 0x200
+       ETH_P_PUPAT                      = 0x201
+       ETH_P_QINQ1                      = 0x9100
+       ETH_P_QINQ2                      = 0x9200
+       ETH_P_QINQ3                      = 0x9300
+       ETH_P_RARP                       = 0x8035
+       ETH_P_SCA                        = 0x6007
+       ETH_P_SLOW                       = 0x8809
+       ETH_P_SNAP                       = 0x5
+       ETH_P_TDLS                       = 0x890d
+       ETH_P_TEB                        = 0x6558
+       ETH_P_TIPC                       = 0x88ca
+       ETH_P_TRAILER                    = 0x1c
+       ETH_P_TR_802_2                   = 0x11
+       ETH_P_WAN_PPP                    = 0x7
+       ETH_P_WCCP                       = 0x883e
+       ETH_P_X25                        = 0x805
+       EXTA                             = 0xe
+       EXTB                             = 0xf
+       EXTPROC                          = 0x10000000
+       FD_CLOEXEC                       = 0x1
+       FD_SETSIZE                       = 0x400
+       FF0                              = 0x0
+       FF1                              = 0x4000
+       FFDLY                            = 0x4000
+       FLUSHO                           = 0x800000
+       F_DUPFD                          = 0x0
+       F_DUPFD_CLOEXEC                  = 0x406
+       F_EXLCK                          = 0x4
+       F_GETFD                          = 0x1
+       F_GETFL                          = 0x3
+       F_GETLEASE                       = 0x401
+       F_GETLK                          = 0x5
+       F_GETLK64                        = 0xc
+       F_GETOWN                         = 0x9
+       F_GETOWN_EX                      = 0x10
+       F_GETPIPE_SZ                     = 0x408
+       F_GETSIG                         = 0xb
+       F_LOCK                           = 0x1
+       F_NOTIFY                         = 0x402
+       F_OK                             = 0x0
+       F_RDLCK                          = 0x0
+       F_SETFD                          = 0x2
+       F_SETFL                          = 0x4
+       F_SETLEASE                       = 0x400
+       F_SETLK                          = 0x6
+       F_SETLK64                        = 0xd
+       F_SETLKW                         = 0x7
+       F_SETLKW64                       = 0xe
+       F_SETOWN                         = 0x8
+       F_SETOWN_EX                      = 0xf
+       F_SETPIPE_SZ                     = 0x407
+       F_SETSIG                         = 0xa
+       F_SHLCK                          = 0x8
+       F_TEST                           = 0x3
+       F_TLOCK                          = 0x2
+       F_ULOCK                          = 0x0
+       F_UNLCK                          = 0x2
+       F_WRLCK                          = 0x1
+       HUPCL                            = 0x4000
+       IBSHIFT                          = 0x10
+       ICANON                           = 0x100
+       ICMPV6_FILTER                    = 0x1
+       ICRNL                            = 0x100
+       IEXTEN                           = 0x400
+       IFA_F_DADFAILED                  = 0x8
+       IFA_F_DEPRECATED                 = 0x20
+       IFA_F_HOMEADDRESS                = 0x10
+       IFA_F_NODAD                      = 0x2
+       IFA_F_OPTIMISTIC                 = 0x4
+       IFA_F_PERMANENT                  = 0x80
+       IFA_F_SECONDARY                  = 0x1
+       IFA_F_TEMPORARY                  = 0x1
+       IFA_F_TENTATIVE                  = 0x40
+       IFA_MAX                          = 0x7
+       IFF_802_1Q_VLAN                  = 0x1
+       IFF_ALLMULTI                     = 0x200
+       IFF_ATTACH_QUEUE                 = 0x200
+       IFF_AUTOMEDIA                    = 0x4000
+       IFF_BONDING                      = 0x20
+       IFF_BRIDGE_PORT                  = 0x4000
+       IFF_BROADCAST                    = 0x2
+       IFF_DEBUG                        = 0x4
+       IFF_DETACH_QUEUE                 = 0x400
+       IFF_DISABLE_NETPOLL              = 0x1000
+       IFF_DONT_BRIDGE                  = 0x800
+       IFF_DORMANT                      = 0x20000
+       IFF_DYNAMIC                      = 0x8000
+       IFF_EBRIDGE                      = 0x2
+       IFF_ECHO                         = 0x40000
+       IFF_ISATAP                       = 0x80
+       IFF_LIVE_ADDR_CHANGE             = 0x100000
+       IFF_LOOPBACK                     = 0x8
+       IFF_LOWER_UP                     = 0x10000
+       IFF_MACVLAN                      = 0x200000
+       IFF_MACVLAN_PORT                 = 0x2000
+       IFF_MASTER                       = 0x400
+       IFF_MASTER_8023AD                = 0x8
+       IFF_MASTER_ALB                   = 0x10
+       IFF_MASTER_ARPMON                = 0x100
+       IFF_MULTICAST                    = 0x1000
+       IFF_MULTI_QUEUE                  = 0x100
+       IFF_NOARP                        = 0x80
+       IFF_NOFILTER                     = 0x1000
+       IFF_NOTRAILERS                   = 0x20
+       IFF_NO_PI                        = 0x1000
+       IFF_ONE_QUEUE                    = 0x2000
+       IFF_OVS_DATAPATH                 = 0x8000
+       IFF_PERSIST                      = 0x800
+       IFF_POINTOPOINT                  = 0x10
+       IFF_PORTSEL                      = 0x2000
+       IFF_PROMISC                      = 0x100
+       IFF_RUNNING                      = 0x40
+       IFF_SLAVE                        = 0x800
+       IFF_SLAVE_INACTIVE               = 0x4
+       IFF_SLAVE_NEEDARP                = 0x40
+       IFF_SUPP_NOFCS                   = 0x80000
+       IFF_TAP                          = 0x2
+       IFF_TEAM_PORT                    = 0x40000
+       IFF_TUN                          = 0x1
+       IFF_TUN_EXCL                     = 0x8000
+       IFF_TX_SKB_SHARING               = 0x10000
+       IFF_UNICAST_FLT                  = 0x20000
+       IFF_UP                           = 0x1
+       IFF_VNET_HDR                     = 0x4000
+       IFF_VOLATILE                     = 0x70c5a
+       IFF_WAN_HDLC                     = 0x200
+       IFF_XMIT_DST_RELEASE             = 0x400
+       IFNAMSIZ                         = 0x10
+       IGNBRK                           = 0x1
+       IGNCR                            = 0x80
+       IGNPAR                           = 0x4
+       IMAXBEL                          = 0x2000
+       INLCR                            = 0x40
+       INPCK                            = 0x10
+       IN_ACCESS                        = 0x1
+       IN_ALL_EVENTS                    = 0xfff
+       IN_ATTRIB                        = 0x4
+       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_CLOEXEC                       = 0x80000
+       IN_CLOSE                         = 0x18
+       IN_CLOSE_NOWRITE                 = 0x10
+       IN_CLOSE_WRITE                   = 0x8
+       IN_CREATE                        = 0x100
+       IN_DELETE                        = 0x200
+       IN_DELETE_SELF                   = 0x400
+       IN_DONT_FOLLOW                   = 0x2000000
+       IN_EXCL_UNLINK                   = 0x4000000
+       IN_IGNORED                       = 0x8000
+       IN_ISDIR                         = 0x40000000
+       IN_LOOPBACKNET                   = 0x7f
+       IN_MASK_ADD                      = 0x20000000
+       IN_MODIFY                        = 0x2
+       IN_MOVE                          = 0xc0
+       IN_MOVED_FROM                    = 0x40
+       IN_MOVED_TO                      = 0x80
+       IN_MOVE_SELF                     = 0x800
+       IN_NONBLOCK                      = 0x800
+       IN_ONESHOT                       = 0x80000000
+       IN_ONLYDIR                       = 0x1000000
+       IN_OPEN                          = 0x20
+       IN_Q_OVERFLOW                    = 0x4000
+       IN_UNMOUNT                       = 0x2000
+       IPPROTO_AH                       = 0x33
+       IPPROTO_BEETPH                   = 0x5e
+       IPPROTO_COMP                     = 0x6c
+       IPPROTO_DCCP                     = 0x21
+       IPPROTO_DSTOPTS                  = 0x3c
+       IPPROTO_EGP                      = 0x8
+       IPPROTO_ENCAP                    = 0x62
+       IPPROTO_ESP                      = 0x32
+       IPPROTO_FRAGMENT                 = 0x2c
+       IPPROTO_GRE                      = 0x2f
+       IPPROTO_HOPOPTS                  = 0x0
+       IPPROTO_ICMP                     = 0x1
+       IPPROTO_ICMPV6                   = 0x3a
+       IPPROTO_IDP                      = 0x16
+       IPPROTO_IGMP                     = 0x2
+       IPPROTO_IP                       = 0x0
+       IPPROTO_IPIP                     = 0x4
+       IPPROTO_IPV6                     = 0x29
+       IPPROTO_MH                       = 0x87
+       IPPROTO_MTP                      = 0x5c
+       IPPROTO_NONE                     = 0x3b
+       IPPROTO_PIM                      = 0x67
+       IPPROTO_PUP                      = 0xc
+       IPPROTO_RAW                      = 0xff
+       IPPROTO_ROUTING                  = 0x2b
+       IPPROTO_RSVP                     = 0x2e
+       IPPROTO_SCTP                     = 0x84
+       IPPROTO_TCP                      = 0x6
+       IPPROTO_TP                       = 0x1d
+       IPPROTO_UDP                      = 0x11
+       IPPROTO_UDPLITE                  = 0x88
+       IPV6_2292DSTOPTS                 = 0x4
+       IPV6_2292HOPLIMIT                = 0x8
+       IPV6_2292HOPOPTS                 = 0x3
+       IPV6_2292PKTINFO                 = 0x2
+       IPV6_2292PKTOPTIONS              = 0x6
+       IPV6_2292RTHDR                   = 0x5
+       IPV6_ADDRFORM                    = 0x1
+       IPV6_ADD_MEMBERSHIP              = 0x14
+       IPV6_AUTHHDR                     = 0xa
+       IPV6_CHECKSUM                    = 0x7
+       IPV6_DROP_MEMBERSHIP             = 0x15
+       IPV6_DSTOPTS                     = 0x3b
+       IPV6_HOPLIMIT                    = 0x34
+       IPV6_HOPOPTS                     = 0x36
+       IPV6_IPSEC_POLICY                = 0x22
+       IPV6_JOIN_ANYCAST                = 0x1b
+       IPV6_JOIN_GROUP                  = 0x14
+       IPV6_LEAVE_ANYCAST               = 0x1c
+       IPV6_LEAVE_GROUP                 = 0x15
+       IPV6_MTU                         = 0x18
+       IPV6_MTU_DISCOVER                = 0x17
+       IPV6_MULTICAST_HOPS              = 0x12
+       IPV6_MULTICAST_IF                = 0x11
+       IPV6_MULTICAST_LOOP              = 0x13
+       IPV6_NEXTHOP                     = 0x9
+       IPV6_PKTINFO                     = 0x32
+       IPV6_PMTUDISC_DO                 = 0x2
+       IPV6_PMTUDISC_DONT               = 0x0
+       IPV6_PMTUDISC_PROBE              = 0x3
+       IPV6_PMTUDISC_WANT               = 0x1
+       IPV6_RECVDSTOPTS                 = 0x3a
+       IPV6_RECVERR                     = 0x19
+       IPV6_RECVHOPLIMIT                = 0x33
+       IPV6_RECVHOPOPTS                 = 0x35
+       IPV6_RECVPKTINFO                 = 0x31
+       IPV6_RECVRTHDR                   = 0x38
+       IPV6_RECVTCLASS                  = 0x42
+       IPV6_ROUTER_ALERT                = 0x16
+       IPV6_RTHDR                       = 0x39
+       IPV6_RTHDRDSTOPTS                = 0x37
+       IPV6_RTHDR_LOOSE                 = 0x0
+       IPV6_RTHDR_STRICT                = 0x1
+       IPV6_RTHDR_TYPE_0                = 0x0
+       IPV6_RXDSTOPTS                   = 0x3b
+       IPV6_RXHOPOPTS                   = 0x36
+       IPV6_TCLASS                      = 0x43
+       IPV6_UNICAST_HOPS                = 0x10
+       IPV6_V6ONLY                      = 0x1a
+       IPV6_XFRM_POLICY                 = 0x23
+       IP_ADD_MEMBERSHIP                = 0x23
+       IP_ADD_SOURCE_MEMBERSHIP         = 0x27
+       IP_BLOCK_SOURCE                  = 0x26
+       IP_DEFAULT_MULTICAST_LOOP        = 0x1
+       IP_DEFAULT_MULTICAST_TTL         = 0x1
+       IP_DF                            = 0x4000
+       IP_DROP_MEMBERSHIP               = 0x24
+       IP_DROP_SOURCE_MEMBERSHIP        = 0x28
+       IP_FREEBIND                      = 0xf
+       IP_HDRINCL                       = 0x3
+       IP_IPSEC_POLICY                  = 0x10
+       IP_MAXPACKET                     = 0xffff
+       IP_MAX_MEMBERSHIPS               = 0x14
+       IP_MF                            = 0x2000
+       IP_MINTTL                        = 0x15
+       IP_MSFILTER                      = 0x29
+       IP_MSS                           = 0x240
+       IP_MTU                           = 0xe
+       IP_MTU_DISCOVER                  = 0xa
+       IP_MULTICAST_ALL                 = 0x31
+       IP_MULTICAST_IF                  = 0x20
+       IP_MULTICAST_LOOP                = 0x22
+       IP_MULTICAST_TTL                 = 0x21
+       IP_OFFMASK                       = 0x1fff
+       IP_OPTIONS                       = 0x4
+       IP_ORIGDSTADDR                   = 0x14
+       IP_PASSSEC                       = 0x12
+       IP_PKTINFO                       = 0x8
+       IP_PKTOPTIONS                    = 0x9
+       IP_PMTUDISC                      = 0xa
+       IP_PMTUDISC_DO                   = 0x2
+       IP_PMTUDISC_DONT                 = 0x0
+       IP_PMTUDISC_PROBE                = 0x3
+       IP_PMTUDISC_WANT                 = 0x1
+       IP_RECVERR                       = 0xb
+       IP_RECVOPTS                      = 0x6
+       IP_RECVORIGDSTADDR               = 0x14
+       IP_RECVRETOPTS                   = 0x7
+       IP_RECVTOS                       = 0xd
+       IP_RECVTTL                       = 0xc
+       IP_RETOPTS                       = 0x7
+       IP_RF                            = 0x8000
+       IP_ROUTER_ALERT                  = 0x5
+       IP_TOS                           = 0x1
+       IP_TRANSPARENT                   = 0x13
+       IP_TTL                           = 0x2
+       IP_UNBLOCK_SOURCE                = 0x25
+       IP_UNICAST_IF                    = 0x32
+       IP_XFRM_POLICY                   = 0x11
+       ISIG                             = 0x80
+       ISTRIP                           = 0x20
+       IUCLC                            = 0x1000
+       IUTF8                            = 0x4000
+       IXANY                            = 0x800
+       IXOFF                            = 0x400
+       IXON                             = 0x200
+       LINUX_REBOOT_CMD_CAD_OFF         = 0x0
+       LINUX_REBOOT_CMD_CAD_ON          = 0x89abcdef
+       LINUX_REBOOT_CMD_HALT            = 0xcdef0123
+       LINUX_REBOOT_CMD_KEXEC           = 0x45584543
+       LINUX_REBOOT_CMD_POWER_OFF       = 0x4321fedc
+       LINUX_REBOOT_CMD_RESTART         = 0x1234567
+       LINUX_REBOOT_CMD_RESTART2        = 0xa1b2c3d4
+       LINUX_REBOOT_CMD_SW_SUSPEND      = 0xd000fce2
+       LINUX_REBOOT_MAGIC1              = 0xfee1dead
+       LINUX_REBOOT_MAGIC2              = 0x28121969
+       LOCK_EX                          = 0x2
+       LOCK_NB                          = 0x4
+       LOCK_SH                          = 0x1
+       LOCK_UN                          = 0x8
+       MADV_DODUMP                      = 0x11
+       MADV_DOFORK                      = 0xb
+       MADV_DONTDUMP                    = 0x10
+       MADV_DONTFORK                    = 0xa
+       MADV_DONTNEED                    = 0x4
+       MADV_HUGEPAGE                    = 0xe
+       MADV_HWPOISON                    = 0x64
+       MADV_MERGEABLE                   = 0xc
+       MADV_NOHUGEPAGE                  = 0xf
+       MADV_NORMAL                      = 0x0
+       MADV_RANDOM                      = 0x1
+       MADV_REMOVE                      = 0x9
+       MADV_SEQUENTIAL                  = 0x2
+       MADV_UNMERGEABLE                 = 0xd
+       MADV_WILLNEED                    = 0x3
+       MAP_ANON                         = 0x20
+       MAP_ANONYMOUS                    = 0x20
+       MAP_DENYWRITE                    = 0x800
+       MAP_EXECUTABLE                   = 0x1000
+       MAP_FILE                         = 0x0
+       MAP_FIXED                        = 0x10
+       MAP_GROWSDOWN                    = 0x100
+       MAP_HUGETLB                      = 0x40000
+       MAP_HUGE_MASK                    = 0x3f
+       MAP_HUGE_SHIFT                   = 0x1a
+       MAP_LOCKED                       = 0x80
+       MAP_NONBLOCK                     = 0x10000
+       MAP_NORESERVE                    = 0x40
+       MAP_POPULATE                     = 0x8000
+       MAP_PRIVATE                      = 0x2
+       MAP_SHARED                       = 0x1
+       MAP_STACK                        = 0x20000
+       MAP_TYPE                         = 0xf
+       MCL_CURRENT                      = 0x2000
+       MCL_FUTURE                       = 0x4000
+       MNT_DETACH                       = 0x2
+       MNT_EXPIRE                       = 0x4
+       MNT_FORCE                        = 0x1
+       MSG_CMSG_CLOEXEC                 = 0x40000000
+       MSG_CONFIRM                      = 0x800
+       MSG_CTRUNC                       = 0x8
+       MSG_DONTROUTE                    = 0x4
+       MSG_DONTWAIT                     = 0x40
+       MSG_EOR                          = 0x80
+       MSG_ERRQUEUE                     = 0x2000
+       MSG_FASTOPEN                     = 0x20000000
+       MSG_FIN                          = 0x200
+       MSG_MORE                         = 0x8000
+       MSG_NOSIGNAL                     = 0x4000
+       MSG_OOB                          = 0x1
+       MSG_PEEK                         = 0x2
+       MSG_PROXY                        = 0x10
+       MSG_RST                          = 0x1000
+       MSG_SYN                          = 0x400
+       MSG_TRUNC                        = 0x20
+       MSG_TRYHARD                      = 0x4
+       MSG_WAITALL                      = 0x100
+       MSG_WAITFORONE                   = 0x10000
+       MS_ACTIVE                        = 0x40000000
+       MS_ASYNC                         = 0x1
+       MS_BIND                          = 0x1000
+       MS_DIRSYNC                       = 0x80
+       MS_INVALIDATE                    = 0x2
+       MS_I_VERSION                     = 0x800000
+       MS_KERNMOUNT                     = 0x400000
+       MS_MANDLOCK                      = 0x40
+       MS_MGC_MSK                       = 0xffff0000
+       MS_MGC_VAL                       = 0xc0ed0000
+       MS_MOVE                          = 0x2000
+       MS_NOATIME                       = 0x400
+       MS_NODEV                         = 0x4
+       MS_NODIRATIME                    = 0x800
+       MS_NOEXEC                        = 0x8
+       MS_NOSUID                        = 0x2
+       MS_NOUSER                        = -0x80000000
+       MS_POSIXACL                      = 0x10000
+       MS_PRIVATE                       = 0x40000
+       MS_RDONLY                        = 0x1
+       MS_REC                           = 0x4000
+       MS_RELATIME                      = 0x200000
+       MS_REMOUNT                       = 0x20
+       MS_RMT_MASK                      = 0x800051
+       MS_SHARED                        = 0x100000
+       MS_SILENT                        = 0x8000
+       MS_SLAVE                         = 0x80000
+       MS_STRICTATIME                   = 0x1000000
+       MS_SYNC                          = 0x4
+       MS_SYNCHRONOUS                   = 0x10
+       MS_UNBINDABLE                    = 0x20000
+       NAME_MAX                         = 0xff
+       NETLINK_ADD_MEMBERSHIP           = 0x1
+       NETLINK_AUDIT                    = 0x9
+       NETLINK_BROADCAST_ERROR          = 0x4
+       NETLINK_CONNECTOR                = 0xb
+       NETLINK_CRYPTO                   = 0x15
+       NETLINK_DNRTMSG                  = 0xe
+       NETLINK_DROP_MEMBERSHIP          = 0x2
+       NETLINK_ECRYPTFS                 = 0x13
+       NETLINK_FIB_LOOKUP               = 0xa
+       NETLINK_FIREWALL                 = 0x3
+       NETLINK_GENERIC                  = 0x10
+       NETLINK_INET_DIAG                = 0x4
+       NETLINK_IP6_FW                   = 0xd
+       NETLINK_ISCSI                    = 0x8
+       NETLINK_KOBJECT_UEVENT           = 0xf
+       NETLINK_NETFILTER                = 0xc
+       NETLINK_NFLOG                    = 0x5
+       NETLINK_NO_ENOBUFS               = 0x5
+       NETLINK_PKTINFO                  = 0x3
+       NETLINK_RDMA                     = 0x14
+       NETLINK_ROUTE                    = 0x0
+       NETLINK_RX_RING                  = 0x6
+       NETLINK_SCSITRANSPORT            = 0x12
+       NETLINK_SELINUX                  = 0x7
+       NETLINK_SOCK_DIAG                = 0x4
+       NETLINK_TX_RING                  = 0x7
+       NETLINK_UNUSED                   = 0x1
+       NETLINK_USERSOCK                 = 0x2
+       NETLINK_XFRM                     = 0x6
+       NL0                              = 0x0
+       NL1                              = 0x100
+       NL2                              = 0x200
+       NL3                              = 0x300
+       NLA_ALIGNTO                      = 0x4
+       NLA_F_NESTED                     = 0x8000
+       NLA_F_NET_BYTEORDER              = 0x4000
+       NLA_HDRLEN                       = 0x4
+       NLDLY                            = 0x300
+       NLMSG_ALIGNTO                    = 0x4
+       NLMSG_DONE                       = 0x3
+       NLMSG_ERROR                      = 0x2
+       NLMSG_HDRLEN                     = 0x10
+       NLMSG_MIN_TYPE                   = 0x10
+       NLMSG_NOOP                       = 0x1
+       NLMSG_OVERRUN                    = 0x4
+       NLM_F_ACK                        = 0x4
+       NLM_F_APPEND                     = 0x800
+       NLM_F_ATOMIC                     = 0x400
+       NLM_F_CREATE                     = 0x400
+       NLM_F_DUMP                       = 0x300
+       NLM_F_DUMP_INTR                  = 0x10
+       NLM_F_ECHO                       = 0x8
+       NLM_F_EXCL                       = 0x200
+       NLM_F_MATCH                      = 0x200
+       NLM_F_MULTI                      = 0x2
+       NLM_F_REPLACE                    = 0x100
+       NLM_F_REQUEST                    = 0x1
+       NLM_F_ROOT                       = 0x100
+       NOFLSH                           = 0x80000000
+       OCRNL                            = 0x8
+       OFDEL                            = 0x80
+       OFILL                            = 0x40
+       OLCUC                            = 0x4
+       ONLCR                            = 0x2
+       ONLRET                           = 0x20
+       ONOCR                            = 0x10
+       OPOST                            = 0x1
+       O_ACCMODE                        = 0x3
+       O_APPEND                         = 0x400
+       O_ASYNC                          = 0x2000
+       O_CLOEXEC                        = 0x80000
+       O_CREAT                          = 0x40
+       O_DIRECT                         = 0x20000
+       O_DIRECTORY                      = 0x4000
+       O_DSYNC                          = 0x1000
+       O_EXCL                           = 0x80
+       O_FSYNC                          = 0x101000
+       O_LARGEFILE                      = 0x0
+       O_NDELAY                         = 0x800
+       O_NOATIME                        = 0x40000
+       O_NOCTTY                         = 0x100
+       O_NOFOLLOW                       = 0x8000
+       O_NONBLOCK                       = 0x800
+       O_PATH                           = 0x200000
+       O_RDONLY                         = 0x0
+       O_RDWR                           = 0x2
+       O_RSYNC                          = 0x101000
+       O_SYNC                           = 0x101000
+       O_TMPFILE                        = 0x410000
+       O_TRUNC                          = 0x200
+       O_WRONLY                         = 0x1
+       PACKET_ADD_MEMBERSHIP            = 0x1
+       PACKET_AUXDATA                   = 0x8
+       PACKET_BROADCAST                 = 0x1
+       PACKET_COPY_THRESH               = 0x7
+       PACKET_DROP_MEMBERSHIP           = 0x2
+       PACKET_FANOUT                    = 0x12
+       PACKET_FANOUT_CPU                = 0x2
+       PACKET_FANOUT_FLAG_DEFRAG        = 0x8000
+       PACKET_FANOUT_FLAG_ROLLOVER      = 0x1000
+       PACKET_FANOUT_HASH               = 0x0
+       PACKET_FANOUT_LB                 = 0x1
+       PACKET_FANOUT_RND                = 0x4
+       PACKET_FANOUT_ROLLOVER           = 0x3
+       PACKET_FASTROUTE                 = 0x6
+       PACKET_HDRLEN                    = 0xb
+       PACKET_HOST                      = 0x0
+       PACKET_LOOPBACK                  = 0x5
+       PACKET_LOSS                      = 0xe
+       PACKET_MR_ALLMULTI               = 0x2
+       PACKET_MR_MULTICAST              = 0x0
+       PACKET_MR_PROMISC                = 0x1
+       PACKET_MR_UNICAST                = 0x3
+       PACKET_MULTICAST                 = 0x2
+       PACKET_ORIGDEV                   = 0x9
+       PACKET_OTHERHOST                 = 0x3
+       PACKET_OUTGOING                  = 0x4
+       PACKET_RECV_OUTPUT               = 0x3
+       PACKET_RESERVE                   = 0xc
+       PACKET_RX_RING                   = 0x5
+       PACKET_STATISTICS                = 0x6
+       PACKET_TIMESTAMP                 = 0x11
+       PACKET_TX_HAS_OFF                = 0x13
+       PACKET_TX_RING                   = 0xd
+       PACKET_TX_TIMESTAMP              = 0x10
+       PACKET_VERSION                   = 0xa
+       PACKET_VNET_HDR                  = 0xf
+       PARENB                           = 0x1000
+       PARITY_CRC16_PR0                 = 0x2
+       PARITY_CRC16_PR0_CCITT           = 0x4
+       PARITY_CRC16_PR1                 = 0x3
+       PARITY_CRC16_PR1_CCITT           = 0x5
+       PARITY_CRC32_PR0_CCITT           = 0x6
+       PARITY_CRC32_PR1_CCITT           = 0x7
+       PARITY_DEFAULT                   = 0x0
+       PARITY_NONE                      = 0x1
+       PARMRK                           = 0x8
+       PARODD                           = 0x2000
+       PENDIN                           = 0x20000000
+       PRIO_PGRP                        = 0x1
+       PRIO_PROCESS                     = 0x0
+       PRIO_USER                        = 0x2
+       PROT_EXEC                        = 0x4
+       PROT_GROWSDOWN                   = 0x1000000
+       PROT_GROWSUP                     = 0x2000000
+       PROT_NONE                        = 0x0
+       PROT_READ                        = 0x1
+       PROT_SAO                         = 0x10
+       PROT_WRITE                       = 0x2
+       PR_CAPBSET_DROP                  = 0x18
+       PR_CAPBSET_READ                  = 0x17
+       PR_ENDIAN_BIG                    = 0x0
+       PR_ENDIAN_LITTLE                 = 0x1
+       PR_ENDIAN_PPC_LITTLE             = 0x2
+       PR_FPEMU_NOPRINT                 = 0x1
+       PR_FPEMU_SIGFPE                  = 0x2
+       PR_FP_EXC_ASYNC                  = 0x2
+       PR_FP_EXC_DISABLED               = 0x0
+       PR_FP_EXC_DIV                    = 0x10000
+       PR_FP_EXC_INV                    = 0x100000
+       PR_FP_EXC_NONRECOV               = 0x1
+       PR_FP_EXC_OVF                    = 0x20000
+       PR_FP_EXC_PRECISE                = 0x3
+       PR_FP_EXC_RES                    = 0x80000
+       PR_FP_EXC_SW_ENABLE              = 0x80
+       PR_FP_EXC_UND                    = 0x40000
+       PR_GET_CHILD_SUBREAPER           = 0x25
+       PR_GET_DUMPABLE                  = 0x3
+       PR_GET_ENDIAN                    = 0x13
+       PR_GET_FPEMU                     = 0x9
+       PR_GET_FPEXC                     = 0xb
+       PR_GET_KEEPCAPS                  = 0x7
+       PR_GET_NAME                      = 0x10
+       PR_GET_NO_NEW_PRIVS              = 0x27
+       PR_GET_PDEATHSIG                 = 0x2
+       PR_GET_SECCOMP                   = 0x15
+       PR_GET_SECUREBITS                = 0x1b
+       PR_GET_TID_ADDRESS               = 0x28
+       PR_GET_TIMERSLACK                = 0x1e
+       PR_GET_TIMING                    = 0xd
+       PR_GET_TSC                       = 0x19
+       PR_GET_UNALIGN                   = 0x5
+       PR_MCE_KILL                      = 0x21
+       PR_MCE_KILL_CLEAR                = 0x0
+       PR_MCE_KILL_DEFAULT              = 0x2
+       PR_MCE_KILL_EARLY                = 0x1
+       PR_MCE_KILL_GET                  = 0x22
+       PR_MCE_KILL_LATE                 = 0x0
+       PR_MCE_KILL_SET                  = 0x1
+       PR_SET_CHILD_SUBREAPER           = 0x24
+       PR_SET_DUMPABLE                  = 0x4
+       PR_SET_ENDIAN                    = 0x14
+       PR_SET_FPEMU                     = 0xa
+       PR_SET_FPEXC                     = 0xc
+       PR_SET_KEEPCAPS                  = 0x8
+       PR_SET_MM                        = 0x23
+       PR_SET_MM_ARG_END                = 0x9
+       PR_SET_MM_ARG_START              = 0x8
+       PR_SET_MM_AUXV                   = 0xc
+       PR_SET_MM_BRK                    = 0x7
+       PR_SET_MM_END_CODE               = 0x2
+       PR_SET_MM_END_DATA               = 0x4
+       PR_SET_MM_ENV_END                = 0xb
+       PR_SET_MM_ENV_START              = 0xa
+       PR_SET_MM_EXE_FILE               = 0xd
+       PR_SET_MM_START_BRK              = 0x6
+       PR_SET_MM_START_CODE             = 0x1
+       PR_SET_MM_START_DATA             = 0x3
+       PR_SET_MM_START_STACK            = 0x5
+       PR_SET_NAME                      = 0xf
+       PR_SET_NO_NEW_PRIVS              = 0x26
+       PR_SET_PDEATHSIG                 = 0x1
+       PR_SET_PTRACER                   = 0x59616d61
+       PR_SET_PTRACER_ANY               = -0x1
+       PR_SET_SECCOMP                   = 0x16
+       PR_SET_SECUREBITS                = 0x1c
+       PR_SET_TIMERSLACK                = 0x1d
+       PR_SET_TIMING                    = 0xe
+       PR_SET_TSC                       = 0x1a
+       PR_SET_UNALIGN                   = 0x6
+       PR_TASK_PERF_EVENTS_DISABLE      = 0x1f
+       PR_TASK_PERF_EVENTS_ENABLE       = 0x20
+       PR_TIMING_STATISTICAL            = 0x0
+       PR_TIMING_TIMESTAMP              = 0x1
+       PR_TSC_ENABLE                    = 0x1
+       PR_TSC_SIGSEGV                   = 0x2
+       PR_UNALIGN_NOPRINT               = 0x1
+       PR_UNALIGN_SIGBUS                = 0x2
+       PTRACE_ATTACH                    = 0x10
+       PTRACE_CONT                      = 0x7
+       PTRACE_DETACH                    = 0x11
+       PTRACE_EVENT_CLONE               = 0x3
+       PTRACE_EVENT_EXEC                = 0x4
+       PTRACE_EVENT_EXIT                = 0x6
+       PTRACE_EVENT_FORK                = 0x1
+       PTRACE_EVENT_SECCOMP             = 0x7
+       PTRACE_EVENT_STOP                = 0x80
+       PTRACE_EVENT_VFORK               = 0x2
+       PTRACE_EVENT_VFORK_DONE          = 0x5
+       PTRACE_GETEVENTMSG               = 0x4201
+       PTRACE_GETEVRREGS                = 0x14
+       PTRACE_GETFPREGS                 = 0xe
+       PTRACE_GETREGS                   = 0xc
+       PTRACE_GETREGS64                 = 0x16
+       PTRACE_GETREGSET                 = 0x4204
+       PTRACE_GETSIGINFO                = 0x4202
+       PTRACE_GETSIGMASK                = 0x420a
+       PTRACE_GETVRREGS                 = 0x12
+       PTRACE_GETVSRREGS                = 0x1b
+       PTRACE_GET_DEBUGREG              = 0x19
+       PTRACE_INTERRUPT                 = 0x4207
+       PTRACE_KILL                      = 0x8
+       PTRACE_LISTEN                    = 0x4208
+       PTRACE_O_EXITKILL                = 0x100000
+       PTRACE_O_MASK                    = 0x1000ff
+       PTRACE_O_TRACECLONE              = 0x8
+       PTRACE_O_TRACEEXEC               = 0x10
+       PTRACE_O_TRACEEXIT               = 0x40
+       PTRACE_O_TRACEFORK               = 0x2
+       PTRACE_O_TRACESECCOMP            = 0x80
+       PTRACE_O_TRACESYSGOOD            = 0x1
+       PTRACE_O_TRACEVFORK              = 0x4
+       PTRACE_O_TRACEVFORKDONE          = 0x20
+       PTRACE_PEEKDATA                  = 0x2
+       PTRACE_PEEKSIGINFO               = 0x4209
+       PTRACE_PEEKSIGINFO_SHARED        = 0x1
+       PTRACE_PEEKTEXT                  = 0x1
+       PTRACE_PEEKUSR                   = 0x3
+       PTRACE_POKEDATA                  = 0x5
+       PTRACE_POKETEXT                  = 0x4
+       PTRACE_POKEUSR                   = 0x6
+       PTRACE_SEIZE                     = 0x4206
+       PTRACE_SETEVRREGS                = 0x15
+       PTRACE_SETFPREGS                 = 0xf
+       PTRACE_SETOPTIONS                = 0x4200
+       PTRACE_SETREGS                   = 0xd
+       PTRACE_SETREGS64                 = 0x17
+       PTRACE_SETREGSET                 = 0x4205
+       PTRACE_SETSIGINFO                = 0x4203
+       PTRACE_SETSIGMASK                = 0x420b
+       PTRACE_SETVRREGS                 = 0x13
+       PTRACE_SETVSRREGS                = 0x1c
+       PTRACE_SET_DEBUGREG              = 0x1a
+       PTRACE_SINGLEBLOCK               = 0x100
+       PTRACE_SINGLESTEP                = 0x9
+       PTRACE_SYSCALL                   = 0x18
+       PTRACE_TRACEME                   = 0x0
+       PT_CCR                           = 0x26
+       PT_CTR                           = 0x23
+       PT_DAR                           = 0x29
+       PT_DSCR                          = 0x2c
+       PT_DSISR                         = 0x2a
+       PT_FPR0                          = 0x30
+       PT_FPSCR                         = 0x50
+       PT_LNK                           = 0x24
+       PT_MSR                           = 0x21
+       PT_NIP                           = 0x20
+       PT_ORIG_R3                       = 0x22
+       PT_R0                            = 0x0
+       PT_R1                            = 0x1
+       PT_R10                           = 0xa
+       PT_R11                           = 0xb
+       PT_R12                           = 0xc
+       PT_R13                           = 0xd
+       PT_R14                           = 0xe
+       PT_R15                           = 0xf
+       PT_R16                           = 0x10
+       PT_R17                           = 0x11
+       PT_R18                           = 0x12
+       PT_R19                           = 0x13
+       PT_R2                            = 0x2
+       PT_R20                           = 0x14
+       PT_R21                           = 0x15
+       PT_R22                           = 0x16
+       PT_R23                           = 0x17
+       PT_R24                           = 0x18
+       PT_R25                           = 0x19
+       PT_R26                           = 0x1a
+       PT_R27                           = 0x1b
+       PT_R28                           = 0x1c
+       PT_R29                           = 0x1d
+       PT_R3                            = 0x3
+       PT_R30                           = 0x1e
+       PT_R31                           = 0x1f
+       PT_R4                            = 0x4
+       PT_R5                            = 0x5
+       PT_R6                            = 0x6
+       PT_R7                            = 0x7
+       PT_R8                            = 0x8
+       PT_R9                            = 0x9
+       PT_REGS_COUNT                    = 0x2c
+       PT_RESULT                        = 0x2b
+       PT_SOFTE                         = 0x27
+       PT_TRAP                          = 0x28
+       PT_VR0                           = 0x52
+       PT_VRSAVE                        = 0x94
+       PT_VSCR                          = 0x93
+       PT_VSR0                          = 0x96
+       PT_VSR31                         = 0xd4
+       PT_XER                           = 0x25
+       RLIMIT_AS                        = 0x9
+       RLIMIT_CORE                      = 0x4
+       RLIMIT_CPU                       = 0x0
+       RLIMIT_DATA                      = 0x2
+       RLIMIT_FSIZE                     = 0x1
+       RLIMIT_NOFILE                    = 0x7
+       RLIMIT_STACK                     = 0x3
+       RLIM_INFINITY                    = -0x1
+       RTAX_ADVMSS                      = 0x8
+       RTAX_CWND                        = 0x7
+       RTAX_FEATURES                    = 0xc
+       RTAX_FEATURE_ALLFRAG             = 0x8
+       RTAX_FEATURE_ECN                 = 0x1
+       RTAX_FEATURE_SACK                = 0x2
+       RTAX_FEATURE_TIMESTAMP           = 0x4
+       RTAX_HOPLIMIT                    = 0xa
+       RTAX_INITCWND                    = 0xb
+       RTAX_INITRWND                    = 0xe
+       RTAX_LOCK                        = 0x1
+       RTAX_MAX                         = 0xf
+       RTAX_MTU                         = 0x2
+       RTAX_QUICKACK                    = 0xf
+       RTAX_REORDERING                  = 0x9
+       RTAX_RTO_MIN                     = 0xd
+       RTAX_RTT                         = 0x4
+       RTAX_RTTVAR                      = 0x5
+       RTAX_SSTHRESH                    = 0x6
+       RTAX_UNSPEC                      = 0x0
+       RTAX_WINDOW                      = 0x3
+       RTA_ALIGNTO                      = 0x4
+       RTA_MAX                          = 0x11
+       RTCF_DIRECTSRC                   = 0x4000000
+       RTCF_DOREDIRECT                  = 0x1000000
+       RTCF_LOG                         = 0x2000000
+       RTCF_MASQ                        = 0x400000
+       RTCF_NAT                         = 0x800000
+       RTCF_VALVE                       = 0x200000
+       RTF_ADDRCLASSMASK                = 0xf8000000
+       RTF_ADDRCONF                     = 0x40000
+       RTF_ALLONLINK                    = 0x20000
+       RTF_BROADCAST                    = 0x10000000
+       RTF_CACHE                        = 0x1000000
+       RTF_DEFAULT                      = 0x10000
+       RTF_DYNAMIC                      = 0x10
+       RTF_FLOW                         = 0x2000000
+       RTF_GATEWAY                      = 0x2
+       RTF_HOST                         = 0x4
+       RTF_INTERFACE                    = 0x40000000
+       RTF_IRTT                         = 0x100
+       RTF_LINKRT                       = 0x100000
+       RTF_LOCAL                        = 0x80000000
+       RTF_MODIFIED                     = 0x20
+       RTF_MSS                          = 0x40
+       RTF_MTU                          = 0x40
+       RTF_MULTICAST                    = 0x20000000
+       RTF_NAT                          = 0x8000000
+       RTF_NOFORWARD                    = 0x1000
+       RTF_NONEXTHOP                    = 0x200000
+       RTF_NOPMTUDISC                   = 0x4000
+       RTF_POLICY                       = 0x4000000
+       RTF_REINSTATE                    = 0x8
+       RTF_REJECT                       = 0x200
+       RTF_STATIC                       = 0x400
+       RTF_THROW                        = 0x2000
+       RTF_UP                           = 0x1
+       RTF_WINDOW                       = 0x80
+       RTF_XRESOLVE                     = 0x800
+       RTM_BASE                         = 0x10
+       RTM_DELACTION                    = 0x31
+       RTM_DELADDR                      = 0x15
+       RTM_DELADDRLABEL                 = 0x49
+       RTM_DELLINK                      = 0x11
+       RTM_DELMDB                       = 0x55
+       RTM_DELNEIGH                     = 0x1d
+       RTM_DELQDISC                     = 0x25
+       RTM_DELROUTE                     = 0x19
+       RTM_DELRULE                      = 0x21
+       RTM_DELTCLASS                    = 0x29
+       RTM_DELTFILTER                   = 0x2d
+       RTM_F_CLONED                     = 0x200
+       RTM_F_EQUALIZE                   = 0x400
+       RTM_F_NOTIFY                     = 0x100
+       RTM_F_PREFIX                     = 0x800
+       RTM_GETACTION                    = 0x32
+       RTM_GETADDR                      = 0x16
+       RTM_GETADDRLABEL                 = 0x4a
+       RTM_GETANYCAST                   = 0x3e
+       RTM_GETDCB                       = 0x4e
+       RTM_GETLINK                      = 0x12
+       RTM_GETMDB                       = 0x56
+       RTM_GETMULTICAST                 = 0x3a
+       RTM_GETNEIGH                     = 0x1e
+       RTM_GETNEIGHTBL                  = 0x42
+       RTM_GETNETCONF                   = 0x52
+       RTM_GETQDISC                     = 0x26
+       RTM_GETROUTE                     = 0x1a
+       RTM_GETRULE                      = 0x22
+       RTM_GETTCLASS                    = 0x2a
+       RTM_GETTFILTER                   = 0x2e
+       RTM_MAX                          = 0x57
+       RTM_NEWACTION                    = 0x30
+       RTM_NEWADDR                      = 0x14
+       RTM_NEWADDRLABEL                 = 0x48
+       RTM_NEWLINK                      = 0x10
+       RTM_NEWMDB                       = 0x54
+       RTM_NEWNDUSEROPT                 = 0x44
+       RTM_NEWNEIGH                     = 0x1c
+       RTM_NEWNEIGHTBL                  = 0x40
+       RTM_NEWNETCONF                   = 0x50
+       RTM_NEWPREFIX                    = 0x34
+       RTM_NEWQDISC                     = 0x24
+       RTM_NEWROUTE                     = 0x18
+       RTM_NEWRULE                      = 0x20
+       RTM_NEWTCLASS                    = 0x28
+       RTM_NEWTFILTER                   = 0x2c
+       RTM_NR_FAMILIES                  = 0x12
+       RTM_NR_MSGTYPES                  = 0x48
+       RTM_SETDCB                       = 0x4f
+       RTM_SETLINK                      = 0x13
+       RTM_SETNEIGHTBL                  = 0x43
+       RTNH_ALIGNTO                     = 0x4
+       RTNH_F_DEAD                      = 0x1
+       RTNH_F_ONLINK                    = 0x4
+       RTNH_F_PERVASIVE                 = 0x2
+       RTN_MAX                          = 0xb
+       RTPROT_BIRD                      = 0xc
+       RTPROT_BOOT                      = 0x3
+       RTPROT_DHCP                      = 0x10
+       RTPROT_DNROUTED                  = 0xd
+       RTPROT_GATED                     = 0x8
+       RTPROT_KERNEL                    = 0x2
+       RTPROT_MROUTED                   = 0x11
+       RTPROT_MRT                       = 0xa
+       RTPROT_NTK                       = 0xf
+       RTPROT_RA                        = 0x9
+       RTPROT_REDIRECT                  = 0x1
+       RTPROT_STATIC                    = 0x4
+       RTPROT_UNSPEC                    = 0x0
+       RTPROT_XORP                      = 0xe
+       RTPROT_ZEBRA                     = 0xb
+       RT_CLASS_DEFAULT                 = 0xfd
+       RT_CLASS_LOCAL                   = 0xff
+       RT_CLASS_MAIN                    = 0xfe
+       RT_CLASS_MAX                     = 0xff
+       RT_CLASS_UNSPEC                  = 0x0
+       RUSAGE_CHILDREN                  = -0x1
+       RUSAGE_SELF                      = 0x0
+       RUSAGE_THREAD                    = 0x1
+       SCM_CREDENTIALS                  = 0x2
+       SCM_RIGHTS                       = 0x1
+       SCM_TIMESTAMP                    = 0x1d
+       SCM_TIMESTAMPING                 = 0x25
+       SCM_TIMESTAMPNS                  = 0x23
+       SCM_WIFI_STATUS                  = 0x29
+       SHUT_RD                          = 0x0
+       SHUT_RDWR                        = 0x2
+       SHUT_WR                          = 0x1
+       SIOCADDDLCI                      = 0x8980
+       SIOCADDMULTI                     = 0x8931
+       SIOCADDRT                        = 0x890b
+       SIOCATMARK                       = 0x8905
+       SIOCDARP                         = 0x8953
+       SIOCDELDLCI                      = 0x8981
+       SIOCDELMULTI                     = 0x8932
+       SIOCDELRT                        = 0x890c
+       SIOCDEVPRIVATE                   = 0x89f0
+       SIOCDIFADDR                      = 0x8936
+       SIOCDRARP                        = 0x8960
+       SIOCGARP                         = 0x8954
+       SIOCGIFADDR                      = 0x8915
+       SIOCGIFBR                        = 0x8940
+       SIOCGIFBRDADDR                   = 0x8919
+       SIOCGIFCONF                      = 0x8912
+       SIOCGIFCOUNT                     = 0x8938
+       SIOCGIFDSTADDR                   = 0x8917
+       SIOCGIFENCAP                     = 0x8925
+       SIOCGIFFLAGS                     = 0x8913
+       SIOCGIFHWADDR                    = 0x8927
+       SIOCGIFINDEX                     = 0x8933
+       SIOCGIFMAP                       = 0x8970
+       SIOCGIFMEM                       = 0x891f
+       SIOCGIFMETRIC                    = 0x891d
+       SIOCGIFMTU                       = 0x8921
+       SIOCGIFNAME                      = 0x8910
+       SIOCGIFNETMASK                   = 0x891b
+       SIOCGIFPFLAGS                    = 0x8935
+       SIOCGIFSLAVE                     = 0x8929
+       SIOCGIFTXQLEN                    = 0x8942
+       SIOCGPGRP                        = 0x8904
+       SIOCGRARP                        = 0x8961
+       SIOCGSTAMP                       = 0x8906
+       SIOCGSTAMPNS                     = 0x8907
+       SIOCPROTOPRIVATE                 = 0x89e0
+       SIOCRTMSG                        = 0x890d
+       SIOCSARP                         = 0x8955
+       SIOCSIFADDR                      = 0x8916
+       SIOCSIFBR                        = 0x8941
+       SIOCSIFBRDADDR                   = 0x891a
+       SIOCSIFDSTADDR                   = 0x8918
+       SIOCSIFENCAP                     = 0x8926
+       SIOCSIFFLAGS                     = 0x8914
+       SIOCSIFHWADDR                    = 0x8924
+       SIOCSIFHWBROADCAST               = 0x8937
+       SIOCSIFLINK                      = 0x8911
+       SIOCSIFMAP                       = 0x8971
+       SIOCSIFMEM                       = 0x8920
+       SIOCSIFMETRIC                    = 0x891e
+       SIOCSIFMTU                       = 0x8922
+       SIOCSIFNAME                      = 0x8923
+       SIOCSIFNETMASK                   = 0x891c
+       SIOCSIFPFLAGS                    = 0x8934
+       SIOCSIFSLAVE                     = 0x8930
+       SIOCSIFTXQLEN                    = 0x8943
+       SIOCSPGRP                        = 0x8902
+       SIOCSRARP                        = 0x8962
+       SOCK_CLOEXEC                     = 0x80000
+       SOCK_DCCP                        = 0x6
+       SOCK_DGRAM                       = 0x2
+       SOCK_NONBLOCK                    = 0x800
+       SOCK_PACKET                      = 0xa
+       SOCK_RAW                         = 0x3
+       SOCK_RDM                         = 0x4
+       SOCK_SEQPACKET                   = 0x5
+       SOCK_STREAM                      = 0x1
+       SOL_AAL                          = 0x109
+       SOL_ATM                          = 0x108
+       SOL_DECNET                       = 0x105
+       SOL_ICMPV6                       = 0x3a
+       SOL_IP                           = 0x0
+       SOL_IPV6                         = 0x29
+       SOL_IRDA                         = 0x10a
+       SOL_PACKET                       = 0x107
+       SOL_RAW                          = 0xff
+       SOL_SOCKET                       = 0x1
+       SOL_TCP                          = 0x6
+       SOL_X25                          = 0x106
+       SOMAXCONN                        = 0x80
+       SO_ACCEPTCONN                    = 0x1e
+       SO_ATTACH_FILTER                 = 0x1a
+       SO_BINDTODEVICE                  = 0x19
+       SO_BROADCAST                     = 0x6
+       SO_BSDCOMPAT                     = 0xe
+       SO_BUSY_POLL                     = 0x2e
+       SO_DEBUG                         = 0x1
+       SO_DETACH_FILTER                 = 0x1b
+       SO_DOMAIN                        = 0x27
+       SO_DONTROUTE                     = 0x5
+       SO_ERROR                         = 0x4
+       SO_GET_FILTER                    = 0x1a
+       SO_KEEPALIVE                     = 0x9
+       SO_LINGER                        = 0xd
+       SO_LOCK_FILTER                   = 0x2c
+       SO_MARK                          = 0x24
+       SO_MAX_PACING_RATE               = 0x2f
+       SO_NOFCS                         = 0x2b
+       SO_NO_CHECK                      = 0xb
+       SO_OOBINLINE                     = 0xa
+       SO_PASSCRED                      = 0x14
+       SO_PASSSEC                       = 0x22
+       SO_PEEK_OFF                      = 0x2a
+       SO_PEERCRED                      = 0x15
+       SO_PEERNAME                      = 0x1c
+       SO_PEERSEC                       = 0x1f
+       SO_PRIORITY                      = 0xc
+       SO_PROTOCOL                      = 0x26
+       SO_RCVBUF                        = 0x8
+       SO_RCVBUFFORCE                   = 0x21
+       SO_RCVLOWAT                      = 0x10
+       SO_RCVTIMEO                      = 0x12
+       SO_REUSEADDR                     = 0x2
+       SO_REUSEPORT                     = 0xf
+       SO_RXQ_OVFL                      = 0x28
+       SO_SECURITY_AUTHENTICATION       = 0x16
+       SO_SECURITY_ENCRYPTION_NETWORK   = 0x18
+       SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17
+       SO_SELECT_ERR_QUEUE              = 0x2d
+       SO_SNDBUF                        = 0x7
+       SO_SNDBUFFORCE                   = 0x20
+       SO_SNDLOWAT                      = 0x11
+       SO_SNDTIMEO                      = 0x13
+       SO_TIMESTAMP                     = 0x1d
+       SO_TIMESTAMPING                  = 0x25
+       SO_TIMESTAMPNS                   = 0x23
+       SO_TYPE                          = 0x3
+       SO_WIFI_STATUS                   = 0x29
+       S_BLKSIZE                        = 0x200
+       S_IEXEC                          = 0x40
+       S_IFBLK                          = 0x6000
+       S_IFCHR                          = 0x2000
+       S_IFDIR                          = 0x4000
+       S_IFIFO                          = 0x1000
+       S_IFLNK                          = 0xa000
+       S_IFMT                           = 0xf000
+       S_IFREG                          = 0x8000
+       S_IFSOCK                         = 0xc000
+       S_IREAD                          = 0x100
+       S_IRGRP                          = 0x20
+       S_IROTH                          = 0x4
+       S_IRUSR                          = 0x100
+       S_IRWXG                          = 0x38
+       S_IRWXO                          = 0x7
+       S_IRWXU                          = 0x1c0
+       S_ISGID                          = 0x400
+       S_ISUID                          = 0x800
+       S_ISVTX                          = 0x200
+       S_IWGRP                          = 0x10
+       S_IWOTH                          = 0x2
+       S_IWRITE                         = 0x80
+       S_IWUSR                          = 0x80
+       S_IXGRP                          = 0x8
+       S_IXOTH                          = 0x1
+       S_IXUSR                          = 0x40
+       TAB0                             = 0x0
+       TAB1                             = 0x400
+       TAB2                             = 0x800
+       TAB3                             = 0xc00
+       TABDLY                           = 0xc00
+       TCFLSH                           = 0x2000741f
+       TCGETA                           = 0x40147417
+       TCGETS                           = 0x402c7413
+       TCIFLUSH                         = 0x0
+       TCIOFF                           = 0x2
+       TCIOFLUSH                        = 0x2
+       TCION                            = 0x3
+       TCOFLUSH                         = 0x1
+       TCOOFF                           = 0x0
+       TCOON                            = 0x1
+       TCP_CONGESTION                   = 0xd
+       TCP_COOKIE_IN_ALWAYS             = 0x1
+       TCP_COOKIE_MAX                   = 0x10
+       TCP_COOKIE_MIN                   = 0x8
+       TCP_COOKIE_OUT_NEVER             = 0x2
+       TCP_COOKIE_PAIR_SIZE             = 0x20
+       TCP_COOKIE_TRANSACTIONS          = 0xf
+       TCP_CORK                         = 0x3
+       TCP_DEFER_ACCEPT                 = 0x9
+       TCP_FASTOPEN                     = 0x17
+       TCP_INFO                         = 0xb
+       TCP_KEEPCNT                      = 0x6
+       TCP_KEEPIDLE                     = 0x4
+       TCP_KEEPINTVL                    = 0x5
+       TCP_LINGER2                      = 0x8
+       TCP_MAXSEG                       = 0x2
+       TCP_MAXWIN                       = 0xffff
+       TCP_MAX_WINSHIFT                 = 0xe
+       TCP_MD5SIG                       = 0xe
+       TCP_MD5SIG_MAXKEYLEN             = 0x50
+       TCP_MSS                          = 0x200
+       TCP_MSS_DEFAULT                  = 0x218
+       TCP_MSS_DESIRED                  = 0x4c4
+       TCP_NODELAY                      = 0x1
+       TCP_QUEUE_SEQ                    = 0x15
+       TCP_QUICKACK                     = 0xc
+       TCP_REPAIR                       = 0x13
+       TCP_REPAIR_OPTIONS               = 0x16
+       TCP_REPAIR_QUEUE                 = 0x14
+       TCP_SYNCNT                       = 0x7
+       TCP_S_DATA_IN                    = 0x4
+       TCP_S_DATA_OUT                   = 0x8
+       TCP_THIN_DUPACK                  = 0x11
+       TCP_THIN_LINEAR_TIMEOUTS         = 0x10
+       TCP_TIMESTAMP                    = 0x18
+       TCP_USER_TIMEOUT                 = 0x12
+       TCP_WINDOW_CLAMP                 = 0xa
+       TCSAFLUSH                        = 0x2
+       TCSBRK                           = 0x2000741d
+       TCSBRKP                          = 0x5425
+       TCSETA                           = 0x80147418
+       TCSETAF                          = 0x8014741c
+       TCSETAW                          = 0x80147419
+       TCSETS                           = 0x802c7414
+       TCSETSF                          = 0x802c7416
+       TCSETSW                          = 0x802c7415
+       TCXONC                           = 0x2000741e
+       TIOCCBRK                         = 0x5428
+       TIOCCONS                         = 0x541d
+       TIOCEXCL                         = 0x540c
+       TIOCGDEV                         = 0x40045432
+       TIOCGETC                         = 0x40067412
+       TIOCGETD                         = 0x5424
+       TIOCGETP                         = 0x40067408
+       TIOCGEXCL                        = 0x40045440
+       TIOCGICOUNT                      = 0x545d
+       TIOCGLCKTRMIOS                   = 0x5456
+       TIOCGLTC                         = 0x40067474
+       TIOCGPGRP                        = 0x40047477
+       TIOCGPKT                         = 0x40045438
+       TIOCGPTLCK                       = 0x40045439
+       TIOCGPTN                         = 0x40045430
+       TIOCGRS485                       = 0x542e
+       TIOCGSERIAL                      = 0x541e
+       TIOCGSID                         = 0x5429
+       TIOCGSOFTCAR                     = 0x5419
+       TIOCGWINSZ                       = 0x40087468
+       TIOCINQ                          = 0x4004667f
+       TIOCLINUX                        = 0x541c
+       TIOCMBIC                         = 0x5417
+       TIOCMBIS                         = 0x5416
+       TIOCMGET                         = 0x5415
+       TIOCMIWAIT                       = 0x545c
+       TIOCMSET                         = 0x5418
+       TIOCM_CAR                        = 0x40
+       TIOCM_CD                         = 0x40
+       TIOCM_CTS                        = 0x20
+       TIOCM_DSR                        = 0x100
+       TIOCM_DTR                        = 0x2
+       TIOCM_LE                         = 0x1
+       TIOCM_LOOP                       = 0x8000
+       TIOCM_OUT1                       = 0x2000
+       TIOCM_OUT2                       = 0x4000
+       TIOCM_RI                         = 0x80
+       TIOCM_RNG                        = 0x80
+       TIOCM_RTS                        = 0x4
+       TIOCM_SR                         = 0x10
+       TIOCM_ST                         = 0x8
+       TIOCNOTTY                        = 0x5422
+       TIOCNXCL                         = 0x540d
+       TIOCOUTQ                         = 0x40047473
+       TIOCPKT                          = 0x5420
+       TIOCPKT_DATA                     = 0x0
+       TIOCPKT_DOSTOP                   = 0x20
+       TIOCPKT_FLUSHREAD                = 0x1
+       TIOCPKT_FLUSHWRITE               = 0x2
+       TIOCPKT_IOCTL                    = 0x40
+       TIOCPKT_NOSTOP                   = 0x10
+       TIOCPKT_START                    = 0x8
+       TIOCPKT_STOP                     = 0x4
+       TIOCSBRK                         = 0x5427
+       TIOCSCTTY                        = 0x540e
+       TIOCSERCONFIG                    = 0x5453
+       TIOCSERGETLSR                    = 0x5459
+       TIOCSERGETMULTI                  = 0x545a
+       TIOCSERGSTRUCT                   = 0x5458
+       TIOCSERGWILD                     = 0x5454
+       TIOCSERSETMULTI                  = 0x545b
+       TIOCSERSWILD                     = 0x5455
+       TIOCSER_TEMT                     = 0x1
+       TIOCSETC                         = 0x80067411
+       TIOCSETD                         = 0x5423
+       TIOCSETN                         = 0x8006740a
+       TIOCSETP                         = 0x80067409
+       TIOCSIG                          = 0x80045436
+       TIOCSLCKTRMIOS                   = 0x5457
+       TIOCSLTC                         = 0x80067475
+       TIOCSPGRP                        = 0x80047476
+       TIOCSPTLCK                       = 0x80045431
+       TIOCSRS485                       = 0x542f
+       TIOCSSERIAL                      = 0x541f
+       TIOCSSOFTCAR                     = 0x541a
+       TIOCSTART                        = 0x2000746e
+       TIOCSTI                          = 0x5412
+       TIOCSTOP                         = 0x2000746f
+       TIOCSWINSZ                       = 0x80087467
+       TIOCVHANGUP                      = 0x5437
+       TOSTOP                           = 0x400000
+       TUNATTACHFILTER                  = 0x801054d5
+       TUNDETACHFILTER                  = 0x801054d6
+       TUNGETFEATURES                   = 0x400454cf
+       TUNGETFILTER                     = 0x401054db
+       TUNGETIFF                        = 0x400454d2
+       TUNGETSNDBUF                     = 0x400454d3
+       TUNGETVNETHDRSZ                  = 0x400454d7
+       TUNSETDEBUG                      = 0x800454c9
+       TUNSETGROUP                      = 0x800454ce
+       TUNSETIFF                        = 0x800454ca
+       TUNSETIFINDEX                    = 0x800454da
+       TUNSETLINK                       = 0x800454cd
+       TUNSETNOCSUM                     = 0x800454c8
+       TUNSETOFFLOAD                    = 0x800454d0
+       TUNSETOWNER                      = 0x800454cc
+       TUNSETPERSIST                    = 0x800454cb
+       TUNSETQUEUE                      = 0x800454d9
+       TUNSETSNDBUF                     = 0x800454d4
+       TUNSETTXFILTER                   = 0x800454d1
+       TUNSETVNETHDRSZ                  = 0x800454d8
+       VDISCARD                         = 0x10
+       VEOF                             = 0x4
+       VEOL                             = 0x6
+       VEOL2                            = 0x8
+       VERASE                           = 0x2
+       VINTR                            = 0x0
+       VKILL                            = 0x3
+       VLNEXT                           = 0xf
+       VMIN                             = 0x5
+       VQUIT                            = 0x1
+       VREPRINT                         = 0xb
+       VSTART                           = 0xd
+       VSTOP                            = 0xe
+       VSUSP                            = 0xc
+       VSWTC                            = 0x9
+       VT0                              = 0x0
+       VT1                              = 0x10000
+       VTDLY                            = 0x10000
+       VTIME                            = 0x7
+       VWERASE                          = 0xa
+       WALL                             = 0x40000000
+       WCLONE                           = 0x80000000
+       WCONTINUED                       = 0x8
+       WEXITED                          = 0x4
+       WNOHANG                          = 0x1
+       WNOTHREAD                        = 0x20000000
+       WNOWAIT                          = 0x1000000
+       WORDSIZE                         = 0x40
+       WSTOPPED                         = 0x2
+       WUNTRACED                        = 0x2
+       XCASE                            = 0x4000
+       XTABS                            = 0xc00
+)
+
+// Errors
+const (
+       E2BIG           = syscall.Errno(0x7)
+       EACCES          = syscall.Errno(0xd)
+       EADDRINUSE      = syscall.Errno(0x62)
+       EADDRNOTAVAIL   = syscall.Errno(0x63)
+       EADV            = syscall.Errno(0x44)
+       EAFNOSUPPORT    = syscall.Errno(0x61)
+       EAGAIN          = syscall.Errno(0xb)
+       EALREADY        = syscall.Errno(0x72)
+       EBADE           = syscall.Errno(0x34)
+       EBADF           = syscall.Errno(0x9)
+       EBADFD          = syscall.Errno(0x4d)
+       EBADMSG         = syscall.Errno(0x4a)
+       EBADR           = syscall.Errno(0x35)
+       EBADRQC         = syscall.Errno(0x38)
+       EBADSLT         = syscall.Errno(0x39)
+       EBFONT          = syscall.Errno(0x3b)
+       EBUSY           = syscall.Errno(0x10)
+       ECANCELED       = syscall.Errno(0x7d)
+       ECHILD          = syscall.Errno(0xa)
+       ECHRNG          = syscall.Errno(0x2c)
+       ECOMM           = syscall.Errno(0x46)
+       ECONNABORTED    = syscall.Errno(0x67)
+       ECONNREFUSED    = syscall.Errno(0x6f)
+       ECONNRESET      = syscall.Errno(0x68)
+       EDEADLK         = syscall.Errno(0x23)
+       EDEADLOCK       = syscall.Errno(0x3a)
+       EDESTADDRREQ    = syscall.Errno(0x59)
+       EDOM            = syscall.Errno(0x21)
+       EDOTDOT         = syscall.Errno(0x49)
+       EDQUOT          = syscall.Errno(0x7a)
+       EEXIST          = syscall.Errno(0x11)
+       EFAULT          = syscall.Errno(0xe)
+       EFBIG           = syscall.Errno(0x1b)
+       EHOSTDOWN       = syscall.Errno(0x70)
+       EHOSTUNREACH    = syscall.Errno(0x71)
+       EHWPOISON       = syscall.Errno(0x85)
+       EIDRM           = syscall.Errno(0x2b)
+       EILSEQ          = syscall.Errno(0x54)
+       EINPROGRESS     = syscall.Errno(0x73)
+       EINTR           = syscall.Errno(0x4)
+       EINVAL          = syscall.Errno(0x16)
+       EIO             = syscall.Errno(0x5)
+       EISCONN         = syscall.Errno(0x6a)
+       EISDIR          = syscall.Errno(0x15)
+       EISNAM          = syscall.Errno(0x78)
+       EKEYEXPIRED     = syscall.Errno(0x7f)
+       EKEYREJECTED    = syscall.Errno(0x81)
+       EKEYREVOKED     = syscall.Errno(0x80)
+       EL2HLT          = syscall.Errno(0x33)
+       EL2NSYNC        = syscall.Errno(0x2d)
+       EL3HLT          = syscall.Errno(0x2e)
+       EL3RST          = syscall.Errno(0x2f)
+       ELIBACC         = syscall.Errno(0x4f)
+       ELIBBAD         = syscall.Errno(0x50)
+       ELIBEXEC        = syscall.Errno(0x53)
+       ELIBMAX         = syscall.Errno(0x52)
+       ELIBSCN         = syscall.Errno(0x51)
+       ELNRNG          = syscall.Errno(0x30)
+       ELOOP           = syscall.Errno(0x28)
+       EMEDIUMTYPE     = syscall.Errno(0x7c)
+       EMFILE          = syscall.Errno(0x18)
+       EMLINK          = syscall.Errno(0x1f)
+       EMSGSIZE        = syscall.Errno(0x5a)
+       EMULTIHOP       = syscall.Errno(0x48)
+       ENAMETOOLONG    = syscall.Errno(0x24)
+       ENAVAIL         = syscall.Errno(0x77)
+       ENETDOWN        = syscall.Errno(0x64)
+       ENETRESET       = syscall.Errno(0x66)
+       ENETUNREACH     = syscall.Errno(0x65)
+       ENFILE          = syscall.Errno(0x17)
+       ENOANO          = syscall.Errno(0x37)
+       ENOBUFS         = syscall.Errno(0x69)
+       ENOCSI          = syscall.Errno(0x32)
+       ENODATA         = syscall.Errno(0x3d)
+       ENODEV          = syscall.Errno(0x13)
+       ENOENT          = syscall.Errno(0x2)
+       ENOEXEC         = syscall.Errno(0x8)
+       ENOKEY          = syscall.Errno(0x7e)
+       ENOLCK          = syscall.Errno(0x25)
+       ENOLINK         = syscall.Errno(0x43)
+       ENOMEDIUM       = syscall.Errno(0x7b)
+       ENOMEM          = syscall.Errno(0xc)
+       ENOMSG          = syscall.Errno(0x2a)
+       ENONET          = syscall.Errno(0x40)
+       ENOPKG          = syscall.Errno(0x41)
+       ENOPROTOOPT     = syscall.Errno(0x5c)
+       ENOSPC          = syscall.Errno(0x1c)
+       ENOSR           = syscall.Errno(0x3f)
+       ENOSTR          = syscall.Errno(0x3c)
+       ENOSYS          = syscall.Errno(0x26)
+       ENOTBLK         = syscall.Errno(0xf)
+       ENOTCONN        = syscall.Errno(0x6b)
+       ENOTDIR         = syscall.Errno(0x14)
+       ENOTEMPTY       = syscall.Errno(0x27)
+       ENOTNAM         = syscall.Errno(0x76)
+       ENOTRECOVERABLE = syscall.Errno(0x83)
+       ENOTSOCK        = syscall.Errno(0x58)
+       ENOTSUP         = syscall.Errno(0x5f)
+       ENOTTY          = syscall.Errno(0x19)
+       ENOTUNIQ        = syscall.Errno(0x4c)
+       ENXIO           = syscall.Errno(0x6)
+       EOPNOTSUPP      = syscall.Errno(0x5f)
+       EOVERFLOW       = syscall.Errno(0x4b)
+       EOWNERDEAD      = syscall.Errno(0x82)
+       EPERM           = syscall.Errno(0x1)
+       EPFNOSUPPORT    = syscall.Errno(0x60)
+       EPIPE           = syscall.Errno(0x20)
+       EPROTO          = syscall.Errno(0x47)
+       EPROTONOSUPPORT = syscall.Errno(0x5d)
+       EPROTOTYPE      = syscall.Errno(0x5b)
+       ERANGE          = syscall.Errno(0x22)
+       EREMCHG         = syscall.Errno(0x4e)
+       EREMOTE         = syscall.Errno(0x42)
+       EREMOTEIO       = syscall.Errno(0x79)
+       ERESTART        = syscall.Errno(0x55)
+       ERFKILL         = syscall.Errno(0x84)
+       EROFS           = syscall.Errno(0x1e)
+       ESHUTDOWN       = syscall.Errno(0x6c)
+       ESOCKTNOSUPPORT = syscall.Errno(0x5e)
+       ESPIPE          = syscall.Errno(0x1d)
+       ESRCH           = syscall.Errno(0x3)
+       ESRMNT          = syscall.Errno(0x45)
+       ESTALE          = syscall.Errno(0x74)
+       ESTRPIPE        = syscall.Errno(0x56)
+       ETIME           = syscall.Errno(0x3e)
+       ETIMEDOUT       = syscall.Errno(0x6e)
+       ETOOMANYREFS    = syscall.Errno(0x6d)
+       ETXTBSY         = syscall.Errno(0x1a)
+       EUCLEAN         = syscall.Errno(0x75)
+       EUNATCH         = syscall.Errno(0x31)
+       EUSERS          = syscall.Errno(0x57)
+       EWOULDBLOCK     = syscall.Errno(0xb)
+       EXDEV           = syscall.Errno(0x12)
+       EXFULL          = syscall.Errno(0x36)
+)
+
+// Signals
+const (
+       SIGABRT   = syscall.Signal(0x6)
+       SIGALRM   = syscall.Signal(0xe)
+       SIGBUS    = syscall.Signal(0x7)
+       SIGCHLD   = syscall.Signal(0x11)
+       SIGCLD    = syscall.Signal(0x11)
+       SIGCONT   = syscall.Signal(0x12)
+       SIGFPE    = syscall.Signal(0x8)
+       SIGHUP    = syscall.Signal(0x1)
+       SIGILL    = syscall.Signal(0x4)
+       SIGINT    = syscall.Signal(0x2)
+       SIGIO     = syscall.Signal(0x1d)
+       SIGIOT    = syscall.Signal(0x6)
+       SIGKILL   = syscall.Signal(0x9)
+       SIGPIPE   = syscall.Signal(0xd)
+       SIGPOLL   = syscall.Signal(0x1d)
+       SIGPROF   = syscall.Signal(0x1b)
+       SIGPWR    = syscall.Signal(0x1e)
+       SIGQUIT   = syscall.Signal(0x3)
+       SIGSEGV   = syscall.Signal(0xb)
+       SIGSTKFLT = syscall.Signal(0x10)
+       SIGSTOP   = syscall.Signal(0x13)
+       SIGSYS    = syscall.Signal(0x1f)
+       SIGTERM   = syscall.Signal(0xf)
+       SIGTRAP   = syscall.Signal(0x5)
+       SIGTSTP   = syscall.Signal(0x14)
+       SIGTTIN   = syscall.Signal(0x15)
+       SIGTTOU   = syscall.Signal(0x16)
+       SIGUNUSED = syscall.Signal(0x1f)
+       SIGURG    = syscall.Signal(0x17)
+       SIGUSR1   = syscall.Signal(0xa)
+       SIGUSR2   = syscall.Signal(0xc)
+       SIGVTALRM = syscall.Signal(0x1a)
+       SIGWINCH  = syscall.Signal(0x1c)
+       SIGXCPU   = syscall.Signal(0x18)
+       SIGXFSZ   = syscall.Signal(0x19)
+)
+
+// 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:   "no such device or address",
+       7:   "argument list too long",
+       8:   "exec format error",
+       9:   "bad file descriptor",
+       10:  "no child processes",
+       11:  "resource temporarily unavailable",
+       12:  "cannot allocate memory",
+       13:  "permission denied",
+       14:  "bad address",
+       15:  "block device required",
+       16:  "device or resource busy",
+       17:  "file exists",
+       18:  "invalid cross-device link",
+       19:  "no such 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:  "numerical result out of range",
+       35:  "resource deadlock avoided",
+       36:  "file name too long",
+       37:  "no locks available",
+       38:  "function not implemented",
+       39:  "directory not empty",
+       40:  "too many levels of symbolic links",
+       42:  "no message of desired type",
+       43:  "identifier removed",
+       44:  "channel number out of range",
+       45:  "level 2 not synchronized",
+       46:  "level 3 halted",
+       47:  "level 3 reset",
+       48:  "link number out of range",
+       49:  "protocol driver not attached",
+       50:  "no CSI structure available",
+       51:  "level 2 halted",
+       52:  "invalid exchange",
+       53:  "invalid request descriptor",
+       54:  "exchange full",
+       55:  "no anode",
+       56:  "invalid request code",
+       57:  "invalid slot",
+       58:  "file locking deadlock error",
+       59:  "bad font file format",
+       60:  "device not a stream",
+       61:  "no data available",
+       62:  "timer expired",
+       63:  "out of streams resources",
+       64:  "machine is not on the network",
+       65:  "package not installed",
+       66:  "object is remote",
+       67:  "link has been severed",
+       68:  "advertise error",
+       69:  "srmount error",
+       70:  "communication error on send",
+       71:  "protocol error",
+       72:  "multihop attempted",
+       73:  "RFS specific error",
+       74:  "bad message",
+       75:  "value too large for defined data type",
+       76:  "name not unique on network",
+       77:  "file descriptor in bad state",
+       78:  "remote address changed",
+       79:  "can not access a needed shared library",
+       80:  "accessing a corrupted shared library",
+       81:  ".lib section in a.out corrupted",
+       82:  "attempting to link in too many shared libraries",
+       83:  "cannot exec a shared library directly",
+       84:  "invalid or incomplete multibyte or wide character",
+       85:  "interrupted system call should be restarted",
+       86:  "streams pipe error",
+       87:  "too many users",
+       88:  "socket operation on non-socket",
+       89:  "destination address required",
+       90:  "message too long",
+       91:  "protocol wrong type for socket",
+       92:  "protocol not available",
+       93:  "protocol not supported",
+       94:  "socket type not supported",
+       95:  "operation not supported",
+       96:  "protocol family not supported",
+       97:  "address family not supported by protocol",
+       98:  "address already in use",
+       99:  "cannot assign requested address",
+       100: "network is down",
+       101: "network is unreachable",
+       102: "network dropped connection on reset",
+       103: "software caused connection abort",
+       104: "connection reset by peer",
+       105: "no buffer space available",
+       106: "transport endpoint is already connected",
+       107: "transport endpoint is not connected",
+       108: "cannot send after transport endpoint shutdown",
+       109: "too many references: cannot splice",
+       110: "connection timed out",
+       111: "connection refused",
+       112: "host is down",
+       113: "no route to host",
+       114: "operation already in progress",
+       115: "operation now in progress",
+       116: "stale file handle",
+       117: "structure needs cleaning",
+       118: "not a XENIX named type file",
+       119: "no XENIX semaphores available",
+       120: "is a named type file",
+       121: "remote I/O error",
+       122: "disk quota exceeded",
+       123: "no medium found",
+       124: "wrong medium type",
+       125: "operation canceled",
+       126: "required key not available",
+       127: "key has expired",
+       128: "key has been revoked",
+       129: "key was rejected by service",
+       130: "owner died",
+       131: "state not recoverable",
+       132: "operation not possible due to RF-kill",
+       133: "memory page has hardware error",
+}
+
+// Signal table
+var signals = [...]string{
+       1:  "hangup",
+       2:  "interrupt",
+       3:  "quit",
+       4:  "illegal instruction",
+       5:  "trace/breakpoint trap",
+       6:  "aborted",
+       7:  "bus error",
+       8:  "floating point exception",
+       9:  "killed",
+       10: "user defined signal 1",
+       11: "segmentation fault",
+       12: "user defined signal 2",
+       13: "broken pipe",
+       14: "alarm clock",
+       15: "terminated",
+       16: "stack fault",
+       17: "child exited",
+       18: "continued",
+       19: "stopped (signal)",
+       20: "stopped",
+       21: "stopped (tty input)",
+       22: "stopped (tty output)",
+       23: "urgent I/O condition",
+       24: "CPU time limit exceeded",
+       25: "file size limit exceeded",
+       26: "virtual timer expired",
+       27: "profiling timer expired",
+       28: "window changed",
+       29: "I/O possible",
+       30: "power failure",
+       31: "bad system call",
+}
diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go
new file mode 100644 (file)
index 0000000..b4338d5
--- /dev/null
@@ -0,0 +1,1712 @@
+// mkerrors.sh -m32
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build 386,netbsd
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m32 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+       AF_APPLETALK                      = 0x10
+       AF_ARP                            = 0x1c
+       AF_BLUETOOTH                      = 0x1f
+       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_HYLINK                         = 0xf
+       AF_IEEE80211                      = 0x20
+       AF_IMPLINK                        = 0x3
+       AF_INET                           = 0x2
+       AF_INET6                          = 0x18
+       AF_IPX                            = 0x17
+       AF_ISDN                           = 0x1a
+       AF_ISO                            = 0x7
+       AF_LAT                            = 0xe
+       AF_LINK                           = 0x12
+       AF_LOCAL                          = 0x1
+       AF_MAX                            = 0x23
+       AF_MPLS                           = 0x21
+       AF_NATM                           = 0x1b
+       AF_NS                             = 0x6
+       AF_OROUTE                         = 0x11
+       AF_OSI                            = 0x7
+       AF_PUP                            = 0x4
+       AF_ROUTE                          = 0x22
+       AF_SNA                            = 0xb
+       AF_UNIX                           = 0x1
+       AF_UNSPEC                         = 0x0
+       ARPHRD_ARCNET                     = 0x7
+       ARPHRD_ETHER                      = 0x1
+       ARPHRD_FRELAY                     = 0xf
+       ARPHRD_IEEE1394                   = 0x18
+       ARPHRD_IEEE802                    = 0x6
+       ARPHRD_STRIP                      = 0x17
+       B0                                = 0x0
+       B110                              = 0x6e
+       B115200                           = 0x1c200
+       B1200                             = 0x4b0
+       B134                              = 0x86
+       B14400                            = 0x3840
+       B150                              = 0x96
+       B1800                             = 0x708
+       B19200                            = 0x4b00
+       B200                              = 0xc8
+       B230400                           = 0x38400
+       B2400                             = 0x960
+       B28800                            = 0x7080
+       B300                              = 0x12c
+       B38400                            = 0x9600
+       B460800                           = 0x70800
+       B4800                             = 0x12c0
+       B50                               = 0x32
+       B57600                            = 0xe100
+       B600                              = 0x258
+       B7200                             = 0x1c20
+       B75                               = 0x4b
+       B76800                            = 0x12c00
+       B921600                           = 0xe1000
+       B9600                             = 0x2580
+       BIOCFEEDBACK                      = 0x8004427d
+       BIOCFLUSH                         = 0x20004268
+       BIOCGBLEN                         = 0x40044266
+       BIOCGDLT                          = 0x4004426a
+       BIOCGDLTLIST                      = 0xc0084277
+       BIOCGETIF                         = 0x4090426b
+       BIOCGFEEDBACK                     = 0x4004427c
+       BIOCGHDRCMPLT                     = 0x40044274
+       BIOCGRTIMEOUT                     = 0x400c427b
+       BIOCGSEESENT                      = 0x40044278
+       BIOCGSTATS                        = 0x4080426f
+       BIOCGSTATSOLD                     = 0x4008426f
+       BIOCIMMEDIATE                     = 0x80044270
+       BIOCPROMISC                       = 0x20004269
+       BIOCSBLEN                         = 0xc0044266
+       BIOCSDLT                          = 0x80044276
+       BIOCSETF                          = 0x80084267
+       BIOCSETIF                         = 0x8090426c
+       BIOCSFEEDBACK                     = 0x8004427d
+       BIOCSHDRCMPLT                     = 0x80044275
+       BIOCSRTIMEOUT                     = 0x800c427a
+       BIOCSSEESENT                      = 0x80044279
+       BIOCSTCPF                         = 0x80084272
+       BIOCSUDPF                         = 0x80084273
+       BIOCVERSION                       = 0x40044271
+       BPF_A                             = 0x10
+       BPF_ABS                           = 0x20
+       BPF_ADD                           = 0x0
+       BPF_ALIGNMENT                     = 0x4
+       BPF_ALIGNMENT32                   = 0x4
+       BPF_ALU                           = 0x4
+       BPF_AND                           = 0x50
+       BPF_B                             = 0x10
+       BPF_DFLTBUFSIZE                   = 0x100000
+       BPF_DIV                           = 0x30
+       BPF_H                             = 0x8
+       BPF_IMM                           = 0x0
+       BPF_IND                           = 0x40
+       BPF_JA                            = 0x0
+       BPF_JEQ                           = 0x10
+       BPF_JGE                           = 0x30
+       BPF_JGT                           = 0x20
+       BPF_JMP                           = 0x5
+       BPF_JSET                          = 0x40
+       BPF_K                             = 0x0
+       BPF_LD                            = 0x0
+       BPF_LDX                           = 0x1
+       BPF_LEN                           = 0x80
+       BPF_LSH                           = 0x60
+       BPF_MAJOR_VERSION                 = 0x1
+       BPF_MAXBUFSIZE                    = 0x1000000
+       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                           = 0x0
+       BPF_TXA                           = 0x80
+       BPF_W                             = 0x0
+       BPF_X                             = 0x8
+       BRKINT                            = 0x2
+       CFLUSH                            = 0xf
+       CLOCAL                            = 0x8000
+       CLONE_CSIGNAL                     = 0xff
+       CLONE_FILES                       = 0x400
+       CLONE_FS                          = 0x200
+       CLONE_PID                         = 0x1000
+       CLONE_PTRACE                      = 0x2000
+       CLONE_SIGHAND                     = 0x800
+       CLONE_VFORK                       = 0x4000
+       CLONE_VM                          = 0x100
+       CREAD                             = 0x800
+       CS5                               = 0x0
+       CS6                               = 0x100
+       CS7                               = 0x200
+       CS8                               = 0x300
+       CSIZE                             = 0x300
+       CSTART                            = 0x11
+       CSTATUS                           = 0x14
+       CSTOP                             = 0x13
+       CSTOPB                            = 0x400
+       CSUSP                             = 0x1a
+       CTL_MAXNAME                       = 0xc
+       CTL_NET                           = 0x4
+       CTL_QUERY                         = -0x2
+       DIOCBSFLUSH                       = 0x20006478
+       DLT_A429                          = 0xb8
+       DLT_A653_ICM                      = 0xb9
+       DLT_AIRONET_HEADER                = 0x78
+       DLT_AOS                           = 0xde
+       DLT_APPLE_IP_OVER_IEEE1394        = 0x8a
+       DLT_ARCNET                        = 0x7
+       DLT_ARCNET_LINUX                  = 0x81
+       DLT_ATM_CLIP                      = 0x13
+       DLT_ATM_RFC1483                   = 0xb
+       DLT_AURORA                        = 0x7e
+       DLT_AX25                          = 0x3
+       DLT_AX25_KISS                     = 0xca
+       DLT_BACNET_MS_TP                  = 0xa5
+       DLT_BLUETOOTH_HCI_H4              = 0xbb
+       DLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9
+       DLT_CAN20B                        = 0xbe
+       DLT_CAN_SOCKETCAN                 = 0xe3
+       DLT_CHAOS                         = 0x5
+       DLT_CISCO_IOS                     = 0x76
+       DLT_C_HDLC                        = 0x68
+       DLT_C_HDLC_WITH_DIR               = 0xcd
+       DLT_DECT                          = 0xdd
+       DLT_DOCSIS                        = 0x8f
+       DLT_ECONET                        = 0x73
+       DLT_EN10MB                        = 0x1
+       DLT_EN3MB                         = 0x2
+       DLT_ENC                           = 0x6d
+       DLT_ERF                           = 0xc5
+       DLT_ERF_ETH                       = 0xaf
+       DLT_ERF_POS                       = 0xb0
+       DLT_FC_2                          = 0xe0
+       DLT_FC_2_WITH_FRAME_DELIMS        = 0xe1
+       DLT_FDDI                          = 0xa
+       DLT_FLEXRAY                       = 0xd2
+       DLT_FRELAY                        = 0x6b
+       DLT_FRELAY_WITH_DIR               = 0xce
+       DLT_GCOM_SERIAL                   = 0xad
+       DLT_GCOM_T1E1                     = 0xac
+       DLT_GPF_F                         = 0xab
+       DLT_GPF_T                         = 0xaa
+       DLT_GPRS_LLC                      = 0xa9
+       DLT_GSMTAP_ABIS                   = 0xda
+       DLT_GSMTAP_UM                     = 0xd9
+       DLT_HDLC                          = 0x10
+       DLT_HHDLC                         = 0x79
+       DLT_HIPPI                         = 0xf
+       DLT_IBM_SN                        = 0x92
+       DLT_IBM_SP                        = 0x91
+       DLT_IEEE802                       = 0x6
+       DLT_IEEE802_11                    = 0x69
+       DLT_IEEE802_11_RADIO              = 0x7f
+       DLT_IEEE802_11_RADIO_AVS          = 0xa3
+       DLT_IEEE802_15_4                  = 0xc3
+       DLT_IEEE802_15_4_LINUX            = 0xbf
+       DLT_IEEE802_15_4_NONASK_PHY       = 0xd7
+       DLT_IEEE802_16_MAC_CPS            = 0xbc
+       DLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1
+       DLT_IPMB                          = 0xc7
+       DLT_IPMB_LINUX                    = 0xd1
+       DLT_IPNET                         = 0xe2
+       DLT_IPV4                          = 0xe4
+       DLT_IPV6                          = 0xe5
+       DLT_IP_OVER_FC                    = 0x7a
+       DLT_JUNIPER_ATM1                  = 0x89
+       DLT_JUNIPER_ATM2                  = 0x87
+       DLT_JUNIPER_CHDLC                 = 0xb5
+       DLT_JUNIPER_ES                    = 0x84
+       DLT_JUNIPER_ETHER                 = 0xb2
+       DLT_JUNIPER_FRELAY                = 0xb4
+       DLT_JUNIPER_GGSN                  = 0x85
+       DLT_JUNIPER_ISM                   = 0xc2
+       DLT_JUNIPER_MFR                   = 0x86
+       DLT_JUNIPER_MLFR                  = 0x83
+       DLT_JUNIPER_MLPPP                 = 0x82
+       DLT_JUNIPER_MONITOR               = 0xa4
+       DLT_JUNIPER_PIC_PEER              = 0xae
+       DLT_JUNIPER_PPP                   = 0xb3
+       DLT_JUNIPER_PPPOE                 = 0xa7
+       DLT_JUNIPER_PPPOE_ATM             = 0xa8
+       DLT_JUNIPER_SERVICES              = 0x88
+       DLT_JUNIPER_ST                    = 0xc8
+       DLT_JUNIPER_VP                    = 0xb7
+       DLT_LAPB_WITH_DIR                 = 0xcf
+       DLT_LAPD                          = 0xcb
+       DLT_LIN                           = 0xd4
+       DLT_LINUX_EVDEV                   = 0xd8
+       DLT_LINUX_IRDA                    = 0x90
+       DLT_LINUX_LAPD                    = 0xb1
+       DLT_LINUX_SLL                     = 0x71
+       DLT_LOOP                          = 0x6c
+       DLT_LTALK                         = 0x72
+       DLT_MFR                           = 0xb6
+       DLT_MOST                          = 0xd3
+       DLT_MPLS                          = 0xdb
+       DLT_MTP2                          = 0x8c
+       DLT_MTP2_WITH_PHDR                = 0x8b
+       DLT_MTP3                          = 0x8d
+       DLT_NULL                          = 0x0
+       DLT_PCI_EXP                       = 0x7d
+       DLT_PFLOG                         = 0x75
+       DLT_PFSYNC                        = 0x12
+       DLT_PPI                           = 0xc0
+       DLT_PPP                           = 0x9
+       DLT_PPP_BSDOS                     = 0xe
+       DLT_PPP_ETHER                     = 0x33
+       DLT_PPP_PPPD                      = 0xa6
+       DLT_PPP_SERIAL                    = 0x32
+       DLT_PPP_WITH_DIR                  = 0xcc
+       DLT_PRISM_HEADER                  = 0x77
+       DLT_PRONET                        = 0x4
+       DLT_RAIF1                         = 0xc6
+       DLT_RAW                           = 0xc
+       DLT_RAWAF_MASK                    = 0x2240000
+       DLT_RIO                           = 0x7c
+       DLT_SCCP                          = 0x8e
+       DLT_SITA                          = 0xc4
+       DLT_SLIP                          = 0x8
+       DLT_SLIP_BSDOS                    = 0xd
+       DLT_SUNATM                        = 0x7b
+       DLT_SYMANTEC_FIREWALL             = 0x63
+       DLT_TZSP                          = 0x80
+       DLT_USB                           = 0xba
+       DLT_USB_LINUX                     = 0xbd
+       DLT_USB_LINUX_MMAPPED             = 0xdc
+       DLT_WIHART                        = 0xdf
+       DLT_X2E_SERIAL                    = 0xd5
+       DLT_X2E_XORAYA                    = 0xd6
+       DT_BLK                            = 0x6
+       DT_CHR                            = 0x2
+       DT_DIR                            = 0x4
+       DT_FIFO                           = 0x1
+       DT_LNK                            = 0xa
+       DT_REG                            = 0x8
+       DT_SOCK                           = 0xc
+       DT_UNKNOWN                        = 0x0
+       DT_WHT                            = 0xe
+       ECHO                              = 0x8
+       ECHOCTL                           = 0x40
+       ECHOE                             = 0x2
+       ECHOK                             = 0x4
+       ECHOKE                            = 0x1
+       ECHONL                            = 0x10
+       ECHOPRT                           = 0x20
+       EMUL_LINUX                        = 0x1
+       EMUL_LINUX32                      = 0x5
+       EMUL_MAXID                        = 0x6
+       EN_SW_CTL_INF                     = 0x1000
+       EN_SW_CTL_PREC                    = 0x300
+       EN_SW_CTL_ROUND                   = 0xc00
+       EN_SW_DATACHAIN                   = 0x80
+       EN_SW_DENORM                      = 0x2
+       EN_SW_INVOP                       = 0x1
+       EN_SW_OVERFLOW                    = 0x8
+       EN_SW_PRECLOSS                    = 0x20
+       EN_SW_UNDERFLOW                   = 0x10
+       EN_SW_ZERODIV                     = 0x4
+       ETHERCAP_JUMBO_MTU                = 0x4
+       ETHERCAP_VLAN_HWTAGGING           = 0x2
+       ETHERCAP_VLAN_MTU                 = 0x1
+       ETHERMIN                          = 0x2e
+       ETHERMTU                          = 0x5dc
+       ETHERMTU_JUMBO                    = 0x2328
+       ETHERTYPE_8023                    = 0x4
+       ETHERTYPE_AARP                    = 0x80f3
+       ETHERTYPE_ACCTON                  = 0x8390
+       ETHERTYPE_AEONIC                  = 0x8036
+       ETHERTYPE_ALPHA                   = 0x814a
+       ETHERTYPE_AMBER                   = 0x6008
+       ETHERTYPE_AMOEBA                  = 0x8145
+       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_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_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_SLOWPROTOCOLS           = 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_CRC_LEN                     = 0x4
+       ETHER_CRC_POLY_BE                 = 0x4c11db6
+       ETHER_CRC_POLY_LE                 = 0xedb88320
+       ETHER_HDR_LEN                     = 0xe
+       ETHER_MAX_LEN                     = 0x5ee
+       ETHER_MAX_LEN_JUMBO               = 0x233a
+       ETHER_MIN_LEN                     = 0x40
+       ETHER_PPPOE_ENCAP_LEN             = 0x8
+       ETHER_TYPE_LEN                    = 0x2
+       ETHER_VLAN_ENCAP_LEN              = 0x4
+       EVFILT_AIO                        = 0x2
+       EVFILT_PROC                       = 0x4
+       EVFILT_READ                       = 0x0
+       EVFILT_SIGNAL                     = 0x5
+       EVFILT_SYSCOUNT                   = 0x7
+       EVFILT_TIMER                      = 0x6
+       EVFILT_VNODE                      = 0x3
+       EVFILT_WRITE                      = 0x1
+       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
+       EXTA                              = 0x4b00
+       EXTB                              = 0x9600
+       EXTPROC                           = 0x800
+       FD_CLOEXEC                        = 0x1
+       FD_SETSIZE                        = 0x100
+       FLUSHO                            = 0x800000
+       F_CLOSEM                          = 0xa
+       F_DUPFD                           = 0x0
+       F_DUPFD_CLOEXEC                   = 0xc
+       F_FSCTL                           = -0x80000000
+       F_FSDIRMASK                       = 0x70000000
+       F_FSIN                            = 0x10000000
+       F_FSINOUT                         = 0x30000000
+       F_FSOUT                           = 0x20000000
+       F_FSPRIV                          = 0x8000
+       F_FSVOID                          = 0x40000000
+       F_GETFD                           = 0x1
+       F_GETFL                           = 0x3
+       F_GETLK                           = 0x7
+       F_GETNOSIGPIPE                    = 0xd
+       F_GETOWN                          = 0x5
+       F_MAXFD                           = 0xb
+       F_OK                              = 0x0
+       F_PARAM_MASK                      = 0xfff
+       F_PARAM_MAX                       = 0xfff
+       F_RDLCK                           = 0x1
+       F_SETFD                           = 0x2
+       F_SETFL                           = 0x4
+       F_SETLK                           = 0x8
+       F_SETLKW                          = 0x9
+       F_SETNOSIGPIPE                    = 0xe
+       F_SETOWN                          = 0x6
+       F_UNLCK                           = 0x2
+       F_WRLCK                           = 0x3
+       HUPCL                             = 0x4000
+       ICANON                            = 0x100
+       ICMP6_FILTER                      = 0x12
+       ICRNL                             = 0x100
+       IEXTEN                            = 0x400
+       IFAN_ARRIVAL                      = 0x0
+       IFAN_DEPARTURE                    = 0x1
+       IFA_ROUTE                         = 0x1
+       IFF_ALLMULTI                      = 0x200
+       IFF_BROADCAST                     = 0x2
+       IFF_CANTCHANGE                    = 0x8f52
+       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_BRIDGE                        = 0xd1
+       IFT_BSC                           = 0x53
+       IFT_CARP                          = 0xf8
+       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_DVBASILN                      = 0xac
+       IFT_DVBASIOUT                     = 0xad
+       IFT_DVBRCCDOWNSTREAM              = 0x93
+       IFT_DVBRCCMACLAYER                = 0x92
+       IFT_DVBRCCUPSTREAM                = 0x94
+       IFT_ECONET                        = 0xce
+       IFT_EON                           = 0x19
+       IFT_EPLRS                         = 0x57
+       IFT_ESCON                         = 0x49
+       IFT_ETHER                         = 0x6
+       IFT_FAITH                         = 0xf2
+       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_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                           = 0xf1
+       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_STF                           = 0xd7
+       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
+       IGNBRK                            = 0x1
+       IGNCR                             = 0x80
+       IGNPAR                            = 0x4
+       IMAXBEL                           = 0x2000
+       INLCR                             = 0x40
+       INPCK                             = 0x10
+       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
+       IPPROTO_AH                        = 0x33
+       IPPROTO_CARP                      = 0x70
+       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                   = 0x0
+       IPPROTO_ICMP                      = 0x1
+       IPPROTO_ICMPV6                    = 0x3a
+       IPPROTO_IDP                       = 0x16
+       IPPROTO_IGMP                      = 0x2
+       IPPROTO_IP                        = 0x0
+       IPPROTO_IPCOMP                    = 0x6c
+       IPPROTO_IPIP                      = 0x4
+       IPPROTO_IPV4                      = 0x4
+       IPPROTO_IPV6                      = 0x29
+       IPPROTO_IPV6_ICMP                 = 0x3a
+       IPPROTO_MAX                       = 0x100
+       IPPROTO_MAXID                     = 0x34
+       IPPROTO_MOBILE                    = 0x37
+       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
+       IPPROTO_VRRP                      = 0x70
+       IPV6_CHECKSUM                     = 0x1a
+       IPV6_DEFAULT_MULTICAST_HOPS       = 0x1
+       IPV6_DEFAULT_MULTICAST_LOOP       = 0x1
+       IPV6_DEFHLIM                      = 0x40
+       IPV6_DONTFRAG                     = 0x3e
+       IPV6_DSTOPTS                      = 0x32
+       IPV6_FAITH                        = 0x1d
+       IPV6_FLOWINFO_MASK                = 0xffffff0f
+       IPV6_FLOWLABEL_MASK               = 0xffff0f00
+       IPV6_FRAGTTL                      = 0x78
+       IPV6_HLIMDEC                      = 0x1
+       IPV6_HOPLIMIT                     = 0x2f
+       IPV6_HOPOPTS                      = 0x31
+       IPV6_IPSEC_POLICY                 = 0x1c
+       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_PATHMTU                      = 0x2c
+       IPV6_PKTINFO                      = 0x2e
+       IPV6_PORTRANGE                    = 0xe
+       IPV6_PORTRANGE_DEFAULT            = 0x0
+       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_RTHDR                        = 0x33
+       IPV6_RTHDRDSTOPTS                 = 0x23
+       IPV6_RTHDR_LOOSE                  = 0x0
+       IPV6_RTHDR_STRICT                 = 0x1
+       IPV6_RTHDR_TYPE_0                 = 0x0
+       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_DEFAULT_MULTICAST_LOOP         = 0x1
+       IP_DEFAULT_MULTICAST_TTL          = 0x1
+       IP_DF                             = 0x4000
+       IP_DROP_MEMBERSHIP                = 0xd
+       IP_EF                             = 0x8000
+       IP_ERRORMTU                       = 0x15
+       IP_HDRINCL                        = 0x2
+       IP_IPSEC_POLICY                   = 0x16
+       IP_MAXPACKET                      = 0xffff
+       IP_MAX_MEMBERSHIPS                = 0x14
+       IP_MF                             = 0x2000
+       IP_MINFRAGSIZE                    = 0x45
+       IP_MINTTL                         = 0x18
+       IP_MSS                            = 0x240
+       IP_MULTICAST_IF                   = 0x9
+       IP_MULTICAST_LOOP                 = 0xb
+       IP_MULTICAST_TTL                  = 0xa
+       IP_OFFMASK                        = 0x1fff
+       IP_OPTIONS                        = 0x1
+       IP_PORTRANGE                      = 0x13
+       IP_PORTRANGE_DEFAULT              = 0x0
+       IP_PORTRANGE_HIGH                 = 0x1
+       IP_PORTRANGE_LOW                  = 0x2
+       IP_RECVDSTADDR                    = 0x7
+       IP_RECVIF                         = 0x14
+       IP_RECVOPTS                       = 0x5
+       IP_RECVRETOPTS                    = 0x6
+       IP_RECVTTL                        = 0x17
+       IP_RETOPTS                        = 0x8
+       IP_RF                             = 0x8000
+       IP_TOS                            = 0x3
+       IP_TTL                            = 0x4
+       ISIG                              = 0x80
+       ISTRIP                            = 0x20
+       IXANY                             = 0x800
+       IXOFF                             = 0x400
+       IXON                              = 0x200
+       LOCK_EX                           = 0x2
+       LOCK_NB                           = 0x4
+       LOCK_SH                           = 0x1
+       LOCK_UN                           = 0x8
+       MADV_DONTNEED                     = 0x4
+       MADV_FREE                         = 0x6
+       MADV_NORMAL                       = 0x0
+       MADV_RANDOM                       = 0x1
+       MADV_SEQUENTIAL                   = 0x2
+       MADV_SPACEAVAIL                   = 0x5
+       MADV_WILLNEED                     = 0x3
+       MAP_ALIGNMENT_16MB                = 0x18000000
+       MAP_ALIGNMENT_1TB                 = 0x28000000
+       MAP_ALIGNMENT_256TB               = 0x30000000
+       MAP_ALIGNMENT_4GB                 = 0x20000000
+       MAP_ALIGNMENT_64KB                = 0x10000000
+       MAP_ALIGNMENT_64PB                = 0x38000000
+       MAP_ALIGNMENT_MASK                = -0x1000000
+       MAP_ALIGNMENT_SHIFT               = 0x18
+       MAP_ANON                          = 0x1000
+       MAP_FILE                          = 0x0
+       MAP_FIXED                         = 0x10
+       MAP_HASSEMAPHORE                  = 0x200
+       MAP_INHERIT                       = 0x80
+       MAP_INHERIT_COPY                  = 0x1
+       MAP_INHERIT_DEFAULT               = 0x1
+       MAP_INHERIT_DONATE_COPY           = 0x3
+       MAP_INHERIT_NONE                  = 0x2
+       MAP_INHERIT_SHARE                 = 0x0
+       MAP_NORESERVE                     = 0x40
+       MAP_PRIVATE                       = 0x2
+       MAP_RENAME                        = 0x20
+       MAP_SHARED                        = 0x1
+       MAP_STACK                         = 0x2000
+       MAP_TRYFIXED                      = 0x400
+       MAP_WIRED                         = 0x800
+       MCL_CURRENT                       = 0x1
+       MCL_FUTURE                        = 0x2
+       MSG_BCAST                         = 0x100
+       MSG_CMSG_CLOEXEC                  = 0x800
+       MSG_CONTROLMBUF                   = 0x2000000
+       MSG_CTRUNC                        = 0x20
+       MSG_DONTROUTE                     = 0x4
+       MSG_DONTWAIT                      = 0x80
+       MSG_EOR                           = 0x8
+       MSG_IOVUSRSPACE                   = 0x4000000
+       MSG_LENUSRSPACE                   = 0x8000000
+       MSG_MCAST                         = 0x200
+       MSG_NAMEMBUF                      = 0x1000000
+       MSG_NBIO                          = 0x1000
+       MSG_NOSIGNAL                      = 0x400
+       MSG_OOB                           = 0x1
+       MSG_PEEK                          = 0x2
+       MSG_TRUNC                         = 0x10
+       MSG_USERFLAGS                     = 0xffffff
+       MSG_WAITALL                       = 0x40
+       MS_ASYNC                          = 0x1
+       MS_INVALIDATE                     = 0x2
+       MS_SYNC                           = 0x4
+       NAME_MAX                          = 0x1ff
+       NET_RT_DUMP                       = 0x1
+       NET_RT_FLAGS                      = 0x2
+       NET_RT_IFLIST                     = 0x5
+       NET_RT_MAXID                      = 0x6
+       NET_RT_OIFLIST                    = 0x4
+       NET_RT_OOIFLIST                   = 0x3
+       NOFLSH                            = 0x80000000
+       NOTE_ATTRIB                       = 0x8
+       NOTE_CHILD                        = 0x4
+       NOTE_DELETE                       = 0x1
+       NOTE_EXEC                         = 0x20000000
+       NOTE_EXIT                         = 0x80000000
+       NOTE_EXTEND                       = 0x4
+       NOTE_FORK                         = 0x40000000
+       NOTE_LINK                         = 0x10
+       NOTE_LOWAT                        = 0x1
+       NOTE_PCTRLMASK                    = 0xf0000000
+       NOTE_PDATAMASK                    = 0xfffff
+       NOTE_RENAME                       = 0x20
+       NOTE_REVOKE                       = 0x40
+       NOTE_TRACK                        = 0x1
+       NOTE_TRACKERR                     = 0x2
+       NOTE_WRITE                        = 0x2
+       OCRNL                             = 0x10
+       OFIOGETBMAP                       = 0xc004667a
+       ONLCR                             = 0x2
+       ONLRET                            = 0x40
+       ONOCR                             = 0x20
+       ONOEOT                            = 0x8
+       OPOST                             = 0x1
+       O_ACCMODE                         = 0x3
+       O_ALT_IO                          = 0x40000
+       O_APPEND                          = 0x8
+       O_ASYNC                           = 0x40
+       O_CLOEXEC                         = 0x400000
+       O_CREAT                           = 0x200
+       O_DIRECT                          = 0x80000
+       O_DIRECTORY                       = 0x200000
+       O_DSYNC                           = 0x10000
+       O_EXCL                            = 0x800
+       O_EXLOCK                          = 0x20
+       O_FSYNC                           = 0x80
+       O_NDELAY                          = 0x4
+       O_NOCTTY                          = 0x8000
+       O_NOFOLLOW                        = 0x100
+       O_NONBLOCK                        = 0x4
+       O_NOSIGPIPE                       = 0x1000000
+       O_RDONLY                          = 0x0
+       O_RDWR                            = 0x2
+       O_RSYNC                           = 0x20000
+       O_SHLOCK                          = 0x10
+       O_SYNC                            = 0x80
+       O_TRUNC                           = 0x400
+       O_WRONLY                          = 0x1
+       PARENB                            = 0x1000
+       PARMRK                            = 0x8
+       PARODD                            = 0x2000
+       PENDIN                            = 0x20000000
+       PRIO_PGRP                         = 0x1
+       PRIO_PROCESS                      = 0x0
+       PRIO_USER                         = 0x2
+       PRI_IOFLUSH                       = 0x7c
+       PROT_EXEC                         = 0x4
+       PROT_NONE                         = 0x0
+       PROT_READ                         = 0x1
+       PROT_WRITE                        = 0x2
+       RLIMIT_AS                         = 0xa
+       RLIMIT_CORE                       = 0x4
+       RLIMIT_CPU                        = 0x0
+       RLIMIT_DATA                       = 0x2
+       RLIMIT_FSIZE                      = 0x1
+       RLIMIT_NOFILE                     = 0x8
+       RLIMIT_STACK                      = 0x3
+       RLIM_INFINITY                     = 0x7fffffffffffffff
+       RTAX_AUTHOR                       = 0x6
+       RTAX_BRD                          = 0x7
+       RTAX_DST                          = 0x0
+       RTAX_GATEWAY                      = 0x1
+       RTAX_GENMASK                      = 0x3
+       RTAX_IFA                          = 0x5
+       RTAX_IFP                          = 0x4
+       RTAX_MAX                          = 0x9
+       RTAX_NETMASK                      = 0x2
+       RTAX_TAG                          = 0x8
+       RTA_AUTHOR                        = 0x40
+       RTA_BRD                           = 0x80
+       RTA_DST                           = 0x1
+       RTA_GATEWAY                       = 0x2
+       RTA_GENMASK                       = 0x8
+       RTA_IFA                           = 0x20
+       RTA_IFP                           = 0x10
+       RTA_NETMASK                       = 0x4
+       RTA_TAG                           = 0x100
+       RTF_ANNOUNCE                      = 0x20000
+       RTF_BLACKHOLE                     = 0x1000
+       RTF_CLONED                        = 0x2000
+       RTF_CLONING                       = 0x100
+       RTF_DONE                          = 0x40
+       RTF_DYNAMIC                       = 0x10
+       RTF_GATEWAY                       = 0x2
+       RTF_HOST                          = 0x4
+       RTF_LLINFO                        = 0x400
+       RTF_MASK                          = 0x80
+       RTF_MODIFIED                      = 0x20
+       RTF_PROTO1                        = 0x8000
+       RTF_PROTO2                        = 0x4000
+       RTF_REJECT                        = 0x8
+       RTF_SRC                           = 0x10000
+       RTF_STATIC                        = 0x800
+       RTF_UP                            = 0x1
+       RTF_XRESOLVE                      = 0x200
+       RTM_ADD                           = 0x1
+       RTM_CHANGE                        = 0x3
+       RTM_CHGADDR                       = 0x15
+       RTM_DELADDR                       = 0xd
+       RTM_DELETE                        = 0x2
+       RTM_GET                           = 0x4
+       RTM_IEEE80211                     = 0x11
+       RTM_IFANNOUNCE                    = 0x10
+       RTM_IFINFO                        = 0x14
+       RTM_LLINFO_UPD                    = 0x13
+       RTM_LOCK                          = 0x8
+       RTM_LOSING                        = 0x5
+       RTM_MISS                          = 0x7
+       RTM_NEWADDR                       = 0xc
+       RTM_OIFINFO                       = 0xf
+       RTM_OLDADD                        = 0x9
+       RTM_OLDDEL                        = 0xa
+       RTM_OOIFINFO                      = 0xe
+       RTM_REDIRECT                      = 0x6
+       RTM_RESOLVE                       = 0xb
+       RTM_RTTUNIT                       = 0xf4240
+       RTM_SETGATE                       = 0x12
+       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
+       RUSAGE_CHILDREN                   = -0x1
+       RUSAGE_SELF                       = 0x0
+       SCM_CREDS                         = 0x4
+       SCM_RIGHTS                        = 0x1
+       SCM_TIMESTAMP                     = 0x8
+       SHUT_RD                           = 0x0
+       SHUT_RDWR                         = 0x2
+       SHUT_WR                           = 0x1
+       SIOCADDMULTI                      = 0x80906931
+       SIOCADDRT                         = 0x8030720a
+       SIOCAIFADDR                       = 0x8040691a
+       SIOCALIFADDR                      = 0x8118691c
+       SIOCATMARK                        = 0x40047307
+       SIOCDELMULTI                      = 0x80906932
+       SIOCDELRT                         = 0x8030720b
+       SIOCDIFADDR                       = 0x80906919
+       SIOCDIFPHYADDR                    = 0x80906949
+       SIOCDLIFADDR                      = 0x8118691e
+       SIOCGDRVSPEC                      = 0xc01c697b
+       SIOCGETPFSYNC                     = 0xc09069f8
+       SIOCGETSGCNT                      = 0xc0147534
+       SIOCGETVIFCNT                     = 0xc0147533
+       SIOCGHIWAT                        = 0x40047301
+       SIOCGIFADDR                       = 0xc0906921
+       SIOCGIFADDRPREF                   = 0xc0946920
+       SIOCGIFALIAS                      = 0xc040691b
+       SIOCGIFBRDADDR                    = 0xc0906923
+       SIOCGIFCAP                        = 0xc0206976
+       SIOCGIFCONF                       = 0xc0086926
+       SIOCGIFDATA                       = 0xc0946985
+       SIOCGIFDLT                        = 0xc0906977
+       SIOCGIFDSTADDR                    = 0xc0906922
+       SIOCGIFFLAGS                      = 0xc0906911
+       SIOCGIFGENERIC                    = 0xc090693a
+       SIOCGIFMEDIA                      = 0xc0286936
+       SIOCGIFMETRIC                     = 0xc0906917
+       SIOCGIFMTU                        = 0xc090697e
+       SIOCGIFNETMASK                    = 0xc0906925
+       SIOCGIFPDSTADDR                   = 0xc0906948
+       SIOCGIFPSRCADDR                   = 0xc0906947
+       SIOCGLIFADDR                      = 0xc118691d
+       SIOCGLIFPHYADDR                   = 0xc118694b
+       SIOCGLINKSTR                      = 0xc01c6987
+       SIOCGLOWAT                        = 0x40047303
+       SIOCGPGRP                         = 0x40047309
+       SIOCGVH                           = 0xc0906983
+       SIOCIFCREATE                      = 0x8090697a
+       SIOCIFDESTROY                     = 0x80906979
+       SIOCIFGCLONERS                    = 0xc00c6978
+       SIOCINITIFADDR                    = 0xc0446984
+       SIOCSDRVSPEC                      = 0x801c697b
+       SIOCSETPFSYNC                     = 0x809069f7
+       SIOCSHIWAT                        = 0x80047300
+       SIOCSIFADDR                       = 0x8090690c
+       SIOCSIFADDRPREF                   = 0x8094691f
+       SIOCSIFBRDADDR                    = 0x80906913
+       SIOCSIFCAP                        = 0x80206975
+       SIOCSIFDSTADDR                    = 0x8090690e
+       SIOCSIFFLAGS                      = 0x80906910
+       SIOCSIFGENERIC                    = 0x80906939
+       SIOCSIFMEDIA                      = 0xc0906935
+       SIOCSIFMETRIC                     = 0x80906918
+       SIOCSIFMTU                        = 0x8090697f
+       SIOCSIFNETMASK                    = 0x80906916
+       SIOCSIFPHYADDR                    = 0x80406946
+       SIOCSLIFPHYADDR                   = 0x8118694a
+       SIOCSLINKSTR                      = 0x801c6988
+       SIOCSLOWAT                        = 0x80047302
+       SIOCSPGRP                         = 0x80047308
+       SIOCSVH                           = 0xc0906982
+       SIOCZIFDATA                       = 0xc0946986
+       SOCK_CLOEXEC                      = 0x10000000
+       SOCK_DGRAM                        = 0x2
+       SOCK_FLAGS_MASK                   = 0xf0000000
+       SOCK_NONBLOCK                     = 0x20000000
+       SOCK_NOSIGPIPE                    = 0x40000000
+       SOCK_RAW                          = 0x3
+       SOCK_RDM                          = 0x4
+       SOCK_SEQPACKET                    = 0x5
+       SOCK_STREAM                       = 0x1
+       SOL_SOCKET                        = 0xffff
+       SOMAXCONN                         = 0x80
+       SO_ACCEPTCONN                     = 0x2
+       SO_ACCEPTFILTER                   = 0x1000
+       SO_BROADCAST                      = 0x20
+       SO_DEBUG                          = 0x1
+       SO_DONTROUTE                      = 0x10
+       SO_ERROR                          = 0x1007
+       SO_KEEPALIVE                      = 0x8
+       SO_LINGER                         = 0x80
+       SO_NOHEADER                       = 0x100a
+       SO_NOSIGPIPE                      = 0x800
+       SO_OOBINLINE                      = 0x100
+       SO_OVERFLOWED                     = 0x1009
+       SO_RCVBUF                         = 0x1002
+       SO_RCVLOWAT                       = 0x1004
+       SO_RCVTIMEO                       = 0x100c
+       SO_REUSEADDR                      = 0x4
+       SO_REUSEPORT                      = 0x200
+       SO_SNDBUF                         = 0x1001
+       SO_SNDLOWAT                       = 0x1003
+       SO_SNDTIMEO                       = 0x100b
+       SO_TIMESTAMP                      = 0x2000
+       SO_TYPE                           = 0x1008
+       SO_USELOOPBACK                    = 0x40
+       SYSCTL_VERSION                    = 0x1000000
+       SYSCTL_VERS_0                     = 0x0
+       SYSCTL_VERS_1                     = 0x1000000
+       SYSCTL_VERS_MASK                  = 0xff000000
+       S_ARCH1                           = 0x10000
+       S_ARCH2                           = 0x20000
+       S_BLKSIZE                         = 0x200
+       S_IEXEC                           = 0x40
+       S_IFBLK                           = 0x6000
+       S_IFCHR                           = 0x2000
+       S_IFDIR                           = 0x4000
+       S_IFIFO                           = 0x1000
+       S_IFLNK                           = 0xa000
+       S_IFMT                            = 0xf000
+       S_IFREG                           = 0x8000
+       S_IFSOCK                          = 0xc000
+       S_IFWHT                           = 0xe000
+       S_IREAD                           = 0x100
+       S_IRGRP                           = 0x20
+       S_IROTH                           = 0x4
+       S_IRUSR                           = 0x100
+       S_IRWXG                           = 0x38
+       S_IRWXO                           = 0x7
+       S_IRWXU                           = 0x1c0
+       S_ISGID                           = 0x400
+       S_ISTXT                           = 0x200
+       S_ISUID                           = 0x800
+       S_ISVTX                           = 0x200
+       S_IWGRP                           = 0x10
+       S_IWOTH                           = 0x2
+       S_IWRITE                          = 0x80
+       S_IWUSR                           = 0x80
+       S_IXGRP                           = 0x8
+       S_IXOTH                           = 0x1
+       S_IXUSR                           = 0x40
+       S_LOGIN_SET                       = 0x1
+       TCIFLUSH                          = 0x1
+       TCIOFLUSH                         = 0x3
+       TCOFLUSH                          = 0x2
+       TCP_CONGCTL                       = 0x20
+       TCP_KEEPCNT                       = 0x6
+       TCP_KEEPIDLE                      = 0x3
+       TCP_KEEPINIT                      = 0x7
+       TCP_KEEPINTVL                     = 0x5
+       TCP_MAXBURST                      = 0x4
+       TCP_MAXSEG                        = 0x2
+       TCP_MAXWIN                        = 0xffff
+       TCP_MAX_WINSHIFT                  = 0xe
+       TCP_MD5SIG                        = 0x10
+       TCP_MINMSS                        = 0xd8
+       TCP_MSS                           = 0x218
+       TCP_NODELAY                       = 0x1
+       TCSAFLUSH                         = 0x2
+       TIOCCBRK                          = 0x2000747a
+       TIOCCDTR                          = 0x20007478
+       TIOCCONS                          = 0x80047462
+       TIOCDCDTIMESTAMP                  = 0x400c7458
+       TIOCDRAIN                         = 0x2000745e
+       TIOCEXCL                          = 0x2000740d
+       TIOCEXT                           = 0x80047460
+       TIOCFLAG_CDTRCTS                  = 0x10
+       TIOCFLAG_CLOCAL                   = 0x2
+       TIOCFLAG_CRTSCTS                  = 0x4
+       TIOCFLAG_MDMBUF                   = 0x8
+       TIOCFLAG_SOFTCAR                  = 0x1
+       TIOCFLUSH                         = 0x80047410
+       TIOCGETA                          = 0x402c7413
+       TIOCGETD                          = 0x4004741a
+       TIOCGFLAGS                        = 0x4004745d
+       TIOCGLINED                        = 0x40207442
+       TIOCGPGRP                         = 0x40047477
+       TIOCGQSIZE                        = 0x40047481
+       TIOCGRANTPT                       = 0x20007447
+       TIOCGSID                          = 0x40047463
+       TIOCGSIZE                         = 0x40087468
+       TIOCGWINSZ                        = 0x40087468
+       TIOCMBIC                          = 0x8004746b
+       TIOCMBIS                          = 0x8004746c
+       TIOCMGET                          = 0x4004746a
+       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                      = 0x0
+       TIOCPKT_DOSTOP                    = 0x20
+       TIOCPKT_FLUSHREAD                 = 0x1
+       TIOCPKT_FLUSHWRITE                = 0x2
+       TIOCPKT_IOCTL                     = 0x40
+       TIOCPKT_NOSTOP                    = 0x10
+       TIOCPKT_START                     = 0x8
+       TIOCPKT_STOP                      = 0x4
+       TIOCPTMGET                        = 0x40287446
+       TIOCPTSNAME                       = 0x40287448
+       TIOCRCVFRAME                      = 0x80047445
+       TIOCREMOTE                        = 0x80047469
+       TIOCSBRK                          = 0x2000747b
+       TIOCSCTTY                         = 0x20007461
+       TIOCSDTR                          = 0x20007479
+       TIOCSETA                          = 0x802c7414
+       TIOCSETAF                         = 0x802c7416
+       TIOCSETAW                         = 0x802c7415
+       TIOCSETD                          = 0x8004741b
+       TIOCSFLAGS                        = 0x8004745c
+       TIOCSIG                           = 0x2000745f
+       TIOCSLINED                        = 0x80207443
+       TIOCSPGRP                         = 0x80047476
+       TIOCSQSIZE                        = 0x80047480
+       TIOCSSIZE                         = 0x80087467
+       TIOCSTART                         = 0x2000746e
+       TIOCSTAT                          = 0x80047465
+       TIOCSTI                           = 0x80017472
+       TIOCSTOP                          = 0x2000746f
+       TIOCSWINSZ                        = 0x80087467
+       TIOCUCNTL                         = 0x80047466
+       TIOCXMTFRAME                      = 0x80047444
+       TOSTOP                            = 0x400000
+       VDISCARD                          = 0xf
+       VDSUSP                            = 0xb
+       VEOF                              = 0x0
+       VEOL                              = 0x1
+       VEOL2                             = 0x2
+       VERASE                            = 0x3
+       VINTR                             = 0x8
+       VKILL                             = 0x5
+       VLNEXT                            = 0xe
+       VMIN                              = 0x10
+       VQUIT                             = 0x9
+       VREPRINT                          = 0x6
+       VSTART                            = 0xc
+       VSTATUS                           = 0x12
+       VSTOP                             = 0xd
+       VSUSP                             = 0xa
+       VTIME                             = 0x11
+       VWERASE                           = 0x4
+       WALL                              = 0x8
+       WALLSIG                           = 0x8
+       WALTSIG                           = 0x4
+       WCLONE                            = 0x4
+       WCOREFLAG                         = 0x80
+       WNOHANG                           = 0x1
+       WNOWAIT                           = 0x10000
+       WNOZOMBIE                         = 0x20000
+       WOPTSCHECKED                      = 0x40000
+       WSTOPPED                          = 0x7f
+       WUNTRACED                         = 0x2
+)
+
+// Errors
+const (
+       E2BIG           = syscall.Errno(0x7)
+       EACCES          = syscall.Errno(0xd)
+       EADDRINUSE      = syscall.Errno(0x30)
+       EADDRNOTAVAIL   = syscall.Errno(0x31)
+       EAFNOSUPPORT    = syscall.Errno(0x2f)
+       EAGAIN          = syscall.Errno(0x23)
+       EALREADY        = syscall.Errno(0x25)
+       EAUTH           = syscall.Errno(0x50)
+       EBADF           = syscall.Errno(0x9)
+       EBADMSG         = syscall.Errno(0x58)
+       EBADRPC         = syscall.Errno(0x48)
+       EBUSY           = syscall.Errno(0x10)
+       ECANCELED       = syscall.Errno(0x57)
+       ECHILD          = syscall.Errno(0xa)
+       ECONNABORTED    = syscall.Errno(0x35)
+       ECONNREFUSED    = syscall.Errno(0x3d)
+       ECONNRESET      = syscall.Errno(0x36)
+       EDEADLK         = syscall.Errno(0xb)
+       EDESTADDRREQ    = syscall.Errno(0x27)
+       EDOM            = syscall.Errno(0x21)
+       EDQUOT          = syscall.Errno(0x45)
+       EEXIST          = syscall.Errno(0x11)
+       EFAULT          = syscall.Errno(0xe)
+       EFBIG           = syscall.Errno(0x1b)
+       EFTYPE          = syscall.Errno(0x4f)
+       EHOSTDOWN       = syscall.Errno(0x40)
+       EHOSTUNREACH    = syscall.Errno(0x41)
+       EIDRM           = syscall.Errno(0x52)
+       EILSEQ          = syscall.Errno(0x55)
+       EINPROGRESS     = syscall.Errno(0x24)
+       EINTR           = syscall.Errno(0x4)
+       EINVAL          = syscall.Errno(0x16)
+       EIO             = syscall.Errno(0x5)
+       EISCONN         = syscall.Errno(0x38)
+       EISDIR          = syscall.Errno(0x15)
+       ELAST           = syscall.Errno(0x60)
+       ELOOP           = syscall.Errno(0x3e)
+       EMFILE          = syscall.Errno(0x18)
+       EMLINK          = syscall.Errno(0x1f)
+       EMSGSIZE        = syscall.Errno(0x28)
+       EMULTIHOP       = syscall.Errno(0x5e)
+       ENAMETOOLONG    = syscall.Errno(0x3f)
+       ENEEDAUTH       = syscall.Errno(0x51)
+       ENETDOWN        = syscall.Errno(0x32)
+       ENETRESET       = syscall.Errno(0x34)
+       ENETUNREACH     = syscall.Errno(0x33)
+       ENFILE          = syscall.Errno(0x17)
+       ENOATTR         = syscall.Errno(0x5d)
+       ENOBUFS         = syscall.Errno(0x37)
+       ENODATA         = syscall.Errno(0x59)
+       ENODEV          = syscall.Errno(0x13)
+       ENOENT          = syscall.Errno(0x2)
+       ENOEXEC         = syscall.Errno(0x8)
+       ENOLCK          = syscall.Errno(0x4d)
+       ENOLINK         = syscall.Errno(0x5f)
+       ENOMEM          = syscall.Errno(0xc)
+       ENOMSG          = syscall.Errno(0x53)
+       ENOPROTOOPT     = syscall.Errno(0x2a)
+       ENOSPC          = syscall.Errno(0x1c)
+       ENOSR           = syscall.Errno(0x5a)
+       ENOSTR          = syscall.Errno(0x5b)
+       ENOSYS          = syscall.Errno(0x4e)
+       ENOTBLK         = syscall.Errno(0xf)
+       ENOTCONN        = syscall.Errno(0x39)
+       ENOTDIR         = syscall.Errno(0x14)
+       ENOTEMPTY       = syscall.Errno(0x42)
+       ENOTSOCK        = syscall.Errno(0x26)
+       ENOTSUP         = syscall.Errno(0x56)
+       ENOTTY          = syscall.Errno(0x19)
+       ENXIO           = syscall.Errno(0x6)
+       EOPNOTSUPP      = syscall.Errno(0x2d)
+       EOVERFLOW       = syscall.Errno(0x54)
+       EPERM           = syscall.Errno(0x1)
+       EPFNOSUPPORT    = syscall.Errno(0x2e)
+       EPIPE           = syscall.Errno(0x20)
+       EPROCLIM        = syscall.Errno(0x43)
+       EPROCUNAVAIL    = syscall.Errno(0x4c)
+       EPROGMISMATCH   = syscall.Errno(0x4b)
+       EPROGUNAVAIL    = syscall.Errno(0x4a)
+       EPROTO          = syscall.Errno(0x60)
+       EPROTONOSUPPORT = syscall.Errno(0x2b)
+       EPROTOTYPE      = syscall.Errno(0x29)
+       ERANGE          = syscall.Errno(0x22)
+       EREMOTE         = syscall.Errno(0x47)
+       EROFS           = syscall.Errno(0x1e)
+       ERPCMISMATCH    = syscall.Errno(0x49)
+       ESHUTDOWN       = syscall.Errno(0x3a)
+       ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+       ESPIPE          = syscall.Errno(0x1d)
+       ESRCH           = syscall.Errno(0x3)
+       ESTALE          = syscall.Errno(0x46)
+       ETIME           = syscall.Errno(0x5c)
+       ETIMEDOUT       = syscall.Errno(0x3c)
+       ETOOMANYREFS    = syscall.Errno(0x3b)
+       ETXTBSY         = syscall.Errno(0x1a)
+       EUSERS          = syscall.Errno(0x44)
+       EWOULDBLOCK     = syscall.Errno(0x23)
+       EXDEV           = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+       SIGABRT   = syscall.Signal(0x6)
+       SIGALRM   = syscall.Signal(0xe)
+       SIGBUS    = syscall.Signal(0xa)
+       SIGCHLD   = syscall.Signal(0x14)
+       SIGCONT   = syscall.Signal(0x13)
+       SIGEMT    = syscall.Signal(0x7)
+       SIGFPE    = syscall.Signal(0x8)
+       SIGHUP    = syscall.Signal(0x1)
+       SIGILL    = syscall.Signal(0x4)
+       SIGINFO   = syscall.Signal(0x1d)
+       SIGINT    = syscall.Signal(0x2)
+       SIGIO     = syscall.Signal(0x17)
+       SIGIOT    = syscall.Signal(0x6)
+       SIGKILL   = syscall.Signal(0x9)
+       SIGPIPE   = syscall.Signal(0xd)
+       SIGPROF   = syscall.Signal(0x1b)
+       SIGPWR    = syscall.Signal(0x20)
+       SIGQUIT   = syscall.Signal(0x3)
+       SIGSEGV   = syscall.Signal(0xb)
+       SIGSTOP   = syscall.Signal(0x11)
+       SIGSYS    = syscall.Signal(0xc)
+       SIGTERM   = syscall.Signal(0xf)
+       SIGTRAP   = syscall.Signal(0x5)
+       SIGTSTP   = syscall.Signal(0x12)
+       SIGTTIN   = syscall.Signal(0x15)
+       SIGTTOU   = syscall.Signal(0x16)
+       SIGURG    = syscall.Signal(0x10)
+       SIGUSR1   = syscall.Signal(0x1e)
+       SIGUSR2   = syscall.Signal(0x1f)
+       SIGVTALRM = syscall.Signal(0x1a)
+       SIGWINCH  = syscall.Signal(0x1c)
+       SIGXCPU   = syscall.Signal(0x18)
+       SIGXFSZ   = syscall.Signal(0x19)
+)
+
+// 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 or too small",
+       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 option 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: "identifier removed",
+       83: "no message of desired type",
+       84: "value too large to be stored in data type",
+       85: "illegal byte sequence",
+       86: "not supported",
+       87: "operation Canceled",
+       88: "bad or Corrupt message",
+       89: "no message available",
+       90: "no STREAM resources",
+       91: "not a STREAM",
+       92: "STREAM ioctl timeout",
+       93: "attribute not found",
+       94: "multihop attempted",
+       95: "link has been severed",
+       96: "protocol error",
+}
+
+// Signal table
+var signals = [...]string{
+       1:  "hangup",
+       2:  "interrupt",
+       3:  "quit",
+       4:  "illegal instruction",
+       5:  "trace/BPT trap",
+       6:  "abort trap",
+       7:  "EMT trap",
+       8:  "floating point exception",
+       9:  "killed",
+       10: "bus error",
+       11: "segmentation fault",
+       12: "bad system call",
+       13: "broken pipe",
+       14: "alarm clock",
+       15: "terminated",
+       16: "urgent I/O condition",
+       17: "stopped (signal)",
+       18: "stopped",
+       19: "continued",
+       20: "child exited",
+       21: "stopped (tty input)",
+       22: "stopped (tty output)",
+       23: "I/O possible",
+       24: "cputime limit exceeded",
+       25: "filesize limit exceeded",
+       26: "virtual timer expired",
+       27: "profiling timer expired",
+       28: "window size changes",
+       29: "information request",
+       30: "user defined signal 1",
+       31: "user defined signal 2",
+       32: "power fail/restart",
+}
diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go
new file mode 100644 (file)
index 0000000..4994437
--- /dev/null
@@ -0,0 +1,1702 @@
+// mkerrors.sh -m64
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,netbsd
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m64 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+       AF_APPLETALK                      = 0x10
+       AF_ARP                            = 0x1c
+       AF_BLUETOOTH                      = 0x1f
+       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_HYLINK                         = 0xf
+       AF_IEEE80211                      = 0x20
+       AF_IMPLINK                        = 0x3
+       AF_INET                           = 0x2
+       AF_INET6                          = 0x18
+       AF_IPX                            = 0x17
+       AF_ISDN                           = 0x1a
+       AF_ISO                            = 0x7
+       AF_LAT                            = 0xe
+       AF_LINK                           = 0x12
+       AF_LOCAL                          = 0x1
+       AF_MAX                            = 0x23
+       AF_MPLS                           = 0x21
+       AF_NATM                           = 0x1b
+       AF_NS                             = 0x6
+       AF_OROUTE                         = 0x11
+       AF_OSI                            = 0x7
+       AF_PUP                            = 0x4
+       AF_ROUTE                          = 0x22
+       AF_SNA                            = 0xb
+       AF_UNIX                           = 0x1
+       AF_UNSPEC                         = 0x0
+       ARPHRD_ARCNET                     = 0x7
+       ARPHRD_ETHER                      = 0x1
+       ARPHRD_FRELAY                     = 0xf
+       ARPHRD_IEEE1394                   = 0x18
+       ARPHRD_IEEE802                    = 0x6
+       ARPHRD_STRIP                      = 0x17
+       B0                                = 0x0
+       B110                              = 0x6e
+       B115200                           = 0x1c200
+       B1200                             = 0x4b0
+       B134                              = 0x86
+       B14400                            = 0x3840
+       B150                              = 0x96
+       B1800                             = 0x708
+       B19200                            = 0x4b00
+       B200                              = 0xc8
+       B230400                           = 0x38400
+       B2400                             = 0x960
+       B28800                            = 0x7080
+       B300                              = 0x12c
+       B38400                            = 0x9600
+       B460800                           = 0x70800
+       B4800                             = 0x12c0
+       B50                               = 0x32
+       B57600                            = 0xe100
+       B600                              = 0x258
+       B7200                             = 0x1c20
+       B75                               = 0x4b
+       B76800                            = 0x12c00
+       B921600                           = 0xe1000
+       B9600                             = 0x2580
+       BIOCFEEDBACK                      = 0x8004427d
+       BIOCFLUSH                         = 0x20004268
+       BIOCGBLEN                         = 0x40044266
+       BIOCGDLT                          = 0x4004426a
+       BIOCGDLTLIST                      = 0xc0104277
+       BIOCGETIF                         = 0x4090426b
+       BIOCGFEEDBACK                     = 0x4004427c
+       BIOCGHDRCMPLT                     = 0x40044274
+       BIOCGRTIMEOUT                     = 0x4010427b
+       BIOCGSEESENT                      = 0x40044278
+       BIOCGSTATS                        = 0x4080426f
+       BIOCGSTATSOLD                     = 0x4008426f
+       BIOCIMMEDIATE                     = 0x80044270
+       BIOCPROMISC                       = 0x20004269
+       BIOCSBLEN                         = 0xc0044266
+       BIOCSDLT                          = 0x80044276
+       BIOCSETF                          = 0x80104267
+       BIOCSETIF                         = 0x8090426c
+       BIOCSFEEDBACK                     = 0x8004427d
+       BIOCSHDRCMPLT                     = 0x80044275
+       BIOCSRTIMEOUT                     = 0x8010427a
+       BIOCSSEESENT                      = 0x80044279
+       BIOCSTCPF                         = 0x80104272
+       BIOCSUDPF                         = 0x80104273
+       BIOCVERSION                       = 0x40044271
+       BPF_A                             = 0x10
+       BPF_ABS                           = 0x20
+       BPF_ADD                           = 0x0
+       BPF_ALIGNMENT                     = 0x8
+       BPF_ALIGNMENT32                   = 0x4
+       BPF_ALU                           = 0x4
+       BPF_AND                           = 0x50
+       BPF_B                             = 0x10
+       BPF_DFLTBUFSIZE                   = 0x100000
+       BPF_DIV                           = 0x30
+       BPF_H                             = 0x8
+       BPF_IMM                           = 0x0
+       BPF_IND                           = 0x40
+       BPF_JA                            = 0x0
+       BPF_JEQ                           = 0x10
+       BPF_JGE                           = 0x30
+       BPF_JGT                           = 0x20
+       BPF_JMP                           = 0x5
+       BPF_JSET                          = 0x40
+       BPF_K                             = 0x0
+       BPF_LD                            = 0x0
+       BPF_LDX                           = 0x1
+       BPF_LEN                           = 0x80
+       BPF_LSH                           = 0x60
+       BPF_MAJOR_VERSION                 = 0x1
+       BPF_MAXBUFSIZE                    = 0x1000000
+       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                           = 0x0
+       BPF_TXA                           = 0x80
+       BPF_W                             = 0x0
+       BPF_X                             = 0x8
+       BRKINT                            = 0x2
+       CFLUSH                            = 0xf
+       CLOCAL                            = 0x8000
+       CLONE_CSIGNAL                     = 0xff
+       CLONE_FILES                       = 0x400
+       CLONE_FS                          = 0x200
+       CLONE_PID                         = 0x1000
+       CLONE_PTRACE                      = 0x2000
+       CLONE_SIGHAND                     = 0x800
+       CLONE_VFORK                       = 0x4000
+       CLONE_VM                          = 0x100
+       CREAD                             = 0x800
+       CS5                               = 0x0
+       CS6                               = 0x100
+       CS7                               = 0x200
+       CS8                               = 0x300
+       CSIZE                             = 0x300
+       CSTART                            = 0x11
+       CSTATUS                           = 0x14
+       CSTOP                             = 0x13
+       CSTOPB                            = 0x400
+       CSUSP                             = 0x1a
+       CTL_MAXNAME                       = 0xc
+       CTL_NET                           = 0x4
+       CTL_QUERY                         = -0x2
+       DIOCBSFLUSH                       = 0x20006478
+       DLT_A429                          = 0xb8
+       DLT_A653_ICM                      = 0xb9
+       DLT_AIRONET_HEADER                = 0x78
+       DLT_AOS                           = 0xde
+       DLT_APPLE_IP_OVER_IEEE1394        = 0x8a
+       DLT_ARCNET                        = 0x7
+       DLT_ARCNET_LINUX                  = 0x81
+       DLT_ATM_CLIP                      = 0x13
+       DLT_ATM_RFC1483                   = 0xb
+       DLT_AURORA                        = 0x7e
+       DLT_AX25                          = 0x3
+       DLT_AX25_KISS                     = 0xca
+       DLT_BACNET_MS_TP                  = 0xa5
+       DLT_BLUETOOTH_HCI_H4              = 0xbb
+       DLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9
+       DLT_CAN20B                        = 0xbe
+       DLT_CAN_SOCKETCAN                 = 0xe3
+       DLT_CHAOS                         = 0x5
+       DLT_CISCO_IOS                     = 0x76
+       DLT_C_HDLC                        = 0x68
+       DLT_C_HDLC_WITH_DIR               = 0xcd
+       DLT_DECT                          = 0xdd
+       DLT_DOCSIS                        = 0x8f
+       DLT_ECONET                        = 0x73
+       DLT_EN10MB                        = 0x1
+       DLT_EN3MB                         = 0x2
+       DLT_ENC                           = 0x6d
+       DLT_ERF                           = 0xc5
+       DLT_ERF_ETH                       = 0xaf
+       DLT_ERF_POS                       = 0xb0
+       DLT_FC_2                          = 0xe0
+       DLT_FC_2_WITH_FRAME_DELIMS        = 0xe1
+       DLT_FDDI                          = 0xa
+       DLT_FLEXRAY                       = 0xd2
+       DLT_FRELAY                        = 0x6b
+       DLT_FRELAY_WITH_DIR               = 0xce
+       DLT_GCOM_SERIAL                   = 0xad
+       DLT_GCOM_T1E1                     = 0xac
+       DLT_GPF_F                         = 0xab
+       DLT_GPF_T                         = 0xaa
+       DLT_GPRS_LLC                      = 0xa9
+       DLT_GSMTAP_ABIS                   = 0xda
+       DLT_GSMTAP_UM                     = 0xd9
+       DLT_HDLC                          = 0x10
+       DLT_HHDLC                         = 0x79
+       DLT_HIPPI                         = 0xf
+       DLT_IBM_SN                        = 0x92
+       DLT_IBM_SP                        = 0x91
+       DLT_IEEE802                       = 0x6
+       DLT_IEEE802_11                    = 0x69
+       DLT_IEEE802_11_RADIO              = 0x7f
+       DLT_IEEE802_11_RADIO_AVS          = 0xa3
+       DLT_IEEE802_15_4                  = 0xc3
+       DLT_IEEE802_15_4_LINUX            = 0xbf
+       DLT_IEEE802_15_4_NONASK_PHY       = 0xd7
+       DLT_IEEE802_16_MAC_CPS            = 0xbc
+       DLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1
+       DLT_IPMB                          = 0xc7
+       DLT_IPMB_LINUX                    = 0xd1
+       DLT_IPNET                         = 0xe2
+       DLT_IPV4                          = 0xe4
+       DLT_IPV6                          = 0xe5
+       DLT_IP_OVER_FC                    = 0x7a
+       DLT_JUNIPER_ATM1                  = 0x89
+       DLT_JUNIPER_ATM2                  = 0x87
+       DLT_JUNIPER_CHDLC                 = 0xb5
+       DLT_JUNIPER_ES                    = 0x84
+       DLT_JUNIPER_ETHER                 = 0xb2
+       DLT_JUNIPER_FRELAY                = 0xb4
+       DLT_JUNIPER_GGSN                  = 0x85
+       DLT_JUNIPER_ISM                   = 0xc2
+       DLT_JUNIPER_MFR                   = 0x86
+       DLT_JUNIPER_MLFR                  = 0x83
+       DLT_JUNIPER_MLPPP                 = 0x82
+       DLT_JUNIPER_MONITOR               = 0xa4
+       DLT_JUNIPER_PIC_PEER              = 0xae
+       DLT_JUNIPER_PPP                   = 0xb3
+       DLT_JUNIPER_PPPOE                 = 0xa7
+       DLT_JUNIPER_PPPOE_ATM             = 0xa8
+       DLT_JUNIPER_SERVICES              = 0x88
+       DLT_JUNIPER_ST                    = 0xc8
+       DLT_JUNIPER_VP                    = 0xb7
+       DLT_LAPB_WITH_DIR                 = 0xcf
+       DLT_LAPD                          = 0xcb
+       DLT_LIN                           = 0xd4
+       DLT_LINUX_EVDEV                   = 0xd8
+       DLT_LINUX_IRDA                    = 0x90
+       DLT_LINUX_LAPD                    = 0xb1
+       DLT_LINUX_SLL                     = 0x71
+       DLT_LOOP                          = 0x6c
+       DLT_LTALK                         = 0x72
+       DLT_MFR                           = 0xb6
+       DLT_MOST                          = 0xd3
+       DLT_MPLS                          = 0xdb
+       DLT_MTP2                          = 0x8c
+       DLT_MTP2_WITH_PHDR                = 0x8b
+       DLT_MTP3                          = 0x8d
+       DLT_NULL                          = 0x0
+       DLT_PCI_EXP                       = 0x7d
+       DLT_PFLOG                         = 0x75
+       DLT_PFSYNC                        = 0x12
+       DLT_PPI                           = 0xc0
+       DLT_PPP                           = 0x9
+       DLT_PPP_BSDOS                     = 0xe
+       DLT_PPP_ETHER                     = 0x33
+       DLT_PPP_PPPD                      = 0xa6
+       DLT_PPP_SERIAL                    = 0x32
+       DLT_PPP_WITH_DIR                  = 0xcc
+       DLT_PRISM_HEADER                  = 0x77
+       DLT_PRONET                        = 0x4
+       DLT_RAIF1                         = 0xc6
+       DLT_RAW                           = 0xc
+       DLT_RAWAF_MASK                    = 0x2240000
+       DLT_RIO                           = 0x7c
+       DLT_SCCP                          = 0x8e
+       DLT_SITA                          = 0xc4
+       DLT_SLIP                          = 0x8
+       DLT_SLIP_BSDOS                    = 0xd
+       DLT_SUNATM                        = 0x7b
+       DLT_SYMANTEC_FIREWALL             = 0x63
+       DLT_TZSP                          = 0x80
+       DLT_USB                           = 0xba
+       DLT_USB_LINUX                     = 0xbd
+       DLT_USB_LINUX_MMAPPED             = 0xdc
+       DLT_WIHART                        = 0xdf
+       DLT_X2E_SERIAL                    = 0xd5
+       DLT_X2E_XORAYA                    = 0xd6
+       DT_BLK                            = 0x6
+       DT_CHR                            = 0x2
+       DT_DIR                            = 0x4
+       DT_FIFO                           = 0x1
+       DT_LNK                            = 0xa
+       DT_REG                            = 0x8
+       DT_SOCK                           = 0xc
+       DT_UNKNOWN                        = 0x0
+       DT_WHT                            = 0xe
+       ECHO                              = 0x8
+       ECHOCTL                           = 0x40
+       ECHOE                             = 0x2
+       ECHOK                             = 0x4
+       ECHOKE                            = 0x1
+       ECHONL                            = 0x10
+       ECHOPRT                           = 0x20
+       EMUL_LINUX                        = 0x1
+       EMUL_LINUX32                      = 0x5
+       EMUL_MAXID                        = 0x6
+       ETHERCAP_JUMBO_MTU                = 0x4
+       ETHERCAP_VLAN_HWTAGGING           = 0x2
+       ETHERCAP_VLAN_MTU                 = 0x1
+       ETHERMIN                          = 0x2e
+       ETHERMTU                          = 0x5dc
+       ETHERMTU_JUMBO                    = 0x2328
+       ETHERTYPE_8023                    = 0x4
+       ETHERTYPE_AARP                    = 0x80f3
+       ETHERTYPE_ACCTON                  = 0x8390
+       ETHERTYPE_AEONIC                  = 0x8036
+       ETHERTYPE_ALPHA                   = 0x814a
+       ETHERTYPE_AMBER                   = 0x6008
+       ETHERTYPE_AMOEBA                  = 0x8145
+       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_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_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_SLOWPROTOCOLS           = 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_CRC_LEN                     = 0x4
+       ETHER_CRC_POLY_BE                 = 0x4c11db6
+       ETHER_CRC_POLY_LE                 = 0xedb88320
+       ETHER_HDR_LEN                     = 0xe
+       ETHER_MAX_LEN                     = 0x5ee
+       ETHER_MAX_LEN_JUMBO               = 0x233a
+       ETHER_MIN_LEN                     = 0x40
+       ETHER_PPPOE_ENCAP_LEN             = 0x8
+       ETHER_TYPE_LEN                    = 0x2
+       ETHER_VLAN_ENCAP_LEN              = 0x4
+       EVFILT_AIO                        = 0x2
+       EVFILT_PROC                       = 0x4
+       EVFILT_READ                       = 0x0
+       EVFILT_SIGNAL                     = 0x5
+       EVFILT_SYSCOUNT                   = 0x7
+       EVFILT_TIMER                      = 0x6
+       EVFILT_VNODE                      = 0x3
+       EVFILT_WRITE                      = 0x1
+       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
+       EXTA                              = 0x4b00
+       EXTB                              = 0x9600
+       EXTPROC                           = 0x800
+       FD_CLOEXEC                        = 0x1
+       FD_SETSIZE                        = 0x100
+       FLUSHO                            = 0x800000
+       F_CLOSEM                          = 0xa
+       F_DUPFD                           = 0x0
+       F_DUPFD_CLOEXEC                   = 0xc
+       F_FSCTL                           = -0x80000000
+       F_FSDIRMASK                       = 0x70000000
+       F_FSIN                            = 0x10000000
+       F_FSINOUT                         = 0x30000000
+       F_FSOUT                           = 0x20000000
+       F_FSPRIV                          = 0x8000
+       F_FSVOID                          = 0x40000000
+       F_GETFD                           = 0x1
+       F_GETFL                           = 0x3
+       F_GETLK                           = 0x7
+       F_GETNOSIGPIPE                    = 0xd
+       F_GETOWN                          = 0x5
+       F_MAXFD                           = 0xb
+       F_OK                              = 0x0
+       F_PARAM_MASK                      = 0xfff
+       F_PARAM_MAX                       = 0xfff
+       F_RDLCK                           = 0x1
+       F_SETFD                           = 0x2
+       F_SETFL                           = 0x4
+       F_SETLK                           = 0x8
+       F_SETLKW                          = 0x9
+       F_SETNOSIGPIPE                    = 0xe
+       F_SETOWN                          = 0x6
+       F_UNLCK                           = 0x2
+       F_WRLCK                           = 0x3
+       HUPCL                             = 0x4000
+       ICANON                            = 0x100
+       ICMP6_FILTER                      = 0x12
+       ICRNL                             = 0x100
+       IEXTEN                            = 0x400
+       IFAN_ARRIVAL                      = 0x0
+       IFAN_DEPARTURE                    = 0x1
+       IFA_ROUTE                         = 0x1
+       IFF_ALLMULTI                      = 0x200
+       IFF_BROADCAST                     = 0x2
+       IFF_CANTCHANGE                    = 0x8f52
+       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_BRIDGE                        = 0xd1
+       IFT_BSC                           = 0x53
+       IFT_CARP                          = 0xf8
+       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_DVBASILN                      = 0xac
+       IFT_DVBASIOUT                     = 0xad
+       IFT_DVBRCCDOWNSTREAM              = 0x93
+       IFT_DVBRCCMACLAYER                = 0x92
+       IFT_DVBRCCUPSTREAM                = 0x94
+       IFT_ECONET                        = 0xce
+       IFT_EON                           = 0x19
+       IFT_EPLRS                         = 0x57
+       IFT_ESCON                         = 0x49
+       IFT_ETHER                         = 0x6
+       IFT_FAITH                         = 0xf2
+       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_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                           = 0xf1
+       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_STF                           = 0xd7
+       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
+       IGNBRK                            = 0x1
+       IGNCR                             = 0x80
+       IGNPAR                            = 0x4
+       IMAXBEL                           = 0x2000
+       INLCR                             = 0x40
+       INPCK                             = 0x10
+       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
+       IPPROTO_AH                        = 0x33
+       IPPROTO_CARP                      = 0x70
+       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                   = 0x0
+       IPPROTO_ICMP                      = 0x1
+       IPPROTO_ICMPV6                    = 0x3a
+       IPPROTO_IDP                       = 0x16
+       IPPROTO_IGMP                      = 0x2
+       IPPROTO_IP                        = 0x0
+       IPPROTO_IPCOMP                    = 0x6c
+       IPPROTO_IPIP                      = 0x4
+       IPPROTO_IPV4                      = 0x4
+       IPPROTO_IPV6                      = 0x29
+       IPPROTO_IPV6_ICMP                 = 0x3a
+       IPPROTO_MAX                       = 0x100
+       IPPROTO_MAXID                     = 0x34
+       IPPROTO_MOBILE                    = 0x37
+       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
+       IPPROTO_VRRP                      = 0x70
+       IPV6_CHECKSUM                     = 0x1a
+       IPV6_DEFAULT_MULTICAST_HOPS       = 0x1
+       IPV6_DEFAULT_MULTICAST_LOOP       = 0x1
+       IPV6_DEFHLIM                      = 0x40
+       IPV6_DONTFRAG                     = 0x3e
+       IPV6_DSTOPTS                      = 0x32
+       IPV6_FAITH                        = 0x1d
+       IPV6_FLOWINFO_MASK                = 0xffffff0f
+       IPV6_FLOWLABEL_MASK               = 0xffff0f00
+       IPV6_FRAGTTL                      = 0x78
+       IPV6_HLIMDEC                      = 0x1
+       IPV6_HOPLIMIT                     = 0x2f
+       IPV6_HOPOPTS                      = 0x31
+       IPV6_IPSEC_POLICY                 = 0x1c
+       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_PATHMTU                      = 0x2c
+       IPV6_PKTINFO                      = 0x2e
+       IPV6_PORTRANGE                    = 0xe
+       IPV6_PORTRANGE_DEFAULT            = 0x0
+       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_RTHDR                        = 0x33
+       IPV6_RTHDRDSTOPTS                 = 0x23
+       IPV6_RTHDR_LOOSE                  = 0x0
+       IPV6_RTHDR_STRICT                 = 0x1
+       IPV6_RTHDR_TYPE_0                 = 0x0
+       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_DEFAULT_MULTICAST_LOOP         = 0x1
+       IP_DEFAULT_MULTICAST_TTL          = 0x1
+       IP_DF                             = 0x4000
+       IP_DROP_MEMBERSHIP                = 0xd
+       IP_EF                             = 0x8000
+       IP_ERRORMTU                       = 0x15
+       IP_HDRINCL                        = 0x2
+       IP_IPSEC_POLICY                   = 0x16
+       IP_MAXPACKET                      = 0xffff
+       IP_MAX_MEMBERSHIPS                = 0x14
+       IP_MF                             = 0x2000
+       IP_MINFRAGSIZE                    = 0x45
+       IP_MINTTL                         = 0x18
+       IP_MSS                            = 0x240
+       IP_MULTICAST_IF                   = 0x9
+       IP_MULTICAST_LOOP                 = 0xb
+       IP_MULTICAST_TTL                  = 0xa
+       IP_OFFMASK                        = 0x1fff
+       IP_OPTIONS                        = 0x1
+       IP_PORTRANGE                      = 0x13
+       IP_PORTRANGE_DEFAULT              = 0x0
+       IP_PORTRANGE_HIGH                 = 0x1
+       IP_PORTRANGE_LOW                  = 0x2
+       IP_RECVDSTADDR                    = 0x7
+       IP_RECVIF                         = 0x14
+       IP_RECVOPTS                       = 0x5
+       IP_RECVRETOPTS                    = 0x6
+       IP_RECVTTL                        = 0x17
+       IP_RETOPTS                        = 0x8
+       IP_RF                             = 0x8000
+       IP_TOS                            = 0x3
+       IP_TTL                            = 0x4
+       ISIG                              = 0x80
+       ISTRIP                            = 0x20
+       IXANY                             = 0x800
+       IXOFF                             = 0x400
+       IXON                              = 0x200
+       LOCK_EX                           = 0x2
+       LOCK_NB                           = 0x4
+       LOCK_SH                           = 0x1
+       LOCK_UN                           = 0x8
+       MADV_DONTNEED                     = 0x4
+       MADV_FREE                         = 0x6
+       MADV_NORMAL                       = 0x0
+       MADV_RANDOM                       = 0x1
+       MADV_SEQUENTIAL                   = 0x2
+       MADV_SPACEAVAIL                   = 0x5
+       MADV_WILLNEED                     = 0x3
+       MAP_ALIGNMENT_16MB                = 0x18000000
+       MAP_ALIGNMENT_1TB                 = 0x28000000
+       MAP_ALIGNMENT_256TB               = 0x30000000
+       MAP_ALIGNMENT_4GB                 = 0x20000000
+       MAP_ALIGNMENT_64KB                = 0x10000000
+       MAP_ALIGNMENT_64PB                = 0x38000000
+       MAP_ALIGNMENT_MASK                = -0x1000000
+       MAP_ALIGNMENT_SHIFT               = 0x18
+       MAP_ANON                          = 0x1000
+       MAP_FILE                          = 0x0
+       MAP_FIXED                         = 0x10
+       MAP_HASSEMAPHORE                  = 0x200
+       MAP_INHERIT                       = 0x80
+       MAP_INHERIT_COPY                  = 0x1
+       MAP_INHERIT_DEFAULT               = 0x1
+       MAP_INHERIT_DONATE_COPY           = 0x3
+       MAP_INHERIT_NONE                  = 0x2
+       MAP_INHERIT_SHARE                 = 0x0
+       MAP_NORESERVE                     = 0x40
+       MAP_PRIVATE                       = 0x2
+       MAP_RENAME                        = 0x20
+       MAP_SHARED                        = 0x1
+       MAP_STACK                         = 0x2000
+       MAP_TRYFIXED                      = 0x400
+       MAP_WIRED                         = 0x800
+       MCL_CURRENT                       = 0x1
+       MCL_FUTURE                        = 0x2
+       MSG_BCAST                         = 0x100
+       MSG_CMSG_CLOEXEC                  = 0x800
+       MSG_CONTROLMBUF                   = 0x2000000
+       MSG_CTRUNC                        = 0x20
+       MSG_DONTROUTE                     = 0x4
+       MSG_DONTWAIT                      = 0x80
+       MSG_EOR                           = 0x8
+       MSG_IOVUSRSPACE                   = 0x4000000
+       MSG_LENUSRSPACE                   = 0x8000000
+       MSG_MCAST                         = 0x200
+       MSG_NAMEMBUF                      = 0x1000000
+       MSG_NBIO                          = 0x1000
+       MSG_NOSIGNAL                      = 0x400
+       MSG_OOB                           = 0x1
+       MSG_PEEK                          = 0x2
+       MSG_TRUNC                         = 0x10
+       MSG_USERFLAGS                     = 0xffffff
+       MSG_WAITALL                       = 0x40
+       MS_ASYNC                          = 0x1
+       MS_INVALIDATE                     = 0x2
+       MS_SYNC                           = 0x4
+       NAME_MAX                          = 0x1ff
+       NET_RT_DUMP                       = 0x1
+       NET_RT_FLAGS                      = 0x2
+       NET_RT_IFLIST                     = 0x5
+       NET_RT_MAXID                      = 0x6
+       NET_RT_OIFLIST                    = 0x4
+       NET_RT_OOIFLIST                   = 0x3
+       NOFLSH                            = 0x80000000
+       NOTE_ATTRIB                       = 0x8
+       NOTE_CHILD                        = 0x4
+       NOTE_DELETE                       = 0x1
+       NOTE_EXEC                         = 0x20000000
+       NOTE_EXIT                         = 0x80000000
+       NOTE_EXTEND                       = 0x4
+       NOTE_FORK                         = 0x40000000
+       NOTE_LINK                         = 0x10
+       NOTE_LOWAT                        = 0x1
+       NOTE_PCTRLMASK                    = 0xf0000000
+       NOTE_PDATAMASK                    = 0xfffff
+       NOTE_RENAME                       = 0x20
+       NOTE_REVOKE                       = 0x40
+       NOTE_TRACK                        = 0x1
+       NOTE_TRACKERR                     = 0x2
+       NOTE_WRITE                        = 0x2
+       OCRNL                             = 0x10
+       OFIOGETBMAP                       = 0xc004667a
+       ONLCR                             = 0x2
+       ONLRET                            = 0x40
+       ONOCR                             = 0x20
+       ONOEOT                            = 0x8
+       OPOST                             = 0x1
+       O_ACCMODE                         = 0x3
+       O_ALT_IO                          = 0x40000
+       O_APPEND                          = 0x8
+       O_ASYNC                           = 0x40
+       O_CLOEXEC                         = 0x400000
+       O_CREAT                           = 0x200
+       O_DIRECT                          = 0x80000
+       O_DIRECTORY                       = 0x200000
+       O_DSYNC                           = 0x10000
+       O_EXCL                            = 0x800
+       O_EXLOCK                          = 0x20
+       O_FSYNC                           = 0x80
+       O_NDELAY                          = 0x4
+       O_NOCTTY                          = 0x8000
+       O_NOFOLLOW                        = 0x100
+       O_NONBLOCK                        = 0x4
+       O_NOSIGPIPE                       = 0x1000000
+       O_RDONLY                          = 0x0
+       O_RDWR                            = 0x2
+       O_RSYNC                           = 0x20000
+       O_SHLOCK                          = 0x10
+       O_SYNC                            = 0x80
+       O_TRUNC                           = 0x400
+       O_WRONLY                          = 0x1
+       PARENB                            = 0x1000
+       PARMRK                            = 0x8
+       PARODD                            = 0x2000
+       PENDIN                            = 0x20000000
+       PRIO_PGRP                         = 0x1
+       PRIO_PROCESS                      = 0x0
+       PRIO_USER                         = 0x2
+       PRI_IOFLUSH                       = 0x7c
+       PROT_EXEC                         = 0x4
+       PROT_NONE                         = 0x0
+       PROT_READ                         = 0x1
+       PROT_WRITE                        = 0x2
+       RLIMIT_AS                         = 0xa
+       RLIMIT_CORE                       = 0x4
+       RLIMIT_CPU                        = 0x0
+       RLIMIT_DATA                       = 0x2
+       RLIMIT_FSIZE                      = 0x1
+       RLIMIT_NOFILE                     = 0x8
+       RLIMIT_STACK                      = 0x3
+       RLIM_INFINITY                     = 0x7fffffffffffffff
+       RTAX_AUTHOR                       = 0x6
+       RTAX_BRD                          = 0x7
+       RTAX_DST                          = 0x0
+       RTAX_GATEWAY                      = 0x1
+       RTAX_GENMASK                      = 0x3
+       RTAX_IFA                          = 0x5
+       RTAX_IFP                          = 0x4
+       RTAX_MAX                          = 0x9
+       RTAX_NETMASK                      = 0x2
+       RTAX_TAG                          = 0x8
+       RTA_AUTHOR                        = 0x40
+       RTA_BRD                           = 0x80
+       RTA_DST                           = 0x1
+       RTA_GATEWAY                       = 0x2
+       RTA_GENMASK                       = 0x8
+       RTA_IFA                           = 0x20
+       RTA_IFP                           = 0x10
+       RTA_NETMASK                       = 0x4
+       RTA_TAG                           = 0x100
+       RTF_ANNOUNCE                      = 0x20000
+       RTF_BLACKHOLE                     = 0x1000
+       RTF_CLONED                        = 0x2000
+       RTF_CLONING                       = 0x100
+       RTF_DONE                          = 0x40
+       RTF_DYNAMIC                       = 0x10
+       RTF_GATEWAY                       = 0x2
+       RTF_HOST                          = 0x4
+       RTF_LLINFO                        = 0x400
+       RTF_MASK                          = 0x80
+       RTF_MODIFIED                      = 0x20
+       RTF_PROTO1                        = 0x8000
+       RTF_PROTO2                        = 0x4000
+       RTF_REJECT                        = 0x8
+       RTF_SRC                           = 0x10000
+       RTF_STATIC                        = 0x800
+       RTF_UP                            = 0x1
+       RTF_XRESOLVE                      = 0x200
+       RTM_ADD                           = 0x1
+       RTM_CHANGE                        = 0x3
+       RTM_CHGADDR                       = 0x15
+       RTM_DELADDR                       = 0xd
+       RTM_DELETE                        = 0x2
+       RTM_GET                           = 0x4
+       RTM_IEEE80211                     = 0x11
+       RTM_IFANNOUNCE                    = 0x10
+       RTM_IFINFO                        = 0x14
+       RTM_LLINFO_UPD                    = 0x13
+       RTM_LOCK                          = 0x8
+       RTM_LOSING                        = 0x5
+       RTM_MISS                          = 0x7
+       RTM_NEWADDR                       = 0xc
+       RTM_OIFINFO                       = 0xf
+       RTM_OLDADD                        = 0x9
+       RTM_OLDDEL                        = 0xa
+       RTM_OOIFINFO                      = 0xe
+       RTM_REDIRECT                      = 0x6
+       RTM_RESOLVE                       = 0xb
+       RTM_RTTUNIT                       = 0xf4240
+       RTM_SETGATE                       = 0x12
+       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
+       RUSAGE_CHILDREN                   = -0x1
+       RUSAGE_SELF                       = 0x0
+       SCM_CREDS                         = 0x4
+       SCM_RIGHTS                        = 0x1
+       SCM_TIMESTAMP                     = 0x8
+       SHUT_RD                           = 0x0
+       SHUT_RDWR                         = 0x2
+       SHUT_WR                           = 0x1
+       SIOCADDMULTI                      = 0x80906931
+       SIOCADDRT                         = 0x8038720a
+       SIOCAIFADDR                       = 0x8040691a
+       SIOCALIFADDR                      = 0x8118691c
+       SIOCATMARK                        = 0x40047307
+       SIOCDELMULTI                      = 0x80906932
+       SIOCDELRT                         = 0x8038720b
+       SIOCDIFADDR                       = 0x80906919
+       SIOCDIFPHYADDR                    = 0x80906949
+       SIOCDLIFADDR                      = 0x8118691e
+       SIOCGDRVSPEC                      = 0xc028697b
+       SIOCGETPFSYNC                     = 0xc09069f8
+       SIOCGETSGCNT                      = 0xc0207534
+       SIOCGETVIFCNT                     = 0xc0287533
+       SIOCGHIWAT                        = 0x40047301
+       SIOCGIFADDR                       = 0xc0906921
+       SIOCGIFADDRPREF                   = 0xc0986920
+       SIOCGIFALIAS                      = 0xc040691b
+       SIOCGIFBRDADDR                    = 0xc0906923
+       SIOCGIFCAP                        = 0xc0206976
+       SIOCGIFCONF                       = 0xc0106926
+       SIOCGIFDATA                       = 0xc0986985
+       SIOCGIFDLT                        = 0xc0906977
+       SIOCGIFDSTADDR                    = 0xc0906922
+       SIOCGIFFLAGS                      = 0xc0906911
+       SIOCGIFGENERIC                    = 0xc090693a
+       SIOCGIFMEDIA                      = 0xc0306936
+       SIOCGIFMETRIC                     = 0xc0906917
+       SIOCGIFMTU                        = 0xc090697e
+       SIOCGIFNETMASK                    = 0xc0906925
+       SIOCGIFPDSTADDR                   = 0xc0906948
+       SIOCGIFPSRCADDR                   = 0xc0906947
+       SIOCGLIFADDR                      = 0xc118691d
+       SIOCGLIFPHYADDR                   = 0xc118694b
+       SIOCGLINKSTR                      = 0xc0286987
+       SIOCGLOWAT                        = 0x40047303
+       SIOCGPGRP                         = 0x40047309
+       SIOCGVH                           = 0xc0906983
+       SIOCIFCREATE                      = 0x8090697a
+       SIOCIFDESTROY                     = 0x80906979
+       SIOCIFGCLONERS                    = 0xc0106978
+       SIOCINITIFADDR                    = 0xc0706984
+       SIOCSDRVSPEC                      = 0x8028697b
+       SIOCSETPFSYNC                     = 0x809069f7
+       SIOCSHIWAT                        = 0x80047300
+       SIOCSIFADDR                       = 0x8090690c
+       SIOCSIFADDRPREF                   = 0x8098691f
+       SIOCSIFBRDADDR                    = 0x80906913
+       SIOCSIFCAP                        = 0x80206975
+       SIOCSIFDSTADDR                    = 0x8090690e
+       SIOCSIFFLAGS                      = 0x80906910
+       SIOCSIFGENERIC                    = 0x80906939
+       SIOCSIFMEDIA                      = 0xc0906935
+       SIOCSIFMETRIC                     = 0x80906918
+       SIOCSIFMTU                        = 0x8090697f
+       SIOCSIFNETMASK                    = 0x80906916
+       SIOCSIFPHYADDR                    = 0x80406946
+       SIOCSLIFPHYADDR                   = 0x8118694a
+       SIOCSLINKSTR                      = 0x80286988
+       SIOCSLOWAT                        = 0x80047302
+       SIOCSPGRP                         = 0x80047308
+       SIOCSVH                           = 0xc0906982
+       SIOCZIFDATA                       = 0xc0986986
+       SOCK_CLOEXEC                      = 0x10000000
+       SOCK_DGRAM                        = 0x2
+       SOCK_FLAGS_MASK                   = 0xf0000000
+       SOCK_NONBLOCK                     = 0x20000000
+       SOCK_NOSIGPIPE                    = 0x40000000
+       SOCK_RAW                          = 0x3
+       SOCK_RDM                          = 0x4
+       SOCK_SEQPACKET                    = 0x5
+       SOCK_STREAM                       = 0x1
+       SOL_SOCKET                        = 0xffff
+       SOMAXCONN                         = 0x80
+       SO_ACCEPTCONN                     = 0x2
+       SO_ACCEPTFILTER                   = 0x1000
+       SO_BROADCAST                      = 0x20
+       SO_DEBUG                          = 0x1
+       SO_DONTROUTE                      = 0x10
+       SO_ERROR                          = 0x1007
+       SO_KEEPALIVE                      = 0x8
+       SO_LINGER                         = 0x80
+       SO_NOHEADER                       = 0x100a
+       SO_NOSIGPIPE                      = 0x800
+       SO_OOBINLINE                      = 0x100
+       SO_OVERFLOWED                     = 0x1009
+       SO_RCVBUF                         = 0x1002
+       SO_RCVLOWAT                       = 0x1004
+       SO_RCVTIMEO                       = 0x100c
+       SO_REUSEADDR                      = 0x4
+       SO_REUSEPORT                      = 0x200
+       SO_SNDBUF                         = 0x1001
+       SO_SNDLOWAT                       = 0x1003
+       SO_SNDTIMEO                       = 0x100b
+       SO_TIMESTAMP                      = 0x2000
+       SO_TYPE                           = 0x1008
+       SO_USELOOPBACK                    = 0x40
+       SYSCTL_VERSION                    = 0x1000000
+       SYSCTL_VERS_0                     = 0x0
+       SYSCTL_VERS_1                     = 0x1000000
+       SYSCTL_VERS_MASK                  = 0xff000000
+       S_ARCH1                           = 0x10000
+       S_ARCH2                           = 0x20000
+       S_BLKSIZE                         = 0x200
+       S_IEXEC                           = 0x40
+       S_IFBLK                           = 0x6000
+       S_IFCHR                           = 0x2000
+       S_IFDIR                           = 0x4000
+       S_IFIFO                           = 0x1000
+       S_IFLNK                           = 0xa000
+       S_IFMT                            = 0xf000
+       S_IFREG                           = 0x8000
+       S_IFSOCK                          = 0xc000
+       S_IFWHT                           = 0xe000
+       S_IREAD                           = 0x100
+       S_IRGRP                           = 0x20
+       S_IROTH                           = 0x4
+       S_IRUSR                           = 0x100
+       S_IRWXG                           = 0x38
+       S_IRWXO                           = 0x7
+       S_IRWXU                           = 0x1c0
+       S_ISGID                           = 0x400
+       S_ISTXT                           = 0x200
+       S_ISUID                           = 0x800
+       S_ISVTX                           = 0x200
+       S_IWGRP                           = 0x10
+       S_IWOTH                           = 0x2
+       S_IWRITE                          = 0x80
+       S_IWUSR                           = 0x80
+       S_IXGRP                           = 0x8
+       S_IXOTH                           = 0x1
+       S_IXUSR                           = 0x40
+       S_LOGIN_SET                       = 0x1
+       TCIFLUSH                          = 0x1
+       TCIOFLUSH                         = 0x3
+       TCOFLUSH                          = 0x2
+       TCP_CONGCTL                       = 0x20
+       TCP_KEEPCNT                       = 0x6
+       TCP_KEEPIDLE                      = 0x3
+       TCP_KEEPINIT                      = 0x7
+       TCP_KEEPINTVL                     = 0x5
+       TCP_MAXBURST                      = 0x4
+       TCP_MAXSEG                        = 0x2
+       TCP_MAXWIN                        = 0xffff
+       TCP_MAX_WINSHIFT                  = 0xe
+       TCP_MD5SIG                        = 0x10
+       TCP_MINMSS                        = 0xd8
+       TCP_MSS                           = 0x218
+       TCP_NODELAY                       = 0x1
+       TCSAFLUSH                         = 0x2
+       TIOCCBRK                          = 0x2000747a
+       TIOCCDTR                          = 0x20007478
+       TIOCCONS                          = 0x80047462
+       TIOCDCDTIMESTAMP                  = 0x40107458
+       TIOCDRAIN                         = 0x2000745e
+       TIOCEXCL                          = 0x2000740d
+       TIOCEXT                           = 0x80047460
+       TIOCFLAG_CDTRCTS                  = 0x10
+       TIOCFLAG_CLOCAL                   = 0x2
+       TIOCFLAG_CRTSCTS                  = 0x4
+       TIOCFLAG_MDMBUF                   = 0x8
+       TIOCFLAG_SOFTCAR                  = 0x1
+       TIOCFLUSH                         = 0x80047410
+       TIOCGETA                          = 0x402c7413
+       TIOCGETD                          = 0x4004741a
+       TIOCGFLAGS                        = 0x4004745d
+       TIOCGLINED                        = 0x40207442
+       TIOCGPGRP                         = 0x40047477
+       TIOCGQSIZE                        = 0x40047481
+       TIOCGRANTPT                       = 0x20007447
+       TIOCGSID                          = 0x40047463
+       TIOCGSIZE                         = 0x40087468
+       TIOCGWINSZ                        = 0x40087468
+       TIOCMBIC                          = 0x8004746b
+       TIOCMBIS                          = 0x8004746c
+       TIOCMGET                          = 0x4004746a
+       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                      = 0x0
+       TIOCPKT_DOSTOP                    = 0x20
+       TIOCPKT_FLUSHREAD                 = 0x1
+       TIOCPKT_FLUSHWRITE                = 0x2
+       TIOCPKT_IOCTL                     = 0x40
+       TIOCPKT_NOSTOP                    = 0x10
+       TIOCPKT_START                     = 0x8
+       TIOCPKT_STOP                      = 0x4
+       TIOCPTMGET                        = 0x40287446
+       TIOCPTSNAME                       = 0x40287448
+       TIOCRCVFRAME                      = 0x80087445
+       TIOCREMOTE                        = 0x80047469
+       TIOCSBRK                          = 0x2000747b
+       TIOCSCTTY                         = 0x20007461
+       TIOCSDTR                          = 0x20007479
+       TIOCSETA                          = 0x802c7414
+       TIOCSETAF                         = 0x802c7416
+       TIOCSETAW                         = 0x802c7415
+       TIOCSETD                          = 0x8004741b
+       TIOCSFLAGS                        = 0x8004745c
+       TIOCSIG                           = 0x2000745f
+       TIOCSLINED                        = 0x80207443
+       TIOCSPGRP                         = 0x80047476
+       TIOCSQSIZE                        = 0x80047480
+       TIOCSSIZE                         = 0x80087467
+       TIOCSTART                         = 0x2000746e
+       TIOCSTAT                          = 0x80047465
+       TIOCSTI                           = 0x80017472
+       TIOCSTOP                          = 0x2000746f
+       TIOCSWINSZ                        = 0x80087467
+       TIOCUCNTL                         = 0x80047466
+       TIOCXMTFRAME                      = 0x80087444
+       TOSTOP                            = 0x400000
+       VDISCARD                          = 0xf
+       VDSUSP                            = 0xb
+       VEOF                              = 0x0
+       VEOL                              = 0x1
+       VEOL2                             = 0x2
+       VERASE                            = 0x3
+       VINTR                             = 0x8
+       VKILL                             = 0x5
+       VLNEXT                            = 0xe
+       VMIN                              = 0x10
+       VQUIT                             = 0x9
+       VREPRINT                          = 0x6
+       VSTART                            = 0xc
+       VSTATUS                           = 0x12
+       VSTOP                             = 0xd
+       VSUSP                             = 0xa
+       VTIME                             = 0x11
+       VWERASE                           = 0x4
+       WALL                              = 0x8
+       WALLSIG                           = 0x8
+       WALTSIG                           = 0x4
+       WCLONE                            = 0x4
+       WCOREFLAG                         = 0x80
+       WNOHANG                           = 0x1
+       WNOWAIT                           = 0x10000
+       WNOZOMBIE                         = 0x20000
+       WOPTSCHECKED                      = 0x40000
+       WSTOPPED                          = 0x7f
+       WUNTRACED                         = 0x2
+)
+
+// Errors
+const (
+       E2BIG           = syscall.Errno(0x7)
+       EACCES          = syscall.Errno(0xd)
+       EADDRINUSE      = syscall.Errno(0x30)
+       EADDRNOTAVAIL   = syscall.Errno(0x31)
+       EAFNOSUPPORT    = syscall.Errno(0x2f)
+       EAGAIN          = syscall.Errno(0x23)
+       EALREADY        = syscall.Errno(0x25)
+       EAUTH           = syscall.Errno(0x50)
+       EBADF           = syscall.Errno(0x9)
+       EBADMSG         = syscall.Errno(0x58)
+       EBADRPC         = syscall.Errno(0x48)
+       EBUSY           = syscall.Errno(0x10)
+       ECANCELED       = syscall.Errno(0x57)
+       ECHILD          = syscall.Errno(0xa)
+       ECONNABORTED    = syscall.Errno(0x35)
+       ECONNREFUSED    = syscall.Errno(0x3d)
+       ECONNRESET      = syscall.Errno(0x36)
+       EDEADLK         = syscall.Errno(0xb)
+       EDESTADDRREQ    = syscall.Errno(0x27)
+       EDOM            = syscall.Errno(0x21)
+       EDQUOT          = syscall.Errno(0x45)
+       EEXIST          = syscall.Errno(0x11)
+       EFAULT          = syscall.Errno(0xe)
+       EFBIG           = syscall.Errno(0x1b)
+       EFTYPE          = syscall.Errno(0x4f)
+       EHOSTDOWN       = syscall.Errno(0x40)
+       EHOSTUNREACH    = syscall.Errno(0x41)
+       EIDRM           = syscall.Errno(0x52)
+       EILSEQ          = syscall.Errno(0x55)
+       EINPROGRESS     = syscall.Errno(0x24)
+       EINTR           = syscall.Errno(0x4)
+       EINVAL          = syscall.Errno(0x16)
+       EIO             = syscall.Errno(0x5)
+       EISCONN         = syscall.Errno(0x38)
+       EISDIR          = syscall.Errno(0x15)
+       ELAST           = syscall.Errno(0x60)
+       ELOOP           = syscall.Errno(0x3e)
+       EMFILE          = syscall.Errno(0x18)
+       EMLINK          = syscall.Errno(0x1f)
+       EMSGSIZE        = syscall.Errno(0x28)
+       EMULTIHOP       = syscall.Errno(0x5e)
+       ENAMETOOLONG    = syscall.Errno(0x3f)
+       ENEEDAUTH       = syscall.Errno(0x51)
+       ENETDOWN        = syscall.Errno(0x32)
+       ENETRESET       = syscall.Errno(0x34)
+       ENETUNREACH     = syscall.Errno(0x33)
+       ENFILE          = syscall.Errno(0x17)
+       ENOATTR         = syscall.Errno(0x5d)
+       ENOBUFS         = syscall.Errno(0x37)
+       ENODATA         = syscall.Errno(0x59)
+       ENODEV          = syscall.Errno(0x13)
+       ENOENT          = syscall.Errno(0x2)
+       ENOEXEC         = syscall.Errno(0x8)
+       ENOLCK          = syscall.Errno(0x4d)
+       ENOLINK         = syscall.Errno(0x5f)
+       ENOMEM          = syscall.Errno(0xc)
+       ENOMSG          = syscall.Errno(0x53)
+       ENOPROTOOPT     = syscall.Errno(0x2a)
+       ENOSPC          = syscall.Errno(0x1c)
+       ENOSR           = syscall.Errno(0x5a)
+       ENOSTR          = syscall.Errno(0x5b)
+       ENOSYS          = syscall.Errno(0x4e)
+       ENOTBLK         = syscall.Errno(0xf)
+       ENOTCONN        = syscall.Errno(0x39)
+       ENOTDIR         = syscall.Errno(0x14)
+       ENOTEMPTY       = syscall.Errno(0x42)
+       ENOTSOCK        = syscall.Errno(0x26)
+       ENOTSUP         = syscall.Errno(0x56)
+       ENOTTY          = syscall.Errno(0x19)
+       ENXIO           = syscall.Errno(0x6)
+       EOPNOTSUPP      = syscall.Errno(0x2d)
+       EOVERFLOW       = syscall.Errno(0x54)
+       EPERM           = syscall.Errno(0x1)
+       EPFNOSUPPORT    = syscall.Errno(0x2e)
+       EPIPE           = syscall.Errno(0x20)
+       EPROCLIM        = syscall.Errno(0x43)
+       EPROCUNAVAIL    = syscall.Errno(0x4c)
+       EPROGMISMATCH   = syscall.Errno(0x4b)
+       EPROGUNAVAIL    = syscall.Errno(0x4a)
+       EPROTO          = syscall.Errno(0x60)
+       EPROTONOSUPPORT = syscall.Errno(0x2b)
+       EPROTOTYPE      = syscall.Errno(0x29)
+       ERANGE          = syscall.Errno(0x22)
+       EREMOTE         = syscall.Errno(0x47)
+       EROFS           = syscall.Errno(0x1e)
+       ERPCMISMATCH    = syscall.Errno(0x49)
+       ESHUTDOWN       = syscall.Errno(0x3a)
+       ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+       ESPIPE          = syscall.Errno(0x1d)
+       ESRCH           = syscall.Errno(0x3)
+       ESTALE          = syscall.Errno(0x46)
+       ETIME           = syscall.Errno(0x5c)
+       ETIMEDOUT       = syscall.Errno(0x3c)
+       ETOOMANYREFS    = syscall.Errno(0x3b)
+       ETXTBSY         = syscall.Errno(0x1a)
+       EUSERS          = syscall.Errno(0x44)
+       EWOULDBLOCK     = syscall.Errno(0x23)
+       EXDEV           = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+       SIGABRT   = syscall.Signal(0x6)
+       SIGALRM   = syscall.Signal(0xe)
+       SIGBUS    = syscall.Signal(0xa)
+       SIGCHLD   = syscall.Signal(0x14)
+       SIGCONT   = syscall.Signal(0x13)
+       SIGEMT    = syscall.Signal(0x7)
+       SIGFPE    = syscall.Signal(0x8)
+       SIGHUP    = syscall.Signal(0x1)
+       SIGILL    = syscall.Signal(0x4)
+       SIGINFO   = syscall.Signal(0x1d)
+       SIGINT    = syscall.Signal(0x2)
+       SIGIO     = syscall.Signal(0x17)
+       SIGIOT    = syscall.Signal(0x6)
+       SIGKILL   = syscall.Signal(0x9)
+       SIGPIPE   = syscall.Signal(0xd)
+       SIGPROF   = syscall.Signal(0x1b)
+       SIGPWR    = syscall.Signal(0x20)
+       SIGQUIT   = syscall.Signal(0x3)
+       SIGSEGV   = syscall.Signal(0xb)
+       SIGSTOP   = syscall.Signal(0x11)
+       SIGSYS    = syscall.Signal(0xc)
+       SIGTERM   = syscall.Signal(0xf)
+       SIGTRAP   = syscall.Signal(0x5)
+       SIGTSTP   = syscall.Signal(0x12)
+       SIGTTIN   = syscall.Signal(0x15)
+       SIGTTOU   = syscall.Signal(0x16)
+       SIGURG    = syscall.Signal(0x10)
+       SIGUSR1   = syscall.Signal(0x1e)
+       SIGUSR2   = syscall.Signal(0x1f)
+       SIGVTALRM = syscall.Signal(0x1a)
+       SIGWINCH  = syscall.Signal(0x1c)
+       SIGXCPU   = syscall.Signal(0x18)
+       SIGXFSZ   = syscall.Signal(0x19)
+)
+
+// 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 or too small",
+       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 option 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: "identifier removed",
+       83: "no message of desired type",
+       84: "value too large to be stored in data type",
+       85: "illegal byte sequence",
+       86: "not supported",
+       87: "operation Canceled",
+       88: "bad or Corrupt message",
+       89: "no message available",
+       90: "no STREAM resources",
+       91: "not a STREAM",
+       92: "STREAM ioctl timeout",
+       93: "attribute not found",
+       94: "multihop attempted",
+       95: "link has been severed",
+       96: "protocol error",
+}
+
+// Signal table
+var signals = [...]string{
+       1:  "hangup",
+       2:  "interrupt",
+       3:  "quit",
+       4:  "illegal instruction",
+       5:  "trace/BPT trap",
+       6:  "abort trap",
+       7:  "EMT trap",
+       8:  "floating point exception",
+       9:  "killed",
+       10: "bus error",
+       11: "segmentation fault",
+       12: "bad system call",
+       13: "broken pipe",
+       14: "alarm clock",
+       15: "terminated",
+       16: "urgent I/O condition",
+       17: "stopped (signal)",
+       18: "stopped",
+       19: "continued",
+       20: "child exited",
+       21: "stopped (tty input)",
+       22: "stopped (tty output)",
+       23: "I/O possible",
+       24: "cputime limit exceeded",
+       25: "filesize limit exceeded",
+       26: "virtual timer expired",
+       27: "profiling timer expired",
+       28: "window size changes",
+       29: "information request",
+       30: "user defined signal 1",
+       31: "user defined signal 2",
+       32: "power fail/restart",
+}
diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go
new file mode 100644 (file)
index 0000000..ac85ca6
--- /dev/null
@@ -0,0 +1,1688 @@
+// mkerrors.sh -marm
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build arm,netbsd
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -marm _const.go
+
+package unix
+
+import "syscall"
+
+const (
+       AF_APPLETALK                      = 0x10
+       AF_ARP                            = 0x1c
+       AF_BLUETOOTH                      = 0x1f
+       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_HYLINK                         = 0xf
+       AF_IEEE80211                      = 0x20
+       AF_IMPLINK                        = 0x3
+       AF_INET                           = 0x2
+       AF_INET6                          = 0x18
+       AF_IPX                            = 0x17
+       AF_ISDN                           = 0x1a
+       AF_ISO                            = 0x7
+       AF_LAT                            = 0xe
+       AF_LINK                           = 0x12
+       AF_LOCAL                          = 0x1
+       AF_MAX                            = 0x23
+       AF_MPLS                           = 0x21
+       AF_NATM                           = 0x1b
+       AF_NS                             = 0x6
+       AF_OROUTE                         = 0x11
+       AF_OSI                            = 0x7
+       AF_PUP                            = 0x4
+       AF_ROUTE                          = 0x22
+       AF_SNA                            = 0xb
+       AF_UNIX                           = 0x1
+       AF_UNSPEC                         = 0x0
+       ARPHRD_ARCNET                     = 0x7
+       ARPHRD_ETHER                      = 0x1
+       ARPHRD_FRELAY                     = 0xf
+       ARPHRD_IEEE1394                   = 0x18
+       ARPHRD_IEEE802                    = 0x6
+       ARPHRD_STRIP                      = 0x17
+       B0                                = 0x0
+       B110                              = 0x6e
+       B115200                           = 0x1c200
+       B1200                             = 0x4b0
+       B134                              = 0x86
+       B14400                            = 0x3840
+       B150                              = 0x96
+       B1800                             = 0x708
+       B19200                            = 0x4b00
+       B200                              = 0xc8
+       B230400                           = 0x38400
+       B2400                             = 0x960
+       B28800                            = 0x7080
+       B300                              = 0x12c
+       B38400                            = 0x9600
+       B460800                           = 0x70800
+       B4800                             = 0x12c0
+       B50                               = 0x32
+       B57600                            = 0xe100
+       B600                              = 0x258
+       B7200                             = 0x1c20
+       B75                               = 0x4b
+       B76800                            = 0x12c00
+       B921600                           = 0xe1000
+       B9600                             = 0x2580
+       BIOCFEEDBACK                      = 0x8004427d
+       BIOCFLUSH                         = 0x20004268
+       BIOCGBLEN                         = 0x40044266
+       BIOCGDLT                          = 0x4004426a
+       BIOCGDLTLIST                      = 0xc0084277
+       BIOCGETIF                         = 0x4090426b
+       BIOCGFEEDBACK                     = 0x4004427c
+       BIOCGHDRCMPLT                     = 0x40044274
+       BIOCGRTIMEOUT                     = 0x400c427b
+       BIOCGSEESENT                      = 0x40044278
+       BIOCGSTATS                        = 0x4080426f
+       BIOCGSTATSOLD                     = 0x4008426f
+       BIOCIMMEDIATE                     = 0x80044270
+       BIOCPROMISC                       = 0x20004269
+       BIOCSBLEN                         = 0xc0044266
+       BIOCSDLT                          = 0x80044276
+       BIOCSETF                          = 0x80084267
+       BIOCSETIF                         = 0x8090426c
+       BIOCSFEEDBACK                     = 0x8004427d
+       BIOCSHDRCMPLT                     = 0x80044275
+       BIOCSRTIMEOUT                     = 0x800c427a
+       BIOCSSEESENT                      = 0x80044279
+       BIOCSTCPF                         = 0x80084272
+       BIOCSUDPF                         = 0x80084273
+       BIOCVERSION                       = 0x40044271
+       BPF_A                             = 0x10
+       BPF_ABS                           = 0x20
+       BPF_ADD                           = 0x0
+       BPF_ALIGNMENT                     = 0x4
+       BPF_ALIGNMENT32                   = 0x4
+       BPF_ALU                           = 0x4
+       BPF_AND                           = 0x50
+       BPF_B                             = 0x10
+       BPF_DFLTBUFSIZE                   = 0x100000
+       BPF_DIV                           = 0x30
+       BPF_H                             = 0x8
+       BPF_IMM                           = 0x0
+       BPF_IND                           = 0x40
+       BPF_JA                            = 0x0
+       BPF_JEQ                           = 0x10
+       BPF_JGE                           = 0x30
+       BPF_JGT                           = 0x20
+       BPF_JMP                           = 0x5
+       BPF_JSET                          = 0x40
+       BPF_K                             = 0x0
+       BPF_LD                            = 0x0
+       BPF_LDX                           = 0x1
+       BPF_LEN                           = 0x80
+       BPF_LSH                           = 0x60
+       BPF_MAJOR_VERSION                 = 0x1
+       BPF_MAXBUFSIZE                    = 0x1000000
+       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                           = 0x0
+       BPF_TXA                           = 0x80
+       BPF_W                             = 0x0
+       BPF_X                             = 0x8
+       BRKINT                            = 0x2
+       CFLUSH                            = 0xf
+       CLOCAL                            = 0x8000
+       CREAD                             = 0x800
+       CS5                               = 0x0
+       CS6                               = 0x100
+       CS7                               = 0x200
+       CS8                               = 0x300
+       CSIZE                             = 0x300
+       CSTART                            = 0x11
+       CSTATUS                           = 0x14
+       CSTOP                             = 0x13
+       CSTOPB                            = 0x400
+       CSUSP                             = 0x1a
+       CTL_MAXNAME                       = 0xc
+       CTL_NET                           = 0x4
+       CTL_QUERY                         = -0x2
+       DIOCBSFLUSH                       = 0x20006478
+       DLT_A429                          = 0xb8
+       DLT_A653_ICM                      = 0xb9
+       DLT_AIRONET_HEADER                = 0x78
+       DLT_AOS                           = 0xde
+       DLT_APPLE_IP_OVER_IEEE1394        = 0x8a
+       DLT_ARCNET                        = 0x7
+       DLT_ARCNET_LINUX                  = 0x81
+       DLT_ATM_CLIP                      = 0x13
+       DLT_ATM_RFC1483                   = 0xb
+       DLT_AURORA                        = 0x7e
+       DLT_AX25                          = 0x3
+       DLT_AX25_KISS                     = 0xca
+       DLT_BACNET_MS_TP                  = 0xa5
+       DLT_BLUETOOTH_HCI_H4              = 0xbb
+       DLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9
+       DLT_CAN20B                        = 0xbe
+       DLT_CAN_SOCKETCAN                 = 0xe3
+       DLT_CHAOS                         = 0x5
+       DLT_CISCO_IOS                     = 0x76
+       DLT_C_HDLC                        = 0x68
+       DLT_C_HDLC_WITH_DIR               = 0xcd
+       DLT_DECT                          = 0xdd
+       DLT_DOCSIS                        = 0x8f
+       DLT_ECONET                        = 0x73
+       DLT_EN10MB                        = 0x1
+       DLT_EN3MB                         = 0x2
+       DLT_ENC                           = 0x6d
+       DLT_ERF                           = 0xc5
+       DLT_ERF_ETH                       = 0xaf
+       DLT_ERF_POS                       = 0xb0
+       DLT_FC_2                          = 0xe0
+       DLT_FC_2_WITH_FRAME_DELIMS        = 0xe1
+       DLT_FDDI                          = 0xa
+       DLT_FLEXRAY                       = 0xd2
+       DLT_FRELAY                        = 0x6b
+       DLT_FRELAY_WITH_DIR               = 0xce
+       DLT_GCOM_SERIAL                   = 0xad
+       DLT_GCOM_T1E1                     = 0xac
+       DLT_GPF_F                         = 0xab
+       DLT_GPF_T                         = 0xaa
+       DLT_GPRS_LLC                      = 0xa9
+       DLT_GSMTAP_ABIS                   = 0xda
+       DLT_GSMTAP_UM                     = 0xd9
+       DLT_HDLC                          = 0x10
+       DLT_HHDLC                         = 0x79
+       DLT_HIPPI                         = 0xf
+       DLT_IBM_SN                        = 0x92
+       DLT_IBM_SP                        = 0x91
+       DLT_IEEE802                       = 0x6
+       DLT_IEEE802_11                    = 0x69
+       DLT_IEEE802_11_RADIO              = 0x7f
+       DLT_IEEE802_11_RADIO_AVS          = 0xa3
+       DLT_IEEE802_15_4                  = 0xc3
+       DLT_IEEE802_15_4_LINUX            = 0xbf
+       DLT_IEEE802_15_4_NONASK_PHY       = 0xd7
+       DLT_IEEE802_16_MAC_CPS            = 0xbc
+       DLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1
+       DLT_IPMB                          = 0xc7
+       DLT_IPMB_LINUX                    = 0xd1
+       DLT_IPNET                         = 0xe2
+       DLT_IPV4                          = 0xe4
+       DLT_IPV6                          = 0xe5
+       DLT_IP_OVER_FC                    = 0x7a
+       DLT_JUNIPER_ATM1                  = 0x89
+       DLT_JUNIPER_ATM2                  = 0x87
+       DLT_JUNIPER_CHDLC                 = 0xb5
+       DLT_JUNIPER_ES                    = 0x84
+       DLT_JUNIPER_ETHER                 = 0xb2
+       DLT_JUNIPER_FRELAY                = 0xb4
+       DLT_JUNIPER_GGSN                  = 0x85
+       DLT_JUNIPER_ISM                   = 0xc2
+       DLT_JUNIPER_MFR                   = 0x86
+       DLT_JUNIPER_MLFR                  = 0x83
+       DLT_JUNIPER_MLPPP                 = 0x82
+       DLT_JUNIPER_MONITOR               = 0xa4
+       DLT_JUNIPER_PIC_PEER              = 0xae
+       DLT_JUNIPER_PPP                   = 0xb3
+       DLT_JUNIPER_PPPOE                 = 0xa7
+       DLT_JUNIPER_PPPOE_ATM             = 0xa8
+       DLT_JUNIPER_SERVICES              = 0x88
+       DLT_JUNIPER_ST                    = 0xc8
+       DLT_JUNIPER_VP                    = 0xb7
+       DLT_LAPB_WITH_DIR                 = 0xcf
+       DLT_LAPD                          = 0xcb
+       DLT_LIN                           = 0xd4
+       DLT_LINUX_EVDEV                   = 0xd8
+       DLT_LINUX_IRDA                    = 0x90
+       DLT_LINUX_LAPD                    = 0xb1
+       DLT_LINUX_SLL                     = 0x71
+       DLT_LOOP                          = 0x6c
+       DLT_LTALK                         = 0x72
+       DLT_MFR                           = 0xb6
+       DLT_MOST                          = 0xd3
+       DLT_MPLS                          = 0xdb
+       DLT_MTP2                          = 0x8c
+       DLT_MTP2_WITH_PHDR                = 0x8b
+       DLT_MTP3                          = 0x8d
+       DLT_NULL                          = 0x0
+       DLT_PCI_EXP                       = 0x7d
+       DLT_PFLOG                         = 0x75
+       DLT_PFSYNC                        = 0x12
+       DLT_PPI                           = 0xc0
+       DLT_PPP                           = 0x9
+       DLT_PPP_BSDOS                     = 0xe
+       DLT_PPP_ETHER                     = 0x33
+       DLT_PPP_PPPD                      = 0xa6
+       DLT_PPP_SERIAL                    = 0x32
+       DLT_PPP_WITH_DIR                  = 0xcc
+       DLT_PRISM_HEADER                  = 0x77
+       DLT_PRONET                        = 0x4
+       DLT_RAIF1                         = 0xc6
+       DLT_RAW                           = 0xc
+       DLT_RAWAF_MASK                    = 0x2240000
+       DLT_RIO                           = 0x7c
+       DLT_SCCP                          = 0x8e
+       DLT_SITA                          = 0xc4
+       DLT_SLIP                          = 0x8
+       DLT_SLIP_BSDOS                    = 0xd
+       DLT_SUNATM                        = 0x7b
+       DLT_SYMANTEC_FIREWALL             = 0x63
+       DLT_TZSP                          = 0x80
+       DLT_USB                           = 0xba
+       DLT_USB_LINUX                     = 0xbd
+       DLT_USB_LINUX_MMAPPED             = 0xdc
+       DLT_WIHART                        = 0xdf
+       DLT_X2E_SERIAL                    = 0xd5
+       DLT_X2E_XORAYA                    = 0xd6
+       DT_BLK                            = 0x6
+       DT_CHR                            = 0x2
+       DT_DIR                            = 0x4
+       DT_FIFO                           = 0x1
+       DT_LNK                            = 0xa
+       DT_REG                            = 0x8
+       DT_SOCK                           = 0xc
+       DT_UNKNOWN                        = 0x0
+       DT_WHT                            = 0xe
+       ECHO                              = 0x8
+       ECHOCTL                           = 0x40
+       ECHOE                             = 0x2
+       ECHOK                             = 0x4
+       ECHOKE                            = 0x1
+       ECHONL                            = 0x10
+       ECHOPRT                           = 0x20
+       EMUL_LINUX                        = 0x1
+       EMUL_LINUX32                      = 0x5
+       EMUL_MAXID                        = 0x6
+       ETHERCAP_JUMBO_MTU                = 0x4
+       ETHERCAP_VLAN_HWTAGGING           = 0x2
+       ETHERCAP_VLAN_MTU                 = 0x1
+       ETHERMIN                          = 0x2e
+       ETHERMTU                          = 0x5dc
+       ETHERMTU_JUMBO                    = 0x2328
+       ETHERTYPE_8023                    = 0x4
+       ETHERTYPE_AARP                    = 0x80f3
+       ETHERTYPE_ACCTON                  = 0x8390
+       ETHERTYPE_AEONIC                  = 0x8036
+       ETHERTYPE_ALPHA                   = 0x814a
+       ETHERTYPE_AMBER                   = 0x6008
+       ETHERTYPE_AMOEBA                  = 0x8145
+       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_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_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_SLOWPROTOCOLS           = 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_CRC_LEN                     = 0x4
+       ETHER_CRC_POLY_BE                 = 0x4c11db6
+       ETHER_CRC_POLY_LE                 = 0xedb88320
+       ETHER_HDR_LEN                     = 0xe
+       ETHER_MAX_LEN                     = 0x5ee
+       ETHER_MAX_LEN_JUMBO               = 0x233a
+       ETHER_MIN_LEN                     = 0x40
+       ETHER_PPPOE_ENCAP_LEN             = 0x8
+       ETHER_TYPE_LEN                    = 0x2
+       ETHER_VLAN_ENCAP_LEN              = 0x4
+       EVFILT_AIO                        = 0x2
+       EVFILT_PROC                       = 0x4
+       EVFILT_READ                       = 0x0
+       EVFILT_SIGNAL                     = 0x5
+       EVFILT_SYSCOUNT                   = 0x7
+       EVFILT_TIMER                      = 0x6
+       EVFILT_VNODE                      = 0x3
+       EVFILT_WRITE                      = 0x1
+       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
+       EXTA                              = 0x4b00
+       EXTB                              = 0x9600
+       EXTPROC                           = 0x800
+       FD_CLOEXEC                        = 0x1
+       FD_SETSIZE                        = 0x100
+       FLUSHO                            = 0x800000
+       F_CLOSEM                          = 0xa
+       F_DUPFD                           = 0x0
+       F_DUPFD_CLOEXEC                   = 0xc
+       F_FSCTL                           = -0x80000000
+       F_FSDIRMASK                       = 0x70000000
+       F_FSIN                            = 0x10000000
+       F_FSINOUT                         = 0x30000000
+       F_FSOUT                           = 0x20000000
+       F_FSPRIV                          = 0x8000
+       F_FSVOID                          = 0x40000000
+       F_GETFD                           = 0x1
+       F_GETFL                           = 0x3
+       F_GETLK                           = 0x7
+       F_GETNOSIGPIPE                    = 0xd
+       F_GETOWN                          = 0x5
+       F_MAXFD                           = 0xb
+       F_OK                              = 0x0
+       F_PARAM_MASK                      = 0xfff
+       F_PARAM_MAX                       = 0xfff
+       F_RDLCK                           = 0x1
+       F_SETFD                           = 0x2
+       F_SETFL                           = 0x4
+       F_SETLK                           = 0x8
+       F_SETLKW                          = 0x9
+       F_SETNOSIGPIPE                    = 0xe
+       F_SETOWN                          = 0x6
+       F_UNLCK                           = 0x2
+       F_WRLCK                           = 0x3
+       HUPCL                             = 0x4000
+       ICANON                            = 0x100
+       ICMP6_FILTER                      = 0x12
+       ICRNL                             = 0x100
+       IEXTEN                            = 0x400
+       IFAN_ARRIVAL                      = 0x0
+       IFAN_DEPARTURE                    = 0x1
+       IFA_ROUTE                         = 0x1
+       IFF_ALLMULTI                      = 0x200
+       IFF_BROADCAST                     = 0x2
+       IFF_CANTCHANGE                    = 0x8f52
+       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_BRIDGE                        = 0xd1
+       IFT_BSC                           = 0x53
+       IFT_CARP                          = 0xf8
+       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_DVBASILN                      = 0xac
+       IFT_DVBASIOUT                     = 0xad
+       IFT_DVBRCCDOWNSTREAM              = 0x93
+       IFT_DVBRCCMACLAYER                = 0x92
+       IFT_DVBRCCUPSTREAM                = 0x94
+       IFT_ECONET                        = 0xce
+       IFT_EON                           = 0x19
+       IFT_EPLRS                         = 0x57
+       IFT_ESCON                         = 0x49
+       IFT_ETHER                         = 0x6
+       IFT_FAITH                         = 0xf2
+       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_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                           = 0xf1
+       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_STF                           = 0xd7
+       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
+       IGNBRK                            = 0x1
+       IGNCR                             = 0x80
+       IGNPAR                            = 0x4
+       IMAXBEL                           = 0x2000
+       INLCR                             = 0x40
+       INPCK                             = 0x10
+       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
+       IPPROTO_AH                        = 0x33
+       IPPROTO_CARP                      = 0x70
+       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                   = 0x0
+       IPPROTO_ICMP                      = 0x1
+       IPPROTO_ICMPV6                    = 0x3a
+       IPPROTO_IDP                       = 0x16
+       IPPROTO_IGMP                      = 0x2
+       IPPROTO_IP                        = 0x0
+       IPPROTO_IPCOMP                    = 0x6c
+       IPPROTO_IPIP                      = 0x4
+       IPPROTO_IPV4                      = 0x4
+       IPPROTO_IPV6                      = 0x29
+       IPPROTO_IPV6_ICMP                 = 0x3a
+       IPPROTO_MAX                       = 0x100
+       IPPROTO_MAXID                     = 0x34
+       IPPROTO_MOBILE                    = 0x37
+       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
+       IPPROTO_VRRP                      = 0x70
+       IPV6_CHECKSUM                     = 0x1a
+       IPV6_DEFAULT_MULTICAST_HOPS       = 0x1
+       IPV6_DEFAULT_MULTICAST_LOOP       = 0x1
+       IPV6_DEFHLIM                      = 0x40
+       IPV6_DONTFRAG                     = 0x3e
+       IPV6_DSTOPTS                      = 0x32
+       IPV6_FAITH                        = 0x1d
+       IPV6_FLOWINFO_MASK                = 0xffffff0f
+       IPV6_FLOWLABEL_MASK               = 0xffff0f00
+       IPV6_FRAGTTL                      = 0x78
+       IPV6_HLIMDEC                      = 0x1
+       IPV6_HOPLIMIT                     = 0x2f
+       IPV6_HOPOPTS                      = 0x31
+       IPV6_IPSEC_POLICY                 = 0x1c
+       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_PATHMTU                      = 0x2c
+       IPV6_PKTINFO                      = 0x2e
+       IPV6_PORTRANGE                    = 0xe
+       IPV6_PORTRANGE_DEFAULT            = 0x0
+       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_RTHDR                        = 0x33
+       IPV6_RTHDRDSTOPTS                 = 0x23
+       IPV6_RTHDR_LOOSE                  = 0x0
+       IPV6_RTHDR_STRICT                 = 0x1
+       IPV6_RTHDR_TYPE_0                 = 0x0
+       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_DEFAULT_MULTICAST_LOOP         = 0x1
+       IP_DEFAULT_MULTICAST_TTL          = 0x1
+       IP_DF                             = 0x4000
+       IP_DROP_MEMBERSHIP                = 0xd
+       IP_EF                             = 0x8000
+       IP_ERRORMTU                       = 0x15
+       IP_HDRINCL                        = 0x2
+       IP_IPSEC_POLICY                   = 0x16
+       IP_MAXPACKET                      = 0xffff
+       IP_MAX_MEMBERSHIPS                = 0x14
+       IP_MF                             = 0x2000
+       IP_MINFRAGSIZE                    = 0x45
+       IP_MINTTL                         = 0x18
+       IP_MSS                            = 0x240
+       IP_MULTICAST_IF                   = 0x9
+       IP_MULTICAST_LOOP                 = 0xb
+       IP_MULTICAST_TTL                  = 0xa
+       IP_OFFMASK                        = 0x1fff
+       IP_OPTIONS                        = 0x1
+       IP_PORTRANGE                      = 0x13
+       IP_PORTRANGE_DEFAULT              = 0x0
+       IP_PORTRANGE_HIGH                 = 0x1
+       IP_PORTRANGE_LOW                  = 0x2
+       IP_RECVDSTADDR                    = 0x7
+       IP_RECVIF                         = 0x14
+       IP_RECVOPTS                       = 0x5
+       IP_RECVRETOPTS                    = 0x6
+       IP_RECVTTL                        = 0x17
+       IP_RETOPTS                        = 0x8
+       IP_RF                             = 0x8000
+       IP_TOS                            = 0x3
+       IP_TTL                            = 0x4
+       ISIG                              = 0x80
+       ISTRIP                            = 0x20
+       IXANY                             = 0x800
+       IXOFF                             = 0x400
+       IXON                              = 0x200
+       LOCK_EX                           = 0x2
+       LOCK_NB                           = 0x4
+       LOCK_SH                           = 0x1
+       LOCK_UN                           = 0x8
+       MADV_DONTNEED                     = 0x4
+       MADV_FREE                         = 0x6
+       MADV_NORMAL                       = 0x0
+       MADV_RANDOM                       = 0x1
+       MADV_SEQUENTIAL                   = 0x2
+       MADV_SPACEAVAIL                   = 0x5
+       MADV_WILLNEED                     = 0x3
+       MAP_ALIGNMENT_16MB                = 0x18000000
+       MAP_ALIGNMENT_1TB                 = 0x28000000
+       MAP_ALIGNMENT_256TB               = 0x30000000
+       MAP_ALIGNMENT_4GB                 = 0x20000000
+       MAP_ALIGNMENT_64KB                = 0x10000000
+       MAP_ALIGNMENT_64PB                = 0x38000000
+       MAP_ALIGNMENT_MASK                = -0x1000000
+       MAP_ALIGNMENT_SHIFT               = 0x18
+       MAP_ANON                          = 0x1000
+       MAP_FILE                          = 0x0
+       MAP_FIXED                         = 0x10
+       MAP_HASSEMAPHORE                  = 0x200
+       MAP_INHERIT                       = 0x80
+       MAP_INHERIT_COPY                  = 0x1
+       MAP_INHERIT_DEFAULT               = 0x1
+       MAP_INHERIT_DONATE_COPY           = 0x3
+       MAP_INHERIT_NONE                  = 0x2
+       MAP_INHERIT_SHARE                 = 0x0
+       MAP_NORESERVE                     = 0x40
+       MAP_PRIVATE                       = 0x2
+       MAP_RENAME                        = 0x20
+       MAP_SHARED                        = 0x1
+       MAP_STACK                         = 0x2000
+       MAP_TRYFIXED                      = 0x400
+       MAP_WIRED                         = 0x800
+       MSG_BCAST                         = 0x100
+       MSG_CMSG_CLOEXEC                  = 0x800
+       MSG_CONTROLMBUF                   = 0x2000000
+       MSG_CTRUNC                        = 0x20
+       MSG_DONTROUTE                     = 0x4
+       MSG_DONTWAIT                      = 0x80
+       MSG_EOR                           = 0x8
+       MSG_IOVUSRSPACE                   = 0x4000000
+       MSG_LENUSRSPACE                   = 0x8000000
+       MSG_MCAST                         = 0x200
+       MSG_NAMEMBUF                      = 0x1000000
+       MSG_NBIO                          = 0x1000
+       MSG_NOSIGNAL                      = 0x400
+       MSG_OOB                           = 0x1
+       MSG_PEEK                          = 0x2
+       MSG_TRUNC                         = 0x10
+       MSG_USERFLAGS                     = 0xffffff
+       MSG_WAITALL                       = 0x40
+       NAME_MAX                          = 0x1ff
+       NET_RT_DUMP                       = 0x1
+       NET_RT_FLAGS                      = 0x2
+       NET_RT_IFLIST                     = 0x5
+       NET_RT_MAXID                      = 0x6
+       NET_RT_OIFLIST                    = 0x4
+       NET_RT_OOIFLIST                   = 0x3
+       NOFLSH                            = 0x80000000
+       NOTE_ATTRIB                       = 0x8
+       NOTE_CHILD                        = 0x4
+       NOTE_DELETE                       = 0x1
+       NOTE_EXEC                         = 0x20000000
+       NOTE_EXIT                         = 0x80000000
+       NOTE_EXTEND                       = 0x4
+       NOTE_FORK                         = 0x40000000
+       NOTE_LINK                         = 0x10
+       NOTE_LOWAT                        = 0x1
+       NOTE_PCTRLMASK                    = 0xf0000000
+       NOTE_PDATAMASK                    = 0xfffff
+       NOTE_RENAME                       = 0x20
+       NOTE_REVOKE                       = 0x40
+       NOTE_TRACK                        = 0x1
+       NOTE_TRACKERR                     = 0x2
+       NOTE_WRITE                        = 0x2
+       OCRNL                             = 0x10
+       OFIOGETBMAP                       = 0xc004667a
+       ONLCR                             = 0x2
+       ONLRET                            = 0x40
+       ONOCR                             = 0x20
+       ONOEOT                            = 0x8
+       OPOST                             = 0x1
+       O_ACCMODE                         = 0x3
+       O_ALT_IO                          = 0x40000
+       O_APPEND                          = 0x8
+       O_ASYNC                           = 0x40
+       O_CLOEXEC                         = 0x400000
+       O_CREAT                           = 0x200
+       O_DIRECT                          = 0x80000
+       O_DIRECTORY                       = 0x200000
+       O_DSYNC                           = 0x10000
+       O_EXCL                            = 0x800
+       O_EXLOCK                          = 0x20
+       O_FSYNC                           = 0x80
+       O_NDELAY                          = 0x4
+       O_NOCTTY                          = 0x8000
+       O_NOFOLLOW                        = 0x100
+       O_NONBLOCK                        = 0x4
+       O_NOSIGPIPE                       = 0x1000000
+       O_RDONLY                          = 0x0
+       O_RDWR                            = 0x2
+       O_RSYNC                           = 0x20000
+       O_SHLOCK                          = 0x10
+       O_SYNC                            = 0x80
+       O_TRUNC                           = 0x400
+       O_WRONLY                          = 0x1
+       PARENB                            = 0x1000
+       PARMRK                            = 0x8
+       PARODD                            = 0x2000
+       PENDIN                            = 0x20000000
+       PROT_EXEC                         = 0x4
+       PROT_NONE                         = 0x0
+       PROT_READ                         = 0x1
+       PROT_WRITE                        = 0x2
+       PRI_IOFLUSH                       = 0x7c
+       PRIO_PGRP                         = 0x1
+       PRIO_PROCESS                      = 0x0
+       PRIO_USER                         = 0x2
+       RLIMIT_AS                         = 0xa
+       RLIMIT_CORE                       = 0x4
+       RLIMIT_CPU                        = 0x0
+       RLIMIT_DATA                       = 0x2
+       RLIMIT_FSIZE                      = 0x1
+       RLIMIT_NOFILE                     = 0x8
+       RLIMIT_STACK                      = 0x3
+       RLIM_INFINITY                     = 0x7fffffffffffffff
+       RTAX_AUTHOR                       = 0x6
+       RTAX_BRD                          = 0x7
+       RTAX_DST                          = 0x0
+       RTAX_GATEWAY                      = 0x1
+       RTAX_GENMASK                      = 0x3
+       RTAX_IFA                          = 0x5
+       RTAX_IFP                          = 0x4
+       RTAX_MAX                          = 0x9
+       RTAX_NETMASK                      = 0x2
+       RTAX_TAG                          = 0x8
+       RTA_AUTHOR                        = 0x40
+       RTA_BRD                           = 0x80
+       RTA_DST                           = 0x1
+       RTA_GATEWAY                       = 0x2
+       RTA_GENMASK                       = 0x8
+       RTA_IFA                           = 0x20
+       RTA_IFP                           = 0x10
+       RTA_NETMASK                       = 0x4
+       RTA_TAG                           = 0x100
+       RTF_ANNOUNCE                      = 0x20000
+       RTF_BLACKHOLE                     = 0x1000
+       RTF_CLONED                        = 0x2000
+       RTF_CLONING                       = 0x100
+       RTF_DONE                          = 0x40
+       RTF_DYNAMIC                       = 0x10
+       RTF_GATEWAY                       = 0x2
+       RTF_HOST                          = 0x4
+       RTF_LLINFO                        = 0x400
+       RTF_MASK                          = 0x80
+       RTF_MODIFIED                      = 0x20
+       RTF_PROTO1                        = 0x8000
+       RTF_PROTO2                        = 0x4000
+       RTF_REJECT                        = 0x8
+       RTF_SRC                           = 0x10000
+       RTF_STATIC                        = 0x800
+       RTF_UP                            = 0x1
+       RTF_XRESOLVE                      = 0x200
+       RTM_ADD                           = 0x1
+       RTM_CHANGE                        = 0x3
+       RTM_CHGADDR                       = 0x15
+       RTM_DELADDR                       = 0xd
+       RTM_DELETE                        = 0x2
+       RTM_GET                           = 0x4
+       RTM_IEEE80211                     = 0x11
+       RTM_IFANNOUNCE                    = 0x10
+       RTM_IFINFO                        = 0x14
+       RTM_LLINFO_UPD                    = 0x13
+       RTM_LOCK                          = 0x8
+       RTM_LOSING                        = 0x5
+       RTM_MISS                          = 0x7
+       RTM_NEWADDR                       = 0xc
+       RTM_OIFINFO                       = 0xf
+       RTM_OLDADD                        = 0x9
+       RTM_OLDDEL                        = 0xa
+       RTM_OOIFINFO                      = 0xe
+       RTM_REDIRECT                      = 0x6
+       RTM_RESOLVE                       = 0xb
+       RTM_RTTUNIT                       = 0xf4240
+       RTM_SETGATE                       = 0x12
+       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
+       RUSAGE_CHILDREN                   = -0x1
+       RUSAGE_SELF                       = 0x0
+       SCM_CREDS                         = 0x4
+       SCM_RIGHTS                        = 0x1
+       SCM_TIMESTAMP                     = 0x8
+       SHUT_RD                           = 0x0
+       SHUT_RDWR                         = 0x2
+       SHUT_WR                           = 0x1
+       SIOCADDMULTI                      = 0x80906931
+       SIOCADDRT                         = 0x8030720a
+       SIOCAIFADDR                       = 0x8040691a
+       SIOCALIFADDR                      = 0x8118691c
+       SIOCATMARK                        = 0x40047307
+       SIOCDELMULTI                      = 0x80906932
+       SIOCDELRT                         = 0x8030720b
+       SIOCDIFADDR                       = 0x80906919
+       SIOCDIFPHYADDR                    = 0x80906949
+       SIOCDLIFADDR                      = 0x8118691e
+       SIOCGDRVSPEC                      = 0xc01c697b
+       SIOCGETPFSYNC                     = 0xc09069f8
+       SIOCGETSGCNT                      = 0xc0147534
+       SIOCGETVIFCNT                     = 0xc0147533
+       SIOCGHIWAT                        = 0x40047301
+       SIOCGIFADDR                       = 0xc0906921
+       SIOCGIFADDRPREF                   = 0xc0946920
+       SIOCGIFALIAS                      = 0xc040691b
+       SIOCGIFBRDADDR                    = 0xc0906923
+       SIOCGIFCAP                        = 0xc0206976
+       SIOCGIFCONF                       = 0xc0086926
+       SIOCGIFDATA                       = 0xc0946985
+       SIOCGIFDLT                        = 0xc0906977
+       SIOCGIFDSTADDR                    = 0xc0906922
+       SIOCGIFFLAGS                      = 0xc0906911
+       SIOCGIFGENERIC                    = 0xc090693a
+       SIOCGIFMEDIA                      = 0xc0286936
+       SIOCGIFMETRIC                     = 0xc0906917
+       SIOCGIFMTU                        = 0xc090697e
+       SIOCGIFNETMASK                    = 0xc0906925
+       SIOCGIFPDSTADDR                   = 0xc0906948
+       SIOCGIFPSRCADDR                   = 0xc0906947
+       SIOCGLIFADDR                      = 0xc118691d
+       SIOCGLIFPHYADDR                   = 0xc118694b
+       SIOCGLINKSTR                      = 0xc01c6987
+       SIOCGLOWAT                        = 0x40047303
+       SIOCGPGRP                         = 0x40047309
+       SIOCGVH                           = 0xc0906983
+       SIOCIFCREATE                      = 0x8090697a
+       SIOCIFDESTROY                     = 0x80906979
+       SIOCIFGCLONERS                    = 0xc00c6978
+       SIOCINITIFADDR                    = 0xc0446984
+       SIOCSDRVSPEC                      = 0x801c697b
+       SIOCSETPFSYNC                     = 0x809069f7
+       SIOCSHIWAT                        = 0x80047300
+       SIOCSIFADDR                       = 0x8090690c
+       SIOCSIFADDRPREF                   = 0x8094691f
+       SIOCSIFBRDADDR                    = 0x80906913
+       SIOCSIFCAP                        = 0x80206975
+       SIOCSIFDSTADDR                    = 0x8090690e
+       SIOCSIFFLAGS                      = 0x80906910
+       SIOCSIFGENERIC                    = 0x80906939
+       SIOCSIFMEDIA                      = 0xc0906935
+       SIOCSIFMETRIC                     = 0x80906918
+       SIOCSIFMTU                        = 0x8090697f
+       SIOCSIFNETMASK                    = 0x80906916
+       SIOCSIFPHYADDR                    = 0x80406946
+       SIOCSLIFPHYADDR                   = 0x8118694a
+       SIOCSLINKSTR                      = 0x801c6988
+       SIOCSLOWAT                        = 0x80047302
+       SIOCSPGRP                         = 0x80047308
+       SIOCSVH                           = 0xc0906982
+       SIOCZIFDATA                       = 0xc0946986
+       SOCK_CLOEXEC                      = 0x10000000
+       SOCK_DGRAM                        = 0x2
+       SOCK_FLAGS_MASK                   = 0xf0000000
+       SOCK_NONBLOCK                     = 0x20000000
+       SOCK_NOSIGPIPE                    = 0x40000000
+       SOCK_RAW                          = 0x3
+       SOCK_RDM                          = 0x4
+       SOCK_SEQPACKET                    = 0x5
+       SOCK_STREAM                       = 0x1
+       SOL_SOCKET                        = 0xffff
+       SOMAXCONN                         = 0x80
+       SO_ACCEPTCONN                     = 0x2
+       SO_ACCEPTFILTER                   = 0x1000
+       SO_BROADCAST                      = 0x20
+       SO_DEBUG                          = 0x1
+       SO_DONTROUTE                      = 0x10
+       SO_ERROR                          = 0x1007
+       SO_KEEPALIVE                      = 0x8
+       SO_LINGER                         = 0x80
+       SO_NOHEADER                       = 0x100a
+       SO_NOSIGPIPE                      = 0x800
+       SO_OOBINLINE                      = 0x100
+       SO_OVERFLOWED                     = 0x1009
+       SO_RCVBUF                         = 0x1002
+       SO_RCVLOWAT                       = 0x1004
+       SO_RCVTIMEO                       = 0x100c
+       SO_REUSEADDR                      = 0x4
+       SO_REUSEPORT                      = 0x200
+       SO_SNDBUF                         = 0x1001
+       SO_SNDLOWAT                       = 0x1003
+       SO_SNDTIMEO                       = 0x100b
+       SO_TIMESTAMP                      = 0x2000
+       SO_TYPE                           = 0x1008
+       SO_USELOOPBACK                    = 0x40
+       SYSCTL_VERSION                    = 0x1000000
+       SYSCTL_VERS_0                     = 0x0
+       SYSCTL_VERS_1                     = 0x1000000
+       SYSCTL_VERS_MASK                  = 0xff000000
+       S_ARCH1                           = 0x10000
+       S_ARCH2                           = 0x20000
+       S_BLKSIZE                         = 0x200
+       S_IEXEC                           = 0x40
+       S_IFBLK                           = 0x6000
+       S_IFCHR                           = 0x2000
+       S_IFDIR                           = 0x4000
+       S_IFIFO                           = 0x1000
+       S_IFLNK                           = 0xa000
+       S_IFMT                            = 0xf000
+       S_IFREG                           = 0x8000
+       S_IFSOCK                          = 0xc000
+       S_IFWHT                           = 0xe000
+       S_IREAD                           = 0x100
+       S_IRGRP                           = 0x20
+       S_IROTH                           = 0x4
+       S_IRUSR                           = 0x100
+       S_IRWXG                           = 0x38
+       S_IRWXO                           = 0x7
+       S_IRWXU                           = 0x1c0
+       S_ISGID                           = 0x400
+       S_ISTXT                           = 0x200
+       S_ISUID                           = 0x800
+       S_ISVTX                           = 0x200
+       S_IWGRP                           = 0x10
+       S_IWOTH                           = 0x2
+       S_IWRITE                          = 0x80
+       S_IWUSR                           = 0x80
+       S_IXGRP                           = 0x8
+       S_IXOTH                           = 0x1
+       S_IXUSR                           = 0x40
+       TCIFLUSH                          = 0x1
+       TCIOFLUSH                         = 0x3
+       TCOFLUSH                          = 0x2
+       TCP_CONGCTL                       = 0x20
+       TCP_KEEPCNT                       = 0x6
+       TCP_KEEPIDLE                      = 0x3
+       TCP_KEEPINIT                      = 0x7
+       TCP_KEEPINTVL                     = 0x5
+       TCP_MAXBURST                      = 0x4
+       TCP_MAXSEG                        = 0x2
+       TCP_MAXWIN                        = 0xffff
+       TCP_MAX_WINSHIFT                  = 0xe
+       TCP_MD5SIG                        = 0x10
+       TCP_MINMSS                        = 0xd8
+       TCP_MSS                           = 0x218
+       TCP_NODELAY                       = 0x1
+       TCSAFLUSH                         = 0x2
+       TIOCCBRK                          = 0x2000747a
+       TIOCCDTR                          = 0x20007478
+       TIOCCONS                          = 0x80047462
+       TIOCDCDTIMESTAMP                  = 0x400c7458
+       TIOCDRAIN                         = 0x2000745e
+       TIOCEXCL                          = 0x2000740d
+       TIOCEXT                           = 0x80047460
+       TIOCFLAG_CDTRCTS                  = 0x10
+       TIOCFLAG_CLOCAL                   = 0x2
+       TIOCFLAG_CRTSCTS                  = 0x4
+       TIOCFLAG_MDMBUF                   = 0x8
+       TIOCFLAG_SOFTCAR                  = 0x1
+       TIOCFLUSH                         = 0x80047410
+       TIOCGETA                          = 0x402c7413
+       TIOCGETD                          = 0x4004741a
+       TIOCGFLAGS                        = 0x4004745d
+       TIOCGLINED                        = 0x40207442
+       TIOCGPGRP                         = 0x40047477
+       TIOCGQSIZE                        = 0x40047481
+       TIOCGRANTPT                       = 0x20007447
+       TIOCGSID                          = 0x40047463
+       TIOCGSIZE                         = 0x40087468
+       TIOCGWINSZ                        = 0x40087468
+       TIOCMBIC                          = 0x8004746b
+       TIOCMBIS                          = 0x8004746c
+       TIOCMGET                          = 0x4004746a
+       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                      = 0x0
+       TIOCPKT_DOSTOP                    = 0x20
+       TIOCPKT_FLUSHREAD                 = 0x1
+       TIOCPKT_FLUSHWRITE                = 0x2
+       TIOCPKT_IOCTL                     = 0x40
+       TIOCPKT_NOSTOP                    = 0x10
+       TIOCPKT_START                     = 0x8
+       TIOCPKT_STOP                      = 0x4
+       TIOCPTMGET                        = 0x48087446
+       TIOCPTSNAME                       = 0x48087448
+       TIOCRCVFRAME                      = 0x80047445
+       TIOCREMOTE                        = 0x80047469
+       TIOCSBRK                          = 0x2000747b
+       TIOCSCTTY                         = 0x20007461
+       TIOCSDTR                          = 0x20007479
+       TIOCSETA                          = 0x802c7414
+       TIOCSETAF                         = 0x802c7416
+       TIOCSETAW                         = 0x802c7415
+       TIOCSETD                          = 0x8004741b
+       TIOCSFLAGS                        = 0x8004745c
+       TIOCSIG                           = 0x2000745f
+       TIOCSLINED                        = 0x80207443
+       TIOCSPGRP                         = 0x80047476
+       TIOCSQSIZE                        = 0x80047480
+       TIOCSSIZE                         = 0x80087467
+       TIOCSTART                         = 0x2000746e
+       TIOCSTAT                          = 0x80047465
+       TIOCSTI                           = 0x80017472
+       TIOCSTOP                          = 0x2000746f
+       TIOCSWINSZ                        = 0x80087467
+       TIOCUCNTL                         = 0x80047466
+       TIOCXMTFRAME                      = 0x80047444
+       TOSTOP                            = 0x400000
+       VDISCARD                          = 0xf
+       VDSUSP                            = 0xb
+       VEOF                              = 0x0
+       VEOL                              = 0x1
+       VEOL2                             = 0x2
+       VERASE                            = 0x3
+       VINTR                             = 0x8
+       VKILL                             = 0x5
+       VLNEXT                            = 0xe
+       VMIN                              = 0x10
+       VQUIT                             = 0x9
+       VREPRINT                          = 0x6
+       VSTART                            = 0xc
+       VSTATUS                           = 0x12
+       VSTOP                             = 0xd
+       VSUSP                             = 0xa
+       VTIME                             = 0x11
+       VWERASE                           = 0x4
+       WALL                              = 0x8
+       WALLSIG                           = 0x8
+       WALTSIG                           = 0x4
+       WCLONE                            = 0x4
+       WCOREFLAG                         = 0x80
+       WNOHANG                           = 0x1
+       WNOWAIT                           = 0x10000
+       WNOZOMBIE                         = 0x20000
+       WOPTSCHECKED                      = 0x40000
+       WSTOPPED                          = 0x7f
+       WUNTRACED                         = 0x2
+)
+
+// Errors
+const (
+       E2BIG           = syscall.Errno(0x7)
+       EACCES          = syscall.Errno(0xd)
+       EADDRINUSE      = syscall.Errno(0x30)
+       EADDRNOTAVAIL   = syscall.Errno(0x31)
+       EAFNOSUPPORT    = syscall.Errno(0x2f)
+       EAGAIN          = syscall.Errno(0x23)
+       EALREADY        = syscall.Errno(0x25)
+       EAUTH           = syscall.Errno(0x50)
+       EBADF           = syscall.Errno(0x9)
+       EBADMSG         = syscall.Errno(0x58)
+       EBADRPC         = syscall.Errno(0x48)
+       EBUSY           = syscall.Errno(0x10)
+       ECANCELED       = syscall.Errno(0x57)
+       ECHILD          = syscall.Errno(0xa)
+       ECONNABORTED    = syscall.Errno(0x35)
+       ECONNREFUSED    = syscall.Errno(0x3d)
+       ECONNRESET      = syscall.Errno(0x36)
+       EDEADLK         = syscall.Errno(0xb)
+       EDESTADDRREQ    = syscall.Errno(0x27)
+       EDOM            = syscall.Errno(0x21)
+       EDQUOT          = syscall.Errno(0x45)
+       EEXIST          = syscall.Errno(0x11)
+       EFAULT          = syscall.Errno(0xe)
+       EFBIG           = syscall.Errno(0x1b)
+       EFTYPE          = syscall.Errno(0x4f)
+       EHOSTDOWN       = syscall.Errno(0x40)
+       EHOSTUNREACH    = syscall.Errno(0x41)
+       EIDRM           = syscall.Errno(0x52)
+       EILSEQ          = syscall.Errno(0x55)
+       EINPROGRESS     = syscall.Errno(0x24)
+       EINTR           = syscall.Errno(0x4)
+       EINVAL          = syscall.Errno(0x16)
+       EIO             = syscall.Errno(0x5)
+       EISCONN         = syscall.Errno(0x38)
+       EISDIR          = syscall.Errno(0x15)
+       ELAST           = syscall.Errno(0x60)
+       ELOOP           = syscall.Errno(0x3e)
+       EMFILE          = syscall.Errno(0x18)
+       EMLINK          = syscall.Errno(0x1f)
+       EMSGSIZE        = syscall.Errno(0x28)
+       EMULTIHOP       = syscall.Errno(0x5e)
+       ENAMETOOLONG    = syscall.Errno(0x3f)
+       ENEEDAUTH       = syscall.Errno(0x51)
+       ENETDOWN        = syscall.Errno(0x32)
+       ENETRESET       = syscall.Errno(0x34)
+       ENETUNREACH     = syscall.Errno(0x33)
+       ENFILE          = syscall.Errno(0x17)
+       ENOATTR         = syscall.Errno(0x5d)
+       ENOBUFS         = syscall.Errno(0x37)
+       ENODATA         = syscall.Errno(0x59)
+       ENODEV          = syscall.Errno(0x13)
+       ENOENT          = syscall.Errno(0x2)
+       ENOEXEC         = syscall.Errno(0x8)
+       ENOLCK          = syscall.Errno(0x4d)
+       ENOLINK         = syscall.Errno(0x5f)
+       ENOMEM          = syscall.Errno(0xc)
+       ENOMSG          = syscall.Errno(0x53)
+       ENOPROTOOPT     = syscall.Errno(0x2a)
+       ENOSPC          = syscall.Errno(0x1c)
+       ENOSR           = syscall.Errno(0x5a)
+       ENOSTR          = syscall.Errno(0x5b)
+       ENOSYS          = syscall.Errno(0x4e)
+       ENOTBLK         = syscall.Errno(0xf)
+       ENOTCONN        = syscall.Errno(0x39)
+       ENOTDIR         = syscall.Errno(0x14)
+       ENOTEMPTY       = syscall.Errno(0x42)
+       ENOTSOCK        = syscall.Errno(0x26)
+       ENOTSUP         = syscall.Errno(0x56)
+       ENOTTY          = syscall.Errno(0x19)
+       ENXIO           = syscall.Errno(0x6)
+       EOPNOTSUPP      = syscall.Errno(0x2d)
+       EOVERFLOW       = syscall.Errno(0x54)
+       EPERM           = syscall.Errno(0x1)
+       EPFNOSUPPORT    = syscall.Errno(0x2e)
+       EPIPE           = syscall.Errno(0x20)
+       EPROCLIM        = syscall.Errno(0x43)
+       EPROCUNAVAIL    = syscall.Errno(0x4c)
+       EPROGMISMATCH   = syscall.Errno(0x4b)
+       EPROGUNAVAIL    = syscall.Errno(0x4a)
+       EPROTO          = syscall.Errno(0x60)
+       EPROTONOSUPPORT = syscall.Errno(0x2b)
+       EPROTOTYPE      = syscall.Errno(0x29)
+       ERANGE          = syscall.Errno(0x22)
+       EREMOTE         = syscall.Errno(0x47)
+       EROFS           = syscall.Errno(0x1e)
+       ERPCMISMATCH    = syscall.Errno(0x49)
+       ESHUTDOWN       = syscall.Errno(0x3a)
+       ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+       ESPIPE          = syscall.Errno(0x1d)
+       ESRCH           = syscall.Errno(0x3)
+       ESTALE          = syscall.Errno(0x46)
+       ETIME           = syscall.Errno(0x5c)
+       ETIMEDOUT       = syscall.Errno(0x3c)
+       ETOOMANYREFS    = syscall.Errno(0x3b)
+       ETXTBSY         = syscall.Errno(0x1a)
+       EUSERS          = syscall.Errno(0x44)
+       EWOULDBLOCK     = syscall.Errno(0x23)
+       EXDEV           = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+       SIGABRT   = syscall.Signal(0x6)
+       SIGALRM   = syscall.Signal(0xe)
+       SIGBUS    = syscall.Signal(0xa)
+       SIGCHLD   = syscall.Signal(0x14)
+       SIGCONT   = syscall.Signal(0x13)
+       SIGEMT    = syscall.Signal(0x7)
+       SIGFPE    = syscall.Signal(0x8)
+       SIGHUP    = syscall.Signal(0x1)
+       SIGILL    = syscall.Signal(0x4)
+       SIGINFO   = syscall.Signal(0x1d)
+       SIGINT    = syscall.Signal(0x2)
+       SIGIO     = syscall.Signal(0x17)
+       SIGIOT    = syscall.Signal(0x6)
+       SIGKILL   = syscall.Signal(0x9)
+       SIGPIPE   = syscall.Signal(0xd)
+       SIGPROF   = syscall.Signal(0x1b)
+       SIGPWR    = syscall.Signal(0x20)
+       SIGQUIT   = syscall.Signal(0x3)
+       SIGSEGV   = syscall.Signal(0xb)
+       SIGSTOP   = syscall.Signal(0x11)
+       SIGSYS    = syscall.Signal(0xc)
+       SIGTERM   = syscall.Signal(0xf)
+       SIGTRAP   = syscall.Signal(0x5)
+       SIGTSTP   = syscall.Signal(0x12)
+       SIGTTIN   = syscall.Signal(0x15)
+       SIGTTOU   = syscall.Signal(0x16)
+       SIGURG    = syscall.Signal(0x10)
+       SIGUSR1   = syscall.Signal(0x1e)
+       SIGUSR2   = syscall.Signal(0x1f)
+       SIGVTALRM = syscall.Signal(0x1a)
+       SIGWINCH  = syscall.Signal(0x1c)
+       SIGXCPU   = syscall.Signal(0x18)
+       SIGXFSZ   = syscall.Signal(0x19)
+)
+
+// 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 or too small",
+       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 option 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: "identifier removed",
+       83: "no message of desired type",
+       84: "value too large to be stored in data type",
+       85: "illegal byte sequence",
+       86: "not supported",
+       87: "operation Canceled",
+       88: "bad or Corrupt message",
+       89: "no message available",
+       90: "no STREAM resources",
+       91: "not a STREAM",
+       92: "STREAM ioctl timeout",
+       93: "attribute not found",
+       94: "multihop attempted",
+       95: "link has been severed",
+       96: "protocol error",
+}
+
+// Signal table
+var signals = [...]string{
+       1:  "hangup",
+       2:  "interrupt",
+       3:  "quit",
+       4:  "illegal instruction",
+       5:  "trace/BPT trap",
+       6:  "abort trap",
+       7:  "EMT trap",
+       8:  "floating point exception",
+       9:  "killed",
+       10: "bus error",
+       11: "segmentation fault",
+       12: "bad system call",
+       13: "broken pipe",
+       14: "alarm clock",
+       15: "terminated",
+       16: "urgent I/O condition",
+       17: "stopped (signal)",
+       18: "stopped",
+       19: "continued",
+       20: "child exited",
+       21: "stopped (tty input)",
+       22: "stopped (tty output)",
+       23: "I/O possible",
+       24: "cputime limit exceeded",
+       25: "filesize limit exceeded",
+       26: "virtual timer expired",
+       27: "profiling timer expired",
+       28: "window size changes",
+       29: "information request",
+       30: "user defined signal 1",
+       31: "user defined signal 2",
+       32: "power fail/restart",
+}
diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go
new file mode 100644 (file)
index 0000000..3322e99
--- /dev/null
@@ -0,0 +1,1584 @@
+// mkerrors.sh -m32
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build 386,openbsd
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m32 _const.go
+
+package unix
+
+import "syscall"
+
+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                         = 0x0
+       ARPHRD_ETHER                      = 0x1
+       ARPHRD_FRELAY                     = 0xf
+       ARPHRD_IEEE1394                   = 0x18
+       ARPHRD_IEEE802                    = 0x6
+       B0                                = 0x0
+       B110                              = 0x6e
+       B115200                           = 0x1c200
+       B1200                             = 0x4b0
+       B134                              = 0x86
+       B14400                            = 0x3840
+       B150                              = 0x96
+       B1800                             = 0x708
+       B19200                            = 0x4b00
+       B200                              = 0xc8
+       B230400                           = 0x38400
+       B2400                             = 0x960
+       B28800                            = 0x7080
+       B300                              = 0x12c
+       B38400                            = 0x9600
+       B4800                             = 0x12c0
+       B50                               = 0x32
+       B57600                            = 0xe100
+       B600                              = 0x258
+       B7200                             = 0x1c20
+       B75                               = 0x4b
+       B76800                            = 0x12c00
+       B9600                             = 0x2580
+       BIOCFLUSH                         = 0x20004268
+       BIOCGBLEN                         = 0x40044266
+       BIOCGDIRFILT                      = 0x4004427c
+       BIOCGDLT                          = 0x4004426a
+       BIOCGDLTLIST                      = 0xc008427b
+       BIOCGETIF                         = 0x4020426b
+       BIOCGFILDROP                      = 0x40044278
+       BIOCGHDRCMPLT                     = 0x40044274
+       BIOCGRSIG                         = 0x40044273
+       BIOCGRTIMEOUT                     = 0x400c426e
+       BIOCGSTATS                        = 0x4008426f
+       BIOCIMMEDIATE                     = 0x80044270
+       BIOCLOCK                          = 0x20004276
+       BIOCPROMISC                       = 0x20004269
+       BIOCSBLEN                         = 0xc0044266
+       BIOCSDIRFILT                      = 0x8004427d
+       BIOCSDLT                          = 0x8004427a
+       BIOCSETF                          = 0x80084267
+       BIOCSETIF                         = 0x8020426c
+       BIOCSETWF                         = 0x80084277
+       BIOCSFILDROP                      = 0x80044279
+       BIOCSHDRCMPLT                     = 0x80044275
+       BIOCSRSIG                         = 0x80044272
+       BIOCSRTIMEOUT                     = 0x800c426d
+       BIOCVERSION                       = 0x40044271
+       BPF_A                             = 0x10
+       BPF_ABS                           = 0x20
+       BPF_ADD                           = 0x0
+       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                           = 0x0
+       BPF_IND                           = 0x40
+       BPF_JA                            = 0x0
+       BPF_JEQ                           = 0x10
+       BPF_JGE                           = 0x30
+       BPF_JGT                           = 0x20
+       BPF_JMP                           = 0x5
+       BPF_JSET                          = 0x40
+       BPF_K                             = 0x0
+       BPF_LD                            = 0x0
+       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                           = 0x0
+       BPF_TXA                           = 0x80
+       BPF_W                             = 0x0
+       BPF_X                             = 0x8
+       BRKINT                            = 0x2
+       CFLUSH                            = 0xf
+       CLOCAL                            = 0x8000
+       CREAD                             = 0x800
+       CS5                               = 0x0
+       CS6                               = 0x100
+       CS7                               = 0x200
+       CS8                               = 0x300
+       CSIZE                             = 0x300
+       CSTART                            = 0x11
+       CSTATUS                           = 0xff
+       CSTOP                             = 0x13
+       CSTOPB                            = 0x400
+       CSUSP                             = 0x1a
+       CTL_MAXNAME                       = 0xc
+       CTL_NET                           = 0x4
+       DIOCOSFPFLUSH                     = 0x2000444e
+       DLT_ARCNET                        = 0x7
+       DLT_ATM_RFC1483                   = 0xb
+       DLT_AX25                          = 0x3
+       DLT_CHAOS                         = 0x5
+       DLT_C_HDLC                        = 0x68
+       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                          = 0x0
+       DLT_PFLOG                         = 0x75
+       DLT_PFSYNC                        = 0x12
+       DLT_PPP                           = 0x9
+       DLT_PPP_BSDOS                     = 0x10
+       DLT_PPP_ETHER                     = 0x33
+       DLT_PPP_SERIAL                    = 0x32
+       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                        = 0x0
+       ECHO                              = 0x8
+       ECHOCTL                           = 0x40
+       ECHOE                             = 0x2
+       ECHOK                             = 0x4
+       ECHOKE                            = 0x1
+       ECHONL                            = 0x10
+       ECHOPRT                           = 0x20
+       EMT_TAGOVF                        = 0x1
+       EMUL_ENABLED                      = 0x1
+       EMUL_NATIVE                       = 0x2
+       ENDRUNDISC                        = 0x9
+       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
+       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
+       EXTA                              = 0x4b00
+       EXTB                              = 0x9600
+       EXTPROC                           = 0x800
+       FD_CLOEXEC                        = 0x1
+       FD_SETSIZE                        = 0x400
+       FLUSHO                            = 0x800000
+       F_DUPFD                           = 0x0
+       F_DUPFD_CLOEXEC                   = 0xa
+       F_GETFD                           = 0x1
+       F_GETFL                           = 0x3
+       F_GETLK                           = 0x7
+       F_GETOWN                          = 0x5
+       F_OK                              = 0x0
+       F_RDLCK                           = 0x1
+       F_SETFD                           = 0x2
+       F_SETFL                           = 0x4
+       F_SETLK                           = 0x8
+       F_SETLKW                          = 0x9
+       F_SETOWN                          = 0x6
+       F_UNLCK                           = 0x2
+       F_WRLCK                           = 0x3
+       HUPCL                             = 0x4000
+       ICANON                            = 0x100
+       ICMP6_FILTER                      = 0x12
+       ICRNL                             = 0x100
+       IEXTEN                            = 0x400
+       IFAN_ARRIVAL                      = 0x0
+       IFAN_DEPARTURE                    = 0x1
+       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
+       IGNBRK                            = 0x1
+       IGNCR                             = 0x80
+       IGNPAR                            = 0x4
+       IMAXBEL                           = 0x2000
+       INLCR                             = 0x40
+       INPCK                             = 0x10
+       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_DIVERT_INIT               = 0x2
+       IPPROTO_DIVERT_RESP               = 0x1
+       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                   = 0x0
+       IPPROTO_ICMP                      = 0x1
+       IPPROTO_ICMPV6                    = 0x3a
+       IPPROTO_IDP                       = 0x16
+       IPPROTO_IGMP                      = 0x2
+       IPPROTO_IP                        = 0x0
+       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            = 0x0
+       IPV6_PORTRANGE_HIGH               = 0x1
+       IPV6_PORTRANGE_LOW                = 0x2
+       IPV6_RECVDSTOPTS                  = 0x28
+       IPV6_RECVDSTPORT                  = 0x40
+       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                  = 0x0
+       IPV6_RTHDR_STRICT                 = 0x1
+       IPV6_RTHDR_TYPE_0                 = 0x0
+       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_DIVERTFL                       = 0x1022
+       IP_DROP_MEMBERSHIP                = 0xd
+       IP_ESP_NETWORK_LEVEL              = 0x16
+       IP_ESP_TRANS_LEVEL                = 0x15
+       IP_HDRINCL                        = 0x2
+       IP_IPCOMP_LEVEL                   = 0x1d
+       IP_IPSECFLOWINFO                  = 0x24
+       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              = 0x0
+       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
+       ISIG                              = 0x80
+       ISTRIP                            = 0x20
+       IXANY                             = 0x800
+       IXOFF                             = 0x400
+       IXON                              = 0x200
+       LCNT_OVERLOAD_FLUSH               = 0x6
+       LOCK_EX                           = 0x2
+       LOCK_NB                           = 0x4
+       LOCK_SH                           = 0x1
+       LOCK_UN                           = 0x8
+       MADV_DONTNEED                     = 0x4
+       MADV_FREE                         = 0x6
+       MADV_NORMAL                       = 0x0
+       MADV_RANDOM                       = 0x1
+       MADV_SEQUENTIAL                   = 0x2
+       MADV_SPACEAVAIL                   = 0x5
+       MADV_WILLNEED                     = 0x3
+       MAP_ANON                          = 0x1000
+       MAP_COPY                          = 0x4
+       MAP_FILE                          = 0x0
+       MAP_FIXED                         = 0x10
+       MAP_FLAGMASK                      = 0x1ff7
+       MAP_HASSEMAPHORE                  = 0x200
+       MAP_INHERIT                       = 0x80
+       MAP_INHERIT_COPY                  = 0x1
+       MAP_INHERIT_DONATE_COPY           = 0x3
+       MAP_INHERIT_NONE                  = 0x2
+       MAP_INHERIT_SHARE                 = 0x0
+       MAP_NOEXTEND                      = 0x100
+       MAP_NORESERVE                     = 0x40
+       MAP_PRIVATE                       = 0x2
+       MAP_RENAME                        = 0x20
+       MAP_SHARED                        = 0x1
+       MAP_TRYFIXED                      = 0x400
+       MCL_CURRENT                       = 0x1
+       MCL_FUTURE                        = 0x2
+       MSG_BCAST                         = 0x100
+       MSG_CTRUNC                        = 0x20
+       MSG_DONTROUTE                     = 0x4
+       MSG_DONTWAIT                      = 0x80
+       MSG_EOR                           = 0x8
+       MSG_MCAST                         = 0x200
+       MSG_NOSIGNAL                      = 0x400
+       MSG_OOB                           = 0x1
+       MSG_PEEK                          = 0x2
+       MSG_TRUNC                         = 0x10
+       MSG_WAITALL                       = 0x40
+       MS_ASYNC                          = 0x1
+       MS_INVALIDATE                     = 0x4
+       MS_SYNC                           = 0x2
+       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
+       NOFLSH                            = 0x80000000
+       NOTE_ATTRIB                       = 0x8
+       NOTE_CHILD                        = 0x4
+       NOTE_DELETE                       = 0x1
+       NOTE_EOF                          = 0x2
+       NOTE_EXEC                         = 0x20000000
+       NOTE_EXIT                         = 0x80000000
+       NOTE_EXTEND                       = 0x4
+       NOTE_FORK                         = 0x40000000
+       NOTE_LINK                         = 0x10
+       NOTE_LOWAT                        = 0x1
+       NOTE_PCTRLMASK                    = 0xf0000000
+       NOTE_PDATAMASK                    = 0xfffff
+       NOTE_RENAME                       = 0x20
+       NOTE_REVOKE                       = 0x40
+       NOTE_TRACK                        = 0x1
+       NOTE_TRACKERR                     = 0x2
+       NOTE_TRUNCATE                     = 0x80
+       NOTE_WRITE                        = 0x2
+       OCRNL                             = 0x10
+       ONLCR                             = 0x2
+       ONLRET                            = 0x80
+       ONOCR                             = 0x40
+       ONOEOT                            = 0x8
+       OPOST                             = 0x1
+       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                          = 0x0
+       O_RDWR                            = 0x2
+       O_RSYNC                           = 0x80
+       O_SHLOCK                          = 0x10
+       O_SYNC                            = 0x80
+       O_TRUNC                           = 0x400
+       O_WRONLY                          = 0x1
+       PARENB                            = 0x1000
+       PARMRK                            = 0x8
+       PARODD                            = 0x2000
+       PENDIN                            = 0x20000000
+       PF_FLUSH                          = 0x1
+       PRIO_PGRP                         = 0x1
+       PRIO_PROCESS                      = 0x0
+       PRIO_USER                         = 0x2
+       PROT_EXEC                         = 0x4
+       PROT_NONE                         = 0x0
+       PROT_READ                         = 0x1
+       PROT_WRITE                        = 0x2
+       PT_MASK                           = 0x3ff000
+       RLIMIT_CORE                       = 0x4
+       RLIMIT_CPU                        = 0x0
+       RLIMIT_DATA                       = 0x2
+       RLIMIT_FSIZE                      = 0x1
+       RLIMIT_NOFILE                     = 0x8
+       RLIMIT_STACK                      = 0x3
+       RLIM_INFINITY                     = 0x7fffffffffffffff
+       RTAX_AUTHOR                       = 0x6
+       RTAX_BRD                          = 0x7
+       RTAX_DST                          = 0x0
+       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                         = 0x10f808
+       RTF_GATEWAY                       = 0x2
+       RTF_HOST                          = 0x4
+       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                       = 0x5
+       RTV_EXPIRE                        = 0x4
+       RTV_HOPCOUNT                      = 0x2
+       RTV_MTU                           = 0x1
+       RTV_RPIPE                         = 0x8
+       RTV_RTT                           = 0x40
+       RTV_RTTVAR                        = 0x80
+       RTV_SPIPE                         = 0x10
+       RTV_SSTHRESH                      = 0x20
+       RT_TABLEID_MAX                    = 0xff
+       RUSAGE_CHILDREN                   = -0x1
+       RUSAGE_SELF                       = 0x0
+       RUSAGE_THREAD                     = 0x1
+       SCM_RIGHTS                        = 0x1
+       SCM_TIMESTAMP                     = 0x4
+       SHUT_RD                           = 0x0
+       SHUT_RDWR                         = 0x2
+       SHUT_WR                           = 0x1
+       SIOCADDMULTI                      = 0x80206931
+       SIOCAIFADDR                       = 0x8040691a
+       SIOCAIFGROUP                      = 0x80246987
+       SIOCALIFADDR                      = 0x8218691c
+       SIOCATMARK                        = 0x40047307
+       SIOCBRDGADD                       = 0x8054693c
+       SIOCBRDGADDS                      = 0x80546941
+       SIOCBRDGARL                       = 0x806e694d
+       SIOCBRDGDADDR                     = 0x81286947
+       SIOCBRDGDEL                       = 0x8054693d
+       SIOCBRDGDELS                      = 0x80546942
+       SIOCBRDGFLUSH                     = 0x80546948
+       SIOCBRDGFRL                       = 0x806e694e
+       SIOCBRDGGCACHE                    = 0xc0146941
+       SIOCBRDGGFD                       = 0xc0146952
+       SIOCBRDGGHT                       = 0xc0146951
+       SIOCBRDGGIFFLGS                   = 0xc054693e
+       SIOCBRDGGMA                       = 0xc0146953
+       SIOCBRDGGPARAM                    = 0xc03c6958
+       SIOCBRDGGPRI                      = 0xc0146950
+       SIOCBRDGGRL                       = 0xc028694f
+       SIOCBRDGGSIFS                     = 0xc054693c
+       SIOCBRDGGTO                       = 0xc0146946
+       SIOCBRDGIFS                       = 0xc0546942
+       SIOCBRDGRTS                       = 0xc0186943
+       SIOCBRDGSADDR                     = 0xc1286944
+       SIOCBRDGSCACHE                    = 0x80146940
+       SIOCBRDGSFD                       = 0x80146952
+       SIOCBRDGSHT                       = 0x80146951
+       SIOCBRDGSIFCOST                   = 0x80546955
+       SIOCBRDGSIFFLGS                   = 0x8054693f
+       SIOCBRDGSIFPRIO                   = 0x80546954
+       SIOCBRDGSMA                       = 0x80146953
+       SIOCBRDGSPRI                      = 0x80146950
+       SIOCBRDGSPROTO                    = 0x8014695a
+       SIOCBRDGSTO                       = 0x80146945
+       SIOCBRDGSTXHC                     = 0x80146959
+       SIOCDELMULTI                      = 0x80206932
+       SIOCDIFADDR                       = 0x80206919
+       SIOCDIFGROUP                      = 0x80246989
+       SIOCDIFPHYADDR                    = 0x80206949
+       SIOCDLIFADDR                      = 0x8218691e
+       SIOCGETKALIVE                     = 0xc01869a4
+       SIOCGETLABEL                      = 0x8020699a
+       SIOCGETPFLOW                      = 0xc02069fe
+       SIOCGETPFSYNC                     = 0xc02069f8
+       SIOCGETSGCNT                      = 0xc0147534
+       SIOCGETVIFCNT                     = 0xc0147533
+       SIOCGETVLAN                       = 0xc0206990
+       SIOCGHIWAT                        = 0x40047301
+       SIOCGIFADDR                       = 0xc0206921
+       SIOCGIFASYNCMAP                   = 0xc020697c
+       SIOCGIFBRDADDR                    = 0xc0206923
+       SIOCGIFCONF                       = 0xc0086924
+       SIOCGIFDATA                       = 0xc020691b
+       SIOCGIFDESCR                      = 0xc0206981
+       SIOCGIFDSTADDR                    = 0xc0206922
+       SIOCGIFFLAGS                      = 0xc0206911
+       SIOCGIFGATTR                      = 0xc024698b
+       SIOCGIFGENERIC                    = 0xc020693a
+       SIOCGIFGMEMB                      = 0xc024698a
+       SIOCGIFGROUP                      = 0xc0246988
+       SIOCGIFHARDMTU                    = 0xc02069a5
+       SIOCGIFMEDIA                      = 0xc0286936
+       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
+       SIOCGLIFPHYTTL                    = 0xc02069a9
+       SIOCGLOWAT                        = 0x40047303
+       SIOCGPGRP                         = 0x40047309
+       SIOCGSPPPPARAMS                   = 0xc0206994
+       SIOCGVH                           = 0xc02069f6
+       SIOCGVNETID                       = 0xc02069a7
+       SIOCIFCREATE                      = 0x8020697a
+       SIOCIFDESTROY                     = 0x80206979
+       SIOCIFGCLONERS                    = 0xc00c6978
+       SIOCSETKALIVE                     = 0x801869a3
+       SIOCSETLABEL                      = 0x80206999
+       SIOCSETPFLOW                      = 0x802069fd
+       SIOCSETPFSYNC                     = 0x802069f7
+       SIOCSETVLAN                       = 0x8020698f
+       SIOCSHIWAT                        = 0x80047300
+       SIOCSIFADDR                       = 0x8020690c
+       SIOCSIFASYNCMAP                   = 0x8020697d
+       SIOCSIFBRDADDR                    = 0x80206913
+       SIOCSIFDESCR                      = 0x80206980
+       SIOCSIFDSTADDR                    = 0x8020690e
+       SIOCSIFFLAGS                      = 0x80206910
+       SIOCSIFGATTR                      = 0x8024698c
+       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
+       SIOCSLIFPHYTTL                    = 0x802069a8
+       SIOCSLOWAT                        = 0x80047302
+       SIOCSPGRP                         = 0x80047308
+       SIOCSSPPPPARAMS                   = 0x80206993
+       SIOCSVH                           = 0xc02069f5
+       SIOCSVNETID                       = 0x802069a6
+       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_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
+       TCIFLUSH                          = 0x1
+       TCIOFLUSH                         = 0x3
+       TCOFLUSH                          = 0x2
+       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_NOPUSH                        = 0x10
+       TCP_NSTATES                       = 0xb
+       TCP_SACK_ENABLE                   = 0x8
+       TCSAFLUSH                         = 0x2
+       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
+       TIOCGSID                          = 0x40047463
+       TIOCGTSTAMP                       = 0x400c745b
+       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                      = 0x0
+       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
+       TOSTOP                            = 0x400000
+       VDISCARD                          = 0xf
+       VDSUSP                            = 0xb
+       VEOF                              = 0x0
+       VEOL                              = 0x1
+       VEOL2                             = 0x2
+       VERASE                            = 0x3
+       VINTR                             = 0x8
+       VKILL                             = 0x5
+       VLNEXT                            = 0xe
+       VMIN                              = 0x10
+       VQUIT                             = 0x9
+       VREPRINT                          = 0x6
+       VSTART                            = 0xc
+       VSTATUS                           = 0x12
+       VSTOP                             = 0xd
+       VSUSP                             = 0xa
+       VTIME                             = 0x11
+       VWERASE                           = 0x4
+       WALTSIG                           = 0x4
+       WCONTINUED                        = 0x8
+       WCOREFLAG                         = 0x80
+       WNOHANG                           = 0x1
+       WSTOPPED                          = 0x7f
+       WUNTRACED                         = 0x2
+)
+
+// Errors
+const (
+       E2BIG           = syscall.Errno(0x7)
+       EACCES          = syscall.Errno(0xd)
+       EADDRINUSE      = syscall.Errno(0x30)
+       EADDRNOTAVAIL   = syscall.Errno(0x31)
+       EAFNOSUPPORT    = syscall.Errno(0x2f)
+       EAGAIN          = syscall.Errno(0x23)
+       EALREADY        = syscall.Errno(0x25)
+       EAUTH           = syscall.Errno(0x50)
+       EBADF           = syscall.Errno(0x9)
+       EBADRPC         = syscall.Errno(0x48)
+       EBUSY           = syscall.Errno(0x10)
+       ECANCELED       = syscall.Errno(0x58)
+       ECHILD          = syscall.Errno(0xa)
+       ECONNABORTED    = syscall.Errno(0x35)
+       ECONNREFUSED    = syscall.Errno(0x3d)
+       ECONNRESET      = syscall.Errno(0x36)
+       EDEADLK         = syscall.Errno(0xb)
+       EDESTADDRREQ    = syscall.Errno(0x27)
+       EDOM            = syscall.Errno(0x21)
+       EDQUOT          = syscall.Errno(0x45)
+       EEXIST          = syscall.Errno(0x11)
+       EFAULT          = syscall.Errno(0xe)
+       EFBIG           = syscall.Errno(0x1b)
+       EFTYPE          = syscall.Errno(0x4f)
+       EHOSTDOWN       = syscall.Errno(0x40)
+       EHOSTUNREACH    = syscall.Errno(0x41)
+       EIDRM           = syscall.Errno(0x59)
+       EILSEQ          = syscall.Errno(0x54)
+       EINPROGRESS     = syscall.Errno(0x24)
+       EINTR           = syscall.Errno(0x4)
+       EINVAL          = syscall.Errno(0x16)
+       EIO             = syscall.Errno(0x5)
+       EIPSEC          = syscall.Errno(0x52)
+       EISCONN         = syscall.Errno(0x38)
+       EISDIR          = syscall.Errno(0x15)
+       ELAST           = syscall.Errno(0x5b)
+       ELOOP           = syscall.Errno(0x3e)
+       EMEDIUMTYPE     = syscall.Errno(0x56)
+       EMFILE          = syscall.Errno(0x18)
+       EMLINK          = syscall.Errno(0x1f)
+       EMSGSIZE        = syscall.Errno(0x28)
+       ENAMETOOLONG    = syscall.Errno(0x3f)
+       ENEEDAUTH       = syscall.Errno(0x51)
+       ENETDOWN        = syscall.Errno(0x32)
+       ENETRESET       = syscall.Errno(0x34)
+       ENETUNREACH     = syscall.Errno(0x33)
+       ENFILE          = syscall.Errno(0x17)
+       ENOATTR         = syscall.Errno(0x53)
+       ENOBUFS         = syscall.Errno(0x37)
+       ENODEV          = syscall.Errno(0x13)
+       ENOENT          = syscall.Errno(0x2)
+       ENOEXEC         = syscall.Errno(0x8)
+       ENOLCK          = syscall.Errno(0x4d)
+       ENOMEDIUM       = syscall.Errno(0x55)
+       ENOMEM          = syscall.Errno(0xc)
+       ENOMSG          = syscall.Errno(0x5a)
+       ENOPROTOOPT     = syscall.Errno(0x2a)
+       ENOSPC          = syscall.Errno(0x1c)
+       ENOSYS          = syscall.Errno(0x4e)
+       ENOTBLK         = syscall.Errno(0xf)
+       ENOTCONN        = syscall.Errno(0x39)
+       ENOTDIR         = syscall.Errno(0x14)
+       ENOTEMPTY       = syscall.Errno(0x42)
+       ENOTSOCK        = syscall.Errno(0x26)
+       ENOTSUP         = syscall.Errno(0x5b)
+       ENOTTY          = syscall.Errno(0x19)
+       ENXIO           = syscall.Errno(0x6)
+       EOPNOTSUPP      = syscall.Errno(0x2d)
+       EOVERFLOW       = syscall.Errno(0x57)
+       EPERM           = syscall.Errno(0x1)
+       EPFNOSUPPORT    = syscall.Errno(0x2e)
+       EPIPE           = syscall.Errno(0x20)
+       EPROCLIM        = syscall.Errno(0x43)
+       EPROCUNAVAIL    = syscall.Errno(0x4c)
+       EPROGMISMATCH   = syscall.Errno(0x4b)
+       EPROGUNAVAIL    = syscall.Errno(0x4a)
+       EPROTONOSUPPORT = syscall.Errno(0x2b)
+       EPROTOTYPE      = syscall.Errno(0x29)
+       ERANGE          = syscall.Errno(0x22)
+       EREMOTE         = syscall.Errno(0x47)
+       EROFS           = syscall.Errno(0x1e)
+       ERPCMISMATCH    = syscall.Errno(0x49)
+       ESHUTDOWN       = syscall.Errno(0x3a)
+       ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+       ESPIPE          = syscall.Errno(0x1d)
+       ESRCH           = syscall.Errno(0x3)
+       ESTALE          = syscall.Errno(0x46)
+       ETIMEDOUT       = syscall.Errno(0x3c)
+       ETOOMANYREFS    = syscall.Errno(0x3b)
+       ETXTBSY         = syscall.Errno(0x1a)
+       EUSERS          = syscall.Errno(0x44)
+       EWOULDBLOCK     = syscall.Errno(0x23)
+       EXDEV           = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+       SIGABRT   = syscall.Signal(0x6)
+       SIGALRM   = syscall.Signal(0xe)
+       SIGBUS    = syscall.Signal(0xa)
+       SIGCHLD   = syscall.Signal(0x14)
+       SIGCONT   = syscall.Signal(0x13)
+       SIGEMT    = syscall.Signal(0x7)
+       SIGFPE    = syscall.Signal(0x8)
+       SIGHUP    = syscall.Signal(0x1)
+       SIGILL    = syscall.Signal(0x4)
+       SIGINFO   = syscall.Signal(0x1d)
+       SIGINT    = syscall.Signal(0x2)
+       SIGIO     = syscall.Signal(0x17)
+       SIGIOT    = syscall.Signal(0x6)
+       SIGKILL   = syscall.Signal(0x9)
+       SIGPIPE   = syscall.Signal(0xd)
+       SIGPROF   = syscall.Signal(0x1b)
+       SIGQUIT   = syscall.Signal(0x3)
+       SIGSEGV   = syscall.Signal(0xb)
+       SIGSTOP   = syscall.Signal(0x11)
+       SIGSYS    = syscall.Signal(0xc)
+       SIGTERM   = syscall.Signal(0xf)
+       SIGTHR    = syscall.Signal(0x20)
+       SIGTRAP   = syscall.Signal(0x5)
+       SIGTSTP   = syscall.Signal(0x12)
+       SIGTTIN   = syscall.Signal(0x15)
+       SIGTTOU   = syscall.Signal(0x16)
+       SIGURG    = syscall.Signal(0x10)
+       SIGUSR1   = syscall.Signal(0x1e)
+       SIGUSR2   = syscall.Signal(0x1f)
+       SIGVTALRM = syscall.Signal(0x1a)
+       SIGWINCH  = syscall.Signal(0x1c)
+       SIGXCPU   = syscall.Signal(0x18)
+       SIGXFSZ   = syscall.Signal(0x19)
+)
+
+// 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",
+}
+
+// Signal table
+var signals = [...]string{
+       1:  "hangup",
+       2:  "interrupt",
+       3:  "quit",
+       4:  "illegal instruction",
+       5:  "trace/BPT trap",
+       6:  "abort trap",
+       7:  "EMT trap",
+       8:  "floating point exception",
+       9:  "killed",
+       10: "bus error",
+       11: "segmentation fault",
+       12: "bad system call",
+       13: "broken pipe",
+       14: "alarm clock",
+       15: "terminated",
+       16: "urgent I/O condition",
+       17: "stopped (signal)",
+       18: "stopped",
+       19: "continued",
+       20: "child exited",
+       21: "stopped (tty input)",
+       22: "stopped (tty output)",
+       23: "I/O possible",
+       24: "cputime limit exceeded",
+       25: "filesize limit exceeded",
+       26: "virtual timer expired",
+       27: "profiling timer expired",
+       28: "window size changes",
+       29: "information request",
+       30: "user defined signal 1",
+       31: "user defined signal 2",
+       32: "thread AST",
+}
diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go
new file mode 100644 (file)
index 0000000..1758ecc
--- /dev/null
@@ -0,0 +1,1583 @@
+// mkerrors.sh -m64
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,openbsd
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m64 _const.go
+
+package unix
+
+import "syscall"
+
+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                         = 0x0
+       ARPHRD_ETHER                      = 0x1
+       ARPHRD_FRELAY                     = 0xf
+       ARPHRD_IEEE1394                   = 0x18
+       ARPHRD_IEEE802                    = 0x6
+       B0                                = 0x0
+       B110                              = 0x6e
+       B115200                           = 0x1c200
+       B1200                             = 0x4b0
+       B134                              = 0x86
+       B14400                            = 0x3840
+       B150                              = 0x96
+       B1800                             = 0x708
+       B19200                            = 0x4b00
+       B200                              = 0xc8
+       B230400                           = 0x38400
+       B2400                             = 0x960
+       B28800                            = 0x7080
+       B300                              = 0x12c
+       B38400                            = 0x9600
+       B4800                             = 0x12c0
+       B50                               = 0x32
+       B57600                            = 0xe100
+       B600                              = 0x258
+       B7200                             = 0x1c20
+       B75                               = 0x4b
+       B76800                            = 0x12c00
+       B9600                             = 0x2580
+       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                           = 0x0
+       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                           = 0x0
+       BPF_IND                           = 0x40
+       BPF_JA                            = 0x0
+       BPF_JEQ                           = 0x10
+       BPF_JGE                           = 0x30
+       BPF_JGT                           = 0x20
+       BPF_JMP                           = 0x5
+       BPF_JSET                          = 0x40
+       BPF_K                             = 0x0
+       BPF_LD                            = 0x0
+       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                           = 0x0
+       BPF_TXA                           = 0x80
+       BPF_W                             = 0x0
+       BPF_X                             = 0x8
+       BRKINT                            = 0x2
+       CFLUSH                            = 0xf
+       CLOCAL                            = 0x8000
+       CREAD                             = 0x800
+       CS5                               = 0x0
+       CS6                               = 0x100
+       CS7                               = 0x200
+       CS8                               = 0x300
+       CSIZE                             = 0x300
+       CSTART                            = 0x11
+       CSTATUS                           = 0xff
+       CSTOP                             = 0x13
+       CSTOPB                            = 0x400
+       CSUSP                             = 0x1a
+       CTL_MAXNAME                       = 0xc
+       CTL_NET                           = 0x4
+       DIOCOSFPFLUSH                     = 0x2000444e
+       DLT_ARCNET                        = 0x7
+       DLT_ATM_RFC1483                   = 0xb
+       DLT_AX25                          = 0x3
+       DLT_CHAOS                         = 0x5
+       DLT_C_HDLC                        = 0x68
+       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                          = 0x0
+       DLT_PFLOG                         = 0x75
+       DLT_PFSYNC                        = 0x12
+       DLT_PPP                           = 0x9
+       DLT_PPP_BSDOS                     = 0x10
+       DLT_PPP_ETHER                     = 0x33
+       DLT_PPP_SERIAL                    = 0x32
+       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                        = 0x0
+       ECHO                              = 0x8
+       ECHOCTL                           = 0x40
+       ECHOE                             = 0x2
+       ECHOK                             = 0x4
+       ECHOKE                            = 0x1
+       ECHONL                            = 0x10
+       ECHOPRT                           = 0x20
+       EMT_TAGOVF                        = 0x1
+       EMUL_ENABLED                      = 0x1
+       EMUL_NATIVE                       = 0x2
+       ENDRUNDISC                        = 0x9
+       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
+       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
+       EXTA                              = 0x4b00
+       EXTB                              = 0x9600
+       EXTPROC                           = 0x800
+       FD_CLOEXEC                        = 0x1
+       FD_SETSIZE                        = 0x400
+       FLUSHO                            = 0x800000
+       F_DUPFD                           = 0x0
+       F_DUPFD_CLOEXEC                   = 0xa
+       F_GETFD                           = 0x1
+       F_GETFL                           = 0x3
+       F_GETLK                           = 0x7
+       F_GETOWN                          = 0x5
+       F_OK                              = 0x0
+       F_RDLCK                           = 0x1
+       F_SETFD                           = 0x2
+       F_SETFL                           = 0x4
+       F_SETLK                           = 0x8
+       F_SETLKW                          = 0x9
+       F_SETOWN                          = 0x6
+       F_UNLCK                           = 0x2
+       F_WRLCK                           = 0x3
+       HUPCL                             = 0x4000
+       ICANON                            = 0x100
+       ICMP6_FILTER                      = 0x12
+       ICRNL                             = 0x100
+       IEXTEN                            = 0x400
+       IFAN_ARRIVAL                      = 0x0
+       IFAN_DEPARTURE                    = 0x1
+       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
+       IGNBRK                            = 0x1
+       IGNCR                             = 0x80
+       IGNPAR                            = 0x4
+       IMAXBEL                           = 0x2000
+       INLCR                             = 0x40
+       INPCK                             = 0x10
+       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_DIVERT_INIT               = 0x2
+       IPPROTO_DIVERT_RESP               = 0x1
+       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                   = 0x0
+       IPPROTO_ICMP                      = 0x1
+       IPPROTO_ICMPV6                    = 0x3a
+       IPPROTO_IDP                       = 0x16
+       IPPROTO_IGMP                      = 0x2
+       IPPROTO_IP                        = 0x0
+       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            = 0x0
+       IPV6_PORTRANGE_HIGH               = 0x1
+       IPV6_PORTRANGE_LOW                = 0x2
+       IPV6_RECVDSTOPTS                  = 0x28
+       IPV6_RECVDSTPORT                  = 0x40
+       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                  = 0x0
+       IPV6_RTHDR_STRICT                 = 0x1
+       IPV6_RTHDR_TYPE_0                 = 0x0
+       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_DIVERTFL                       = 0x1022
+       IP_DROP_MEMBERSHIP                = 0xd
+       IP_ESP_NETWORK_LEVEL              = 0x16
+       IP_ESP_TRANS_LEVEL                = 0x15
+       IP_HDRINCL                        = 0x2
+       IP_IPCOMP_LEVEL                   = 0x1d
+       IP_IPSECFLOWINFO                  = 0x24
+       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              = 0x0
+       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
+       ISIG                              = 0x80
+       ISTRIP                            = 0x20
+       IXANY                             = 0x800
+       IXOFF                             = 0x400
+       IXON                              = 0x200
+       LCNT_OVERLOAD_FLUSH               = 0x6
+       LOCK_EX                           = 0x2
+       LOCK_NB                           = 0x4
+       LOCK_SH                           = 0x1
+       LOCK_UN                           = 0x8
+       MADV_DONTNEED                     = 0x4
+       MADV_FREE                         = 0x6
+       MADV_NORMAL                       = 0x0
+       MADV_RANDOM                       = 0x1
+       MADV_SEQUENTIAL                   = 0x2
+       MADV_SPACEAVAIL                   = 0x5
+       MADV_WILLNEED                     = 0x3
+       MAP_ANON                          = 0x1000
+       MAP_COPY                          = 0x4
+       MAP_FILE                          = 0x0
+       MAP_FIXED                         = 0x10
+       MAP_FLAGMASK                      = 0x1ff7
+       MAP_HASSEMAPHORE                  = 0x200
+       MAP_INHERIT                       = 0x80
+       MAP_INHERIT_COPY                  = 0x1
+       MAP_INHERIT_DONATE_COPY           = 0x3
+       MAP_INHERIT_NONE                  = 0x2
+       MAP_INHERIT_SHARE                 = 0x0
+       MAP_NOEXTEND                      = 0x100
+       MAP_NORESERVE                     = 0x40
+       MAP_PRIVATE                       = 0x2
+       MAP_RENAME                        = 0x20
+       MAP_SHARED                        = 0x1
+       MAP_TRYFIXED                      = 0x400
+       MCL_CURRENT                       = 0x1
+       MCL_FUTURE                        = 0x2
+       MSG_BCAST                         = 0x100
+       MSG_CTRUNC                        = 0x20
+       MSG_DONTROUTE                     = 0x4
+       MSG_DONTWAIT                      = 0x80
+       MSG_EOR                           = 0x8
+       MSG_MCAST                         = 0x200
+       MSG_NOSIGNAL                      = 0x400
+       MSG_OOB                           = 0x1
+       MSG_PEEK                          = 0x2
+       MSG_TRUNC                         = 0x10
+       MSG_WAITALL                       = 0x40
+       MS_ASYNC                          = 0x1
+       MS_INVALIDATE                     = 0x4
+       MS_SYNC                           = 0x2
+       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
+       NOFLSH                            = 0x80000000
+       NOTE_ATTRIB                       = 0x8
+       NOTE_CHILD                        = 0x4
+       NOTE_DELETE                       = 0x1
+       NOTE_EOF                          = 0x2
+       NOTE_EXEC                         = 0x20000000
+       NOTE_EXIT                         = 0x80000000
+       NOTE_EXTEND                       = 0x4
+       NOTE_FORK                         = 0x40000000
+       NOTE_LINK                         = 0x10
+       NOTE_LOWAT                        = 0x1
+       NOTE_PCTRLMASK                    = 0xf0000000
+       NOTE_PDATAMASK                    = 0xfffff
+       NOTE_RENAME                       = 0x20
+       NOTE_REVOKE                       = 0x40
+       NOTE_TRACK                        = 0x1
+       NOTE_TRACKERR                     = 0x2
+       NOTE_TRUNCATE                     = 0x80
+       NOTE_WRITE                        = 0x2
+       OCRNL                             = 0x10
+       ONLCR                             = 0x2
+       ONLRET                            = 0x80
+       ONOCR                             = 0x40
+       ONOEOT                            = 0x8
+       OPOST                             = 0x1
+       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                          = 0x0
+       O_RDWR                            = 0x2
+       O_RSYNC                           = 0x80
+       O_SHLOCK                          = 0x10
+       O_SYNC                            = 0x80
+       O_TRUNC                           = 0x400
+       O_WRONLY                          = 0x1
+       PARENB                            = 0x1000
+       PARMRK                            = 0x8
+       PARODD                            = 0x2000
+       PENDIN                            = 0x20000000
+       PF_FLUSH                          = 0x1
+       PRIO_PGRP                         = 0x1
+       PRIO_PROCESS                      = 0x0
+       PRIO_USER                         = 0x2
+       PROT_EXEC                         = 0x4
+       PROT_NONE                         = 0x0
+       PROT_READ                         = 0x1
+       PROT_WRITE                        = 0x2
+       RLIMIT_CORE                       = 0x4
+       RLIMIT_CPU                        = 0x0
+       RLIMIT_DATA                       = 0x2
+       RLIMIT_FSIZE                      = 0x1
+       RLIMIT_NOFILE                     = 0x8
+       RLIMIT_STACK                      = 0x3
+       RLIM_INFINITY                     = 0x7fffffffffffffff
+       RTAX_AUTHOR                       = 0x6
+       RTAX_BRD                          = 0x7
+       RTAX_DST                          = 0x0
+       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                         = 0x10f808
+       RTF_GATEWAY                       = 0x2
+       RTF_HOST                          = 0x4
+       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                       = 0x5
+       RTV_EXPIRE                        = 0x4
+       RTV_HOPCOUNT                      = 0x2
+       RTV_MTU                           = 0x1
+       RTV_RPIPE                         = 0x8
+       RTV_RTT                           = 0x40
+       RTV_RTTVAR                        = 0x80
+       RTV_SPIPE                         = 0x10
+       RTV_SSTHRESH                      = 0x20
+       RT_TABLEID_MAX                    = 0xff
+       RUSAGE_CHILDREN                   = -0x1
+       RUSAGE_SELF                       = 0x0
+       RUSAGE_THREAD                     = 0x1
+       SCM_RIGHTS                        = 0x1
+       SCM_TIMESTAMP                     = 0x4
+       SHUT_RD                           = 0x0
+       SHUT_RDWR                         = 0x2
+       SHUT_WR                           = 0x1
+       SIOCADDMULTI                      = 0x80206931
+       SIOCAIFADDR                       = 0x8040691a
+       SIOCAIFGROUP                      = 0x80286987
+       SIOCALIFADDR                      = 0x8218691c
+       SIOCATMARK                        = 0x40047307
+       SIOCBRDGADD                       = 0x8058693c
+       SIOCBRDGADDS                      = 0x80586941
+       SIOCBRDGARL                       = 0x806e694d
+       SIOCBRDGDADDR                     = 0x81286947
+       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                     = 0xc1286944
+       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
+       SIOCGETVLAN                       = 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
+       SIOCGIFHARDMTU                    = 0xc02069a5
+       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
+       SIOCGLIFPHYTTL                    = 0xc02069a9
+       SIOCGLOWAT                        = 0x40047303
+       SIOCGPGRP                         = 0x40047309
+       SIOCGSPPPPARAMS                   = 0xc0206994
+       SIOCGVH                           = 0xc02069f6
+       SIOCGVNETID                       = 0xc02069a7
+       SIOCIFCREATE                      = 0x8020697a
+       SIOCIFDESTROY                     = 0x80206979
+       SIOCIFGCLONERS                    = 0xc0106978
+       SIOCSETKALIVE                     = 0x801869a3
+       SIOCSETLABEL                      = 0x80206999
+       SIOCSETPFLOW                      = 0x802069fd
+       SIOCSETPFSYNC                     = 0x802069f7
+       SIOCSETVLAN                       = 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
+       SIOCSLIFPHYTTL                    = 0x802069a8
+       SIOCSLOWAT                        = 0x80047302
+       SIOCSPGRP                         = 0x80047308
+       SIOCSSPPPPARAMS                   = 0x80206993
+       SIOCSVH                           = 0xc02069f5
+       SIOCSVNETID                       = 0x802069a6
+       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_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
+       TCIFLUSH                          = 0x1
+       TCIOFLUSH                         = 0x3
+       TCOFLUSH                          = 0x2
+       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_NOPUSH                        = 0x10
+       TCP_NSTATES                       = 0xb
+       TCP_SACK_ENABLE                   = 0x8
+       TCSAFLUSH                         = 0x2
+       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
+       TIOCGSID                          = 0x40047463
+       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                      = 0x0
+       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
+       TOSTOP                            = 0x400000
+       VDISCARD                          = 0xf
+       VDSUSP                            = 0xb
+       VEOF                              = 0x0
+       VEOL                              = 0x1
+       VEOL2                             = 0x2
+       VERASE                            = 0x3
+       VINTR                             = 0x8
+       VKILL                             = 0x5
+       VLNEXT                            = 0xe
+       VMIN                              = 0x10
+       VQUIT                             = 0x9
+       VREPRINT                          = 0x6
+       VSTART                            = 0xc
+       VSTATUS                           = 0x12
+       VSTOP                             = 0xd
+       VSUSP                             = 0xa
+       VTIME                             = 0x11
+       VWERASE                           = 0x4
+       WALTSIG                           = 0x4
+       WCONTINUED                        = 0x8
+       WCOREFLAG                         = 0x80
+       WNOHANG                           = 0x1
+       WSTOPPED                          = 0x7f
+       WUNTRACED                         = 0x2
+)
+
+// Errors
+const (
+       E2BIG           = syscall.Errno(0x7)
+       EACCES          = syscall.Errno(0xd)
+       EADDRINUSE      = syscall.Errno(0x30)
+       EADDRNOTAVAIL   = syscall.Errno(0x31)
+       EAFNOSUPPORT    = syscall.Errno(0x2f)
+       EAGAIN          = syscall.Errno(0x23)
+       EALREADY        = syscall.Errno(0x25)
+       EAUTH           = syscall.Errno(0x50)
+       EBADF           = syscall.Errno(0x9)
+       EBADRPC         = syscall.Errno(0x48)
+       EBUSY           = syscall.Errno(0x10)
+       ECANCELED       = syscall.Errno(0x58)
+       ECHILD          = syscall.Errno(0xa)
+       ECONNABORTED    = syscall.Errno(0x35)
+       ECONNREFUSED    = syscall.Errno(0x3d)
+       ECONNRESET      = syscall.Errno(0x36)
+       EDEADLK         = syscall.Errno(0xb)
+       EDESTADDRREQ    = syscall.Errno(0x27)
+       EDOM            = syscall.Errno(0x21)
+       EDQUOT          = syscall.Errno(0x45)
+       EEXIST          = syscall.Errno(0x11)
+       EFAULT          = syscall.Errno(0xe)
+       EFBIG           = syscall.Errno(0x1b)
+       EFTYPE          = syscall.Errno(0x4f)
+       EHOSTDOWN       = syscall.Errno(0x40)
+       EHOSTUNREACH    = syscall.Errno(0x41)
+       EIDRM           = syscall.Errno(0x59)
+       EILSEQ          = syscall.Errno(0x54)
+       EINPROGRESS     = syscall.Errno(0x24)
+       EINTR           = syscall.Errno(0x4)
+       EINVAL          = syscall.Errno(0x16)
+       EIO             = syscall.Errno(0x5)
+       EIPSEC          = syscall.Errno(0x52)
+       EISCONN         = syscall.Errno(0x38)
+       EISDIR          = syscall.Errno(0x15)
+       ELAST           = syscall.Errno(0x5b)
+       ELOOP           = syscall.Errno(0x3e)
+       EMEDIUMTYPE     = syscall.Errno(0x56)
+       EMFILE          = syscall.Errno(0x18)
+       EMLINK          = syscall.Errno(0x1f)
+       EMSGSIZE        = syscall.Errno(0x28)
+       ENAMETOOLONG    = syscall.Errno(0x3f)
+       ENEEDAUTH       = syscall.Errno(0x51)
+       ENETDOWN        = syscall.Errno(0x32)
+       ENETRESET       = syscall.Errno(0x34)
+       ENETUNREACH     = syscall.Errno(0x33)
+       ENFILE          = syscall.Errno(0x17)
+       ENOATTR         = syscall.Errno(0x53)
+       ENOBUFS         = syscall.Errno(0x37)
+       ENODEV          = syscall.Errno(0x13)
+       ENOENT          = syscall.Errno(0x2)
+       ENOEXEC         = syscall.Errno(0x8)
+       ENOLCK          = syscall.Errno(0x4d)
+       ENOMEDIUM       = syscall.Errno(0x55)
+       ENOMEM          = syscall.Errno(0xc)
+       ENOMSG          = syscall.Errno(0x5a)
+       ENOPROTOOPT     = syscall.Errno(0x2a)
+       ENOSPC          = syscall.Errno(0x1c)
+       ENOSYS          = syscall.Errno(0x4e)
+       ENOTBLK         = syscall.Errno(0xf)
+       ENOTCONN        = syscall.Errno(0x39)
+       ENOTDIR         = syscall.Errno(0x14)
+       ENOTEMPTY       = syscall.Errno(0x42)
+       ENOTSOCK        = syscall.Errno(0x26)
+       ENOTSUP         = syscall.Errno(0x5b)
+       ENOTTY          = syscall.Errno(0x19)
+       ENXIO           = syscall.Errno(0x6)
+       EOPNOTSUPP      = syscall.Errno(0x2d)
+       EOVERFLOW       = syscall.Errno(0x57)
+       EPERM           = syscall.Errno(0x1)
+       EPFNOSUPPORT    = syscall.Errno(0x2e)
+       EPIPE           = syscall.Errno(0x20)
+       EPROCLIM        = syscall.Errno(0x43)
+       EPROCUNAVAIL    = syscall.Errno(0x4c)
+       EPROGMISMATCH   = syscall.Errno(0x4b)
+       EPROGUNAVAIL    = syscall.Errno(0x4a)
+       EPROTONOSUPPORT = syscall.Errno(0x2b)
+       EPROTOTYPE      = syscall.Errno(0x29)
+       ERANGE          = syscall.Errno(0x22)
+       EREMOTE         = syscall.Errno(0x47)
+       EROFS           = syscall.Errno(0x1e)
+       ERPCMISMATCH    = syscall.Errno(0x49)
+       ESHUTDOWN       = syscall.Errno(0x3a)
+       ESOCKTNOSUPPORT = syscall.Errno(0x2c)
+       ESPIPE          = syscall.Errno(0x1d)
+       ESRCH           = syscall.Errno(0x3)
+       ESTALE          = syscall.Errno(0x46)
+       ETIMEDOUT       = syscall.Errno(0x3c)
+       ETOOMANYREFS    = syscall.Errno(0x3b)
+       ETXTBSY         = syscall.Errno(0x1a)
+       EUSERS          = syscall.Errno(0x44)
+       EWOULDBLOCK     = syscall.Errno(0x23)
+       EXDEV           = syscall.Errno(0x12)
+)
+
+// Signals
+const (
+       SIGABRT   = syscall.Signal(0x6)
+       SIGALRM   = syscall.Signal(0xe)
+       SIGBUS    = syscall.Signal(0xa)
+       SIGCHLD   = syscall.Signal(0x14)
+       SIGCONT   = syscall.Signal(0x13)
+       SIGEMT    = syscall.Signal(0x7)
+       SIGFPE    = syscall.Signal(0x8)
+       SIGHUP    = syscall.Signal(0x1)
+       SIGILL    = syscall.Signal(0x4)
+       SIGINFO   = syscall.Signal(0x1d)
+       SIGINT    = syscall.Signal(0x2)
+       SIGIO     = syscall.Signal(0x17)
+       SIGIOT    = syscall.Signal(0x6)
+       SIGKILL   = syscall.Signal(0x9)
+       SIGPIPE   = syscall.Signal(0xd)
+       SIGPROF   = syscall.Signal(0x1b)
+       SIGQUIT   = syscall.Signal(0x3)
+       SIGSEGV   = syscall.Signal(0xb)
+       SIGSTOP   = syscall.Signal(0x11)
+       SIGSYS    = syscall.Signal(0xc)
+       SIGTERM   = syscall.Signal(0xf)
+       SIGTHR    = syscall.Signal(0x20)
+       SIGTRAP   = syscall.Signal(0x5)
+       SIGTSTP   = syscall.Signal(0x12)
+       SIGTTIN   = syscall.Signal(0x15)
+       SIGTTOU   = syscall.Signal(0x16)
+       SIGURG    = syscall.Signal(0x10)
+       SIGUSR1   = syscall.Signal(0x1e)
+       SIGUSR2   = syscall.Signal(0x1f)
+       SIGVTALRM = syscall.Signal(0x1a)
+       SIGWINCH  = syscall.Signal(0x1c)
+       SIGXCPU   = syscall.Signal(0x18)
+       SIGXFSZ   = syscall.Signal(0x19)
+)
+
+// 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",
+}
+
+// Signal table
+var signals = [...]string{
+       1:  "hangup",
+       2:  "interrupt",
+       3:  "quit",
+       4:  "illegal instruction",
+       5:  "trace/BPT trap",
+       6:  "abort trap",
+       7:  "EMT trap",
+       8:  "floating point exception",
+       9:  "killed",
+       10: "bus error",
+       11: "segmentation fault",
+       12: "bad system call",
+       13: "broken pipe",
+       14: "alarm clock",
+       15: "terminated",
+       16: "urgent I/O condition",
+       17: "stopped (signal)",
+       18: "stopped",
+       19: "continued",
+       20: "child exited",
+       21: "stopped (tty input)",
+       22: "stopped (tty output)",
+       23: "I/O possible",
+       24: "cputime limit exceeded",
+       25: "filesize limit exceeded",
+       26: "virtual timer expired",
+       27: "profiling timer expired",
+       28: "window size changes",
+       29: "information request",
+       30: "user defined signal 1",
+       31: "user defined signal 2",
+       32: "thread AST",
+}
diff --git a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go
new file mode 100644 (file)
index 0000000..a08922b
--- /dev/null
@@ -0,0 +1,1436 @@
+// mkerrors.sh -m64
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,solaris
+
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -m64 _const.go
+
+package unix
+
+import "syscall"
+
+const (
+       AF_802                        = 0x12
+       AF_APPLETALK                  = 0x10
+       AF_CCITT                      = 0xa
+       AF_CHAOS                      = 0x5
+       AF_DATAKIT                    = 0x9
+       AF_DECnet                     = 0xc
+       AF_DLI                        = 0xd
+       AF_ECMA                       = 0x8
+       AF_FILE                       = 0x1
+       AF_GOSIP                      = 0x16
+       AF_HYLINK                     = 0xf
+       AF_IMPLINK                    = 0x3
+       AF_INET                       = 0x2
+       AF_INET6                      = 0x1a
+       AF_INET_OFFLOAD               = 0x1e
+       AF_IPX                        = 0x17
+       AF_KEY                        = 0x1b
+       AF_LAT                        = 0xe
+       AF_LINK                       = 0x19
+       AF_LOCAL                      = 0x1
+       AF_MAX                        = 0x20
+       AF_NBS                        = 0x7
+       AF_NCA                        = 0x1c
+       AF_NIT                        = 0x11
+       AF_NS                         = 0x6
+       AF_OSI                        = 0x13
+       AF_OSINET                     = 0x15
+       AF_PACKET                     = 0x20
+       AF_POLICY                     = 0x1d
+       AF_PUP                        = 0x4
+       AF_ROUTE                      = 0x18
+       AF_SNA                        = 0xb
+       AF_TRILL                      = 0x1f
+       AF_UNIX                       = 0x1
+       AF_UNSPEC                     = 0x0
+       AF_X25                        = 0x14
+       ARPHRD_ARCNET                 = 0x7
+       ARPHRD_ATM                    = 0x10
+       ARPHRD_AX25                   = 0x3
+       ARPHRD_CHAOS                  = 0x5
+       ARPHRD_EETHER                 = 0x2
+       ARPHRD_ETHER                  = 0x1
+       ARPHRD_FC                     = 0x12
+       ARPHRD_FRAME                  = 0xf
+       ARPHRD_HDLC                   = 0x11
+       ARPHRD_IB                     = 0x20
+       ARPHRD_IEEE802                = 0x6
+       ARPHRD_IPATM                  = 0x13
+       ARPHRD_METRICOM               = 0x17
+       ARPHRD_TUNNEL                 = 0x1f
+       B0                            = 0x0
+       B110                          = 0x3
+       B115200                       = 0x12
+       B1200                         = 0x9
+       B134                          = 0x4
+       B150                          = 0x5
+       B153600                       = 0x13
+       B1800                         = 0xa
+       B19200                        = 0xe
+       B200                          = 0x6
+       B230400                       = 0x14
+       B2400                         = 0xb
+       B300                          = 0x7
+       B307200                       = 0x15
+       B38400                        = 0xf
+       B460800                       = 0x16
+       B4800                         = 0xc
+       B50                           = 0x1
+       B57600                        = 0x10
+       B600                          = 0x8
+       B75                           = 0x2
+       B76800                        = 0x11
+       B921600                       = 0x17
+       B9600                         = 0xd
+       BIOCFLUSH                     = 0x20004268
+       BIOCGBLEN                     = 0x40044266
+       BIOCGDLT                      = 0x4004426a
+       BIOCGDLTLIST                  = -0x3fefbd89
+       BIOCGDLTLIST32                = -0x3ff7bd89
+       BIOCGETIF                     = 0x4020426b
+       BIOCGETLIF                    = 0x4078426b
+       BIOCGHDRCMPLT                 = 0x40044274
+       BIOCGRTIMEOUT                 = 0x4010427b
+       BIOCGRTIMEOUT32               = 0x4008427b
+       BIOCGSEESENT                  = 0x40044278
+       BIOCGSTATS                    = 0x4080426f
+       BIOCGSTATSOLD                 = 0x4008426f
+       BIOCIMMEDIATE                 = -0x7ffbbd90
+       BIOCPROMISC                   = 0x20004269
+       BIOCSBLEN                     = -0x3ffbbd9a
+       BIOCSDLT                      = -0x7ffbbd8a
+       BIOCSETF                      = -0x7fefbd99
+       BIOCSETF32                    = -0x7ff7bd99
+       BIOCSETIF                     = -0x7fdfbd94
+       BIOCSETLIF                    = -0x7f87bd94
+       BIOCSHDRCMPLT                 = -0x7ffbbd8b
+       BIOCSRTIMEOUT                 = -0x7fefbd86
+       BIOCSRTIMEOUT32               = -0x7ff7bd86
+       BIOCSSEESENT                  = -0x7ffbbd87
+       BIOCSTCPF                     = -0x7fefbd8e
+       BIOCSUDPF                     = -0x7fefbd8d
+       BIOCVERSION                   = 0x40044271
+       BPF_A                         = 0x10
+       BPF_ABS                       = 0x20
+       BPF_ADD                       = 0x0
+       BPF_ALIGNMENT                 = 0x4
+       BPF_ALU                       = 0x4
+       BPF_AND                       = 0x50
+       BPF_B                         = 0x10
+       BPF_DFLTBUFSIZE               = 0x100000
+       BPF_DIV                       = 0x30
+       BPF_H                         = 0x8
+       BPF_IMM                       = 0x0
+       BPF_IND                       = 0x40
+       BPF_JA                        = 0x0
+       BPF_JEQ                       = 0x10
+       BPF_JGE                       = 0x30
+       BPF_JGT                       = 0x20
+       BPF_JMP                       = 0x5
+       BPF_JSET                      = 0x40
+       BPF_K                         = 0x0
+       BPF_LD                        = 0x0
+       BPF_LDX                       = 0x1
+       BPF_LEN                       = 0x80
+       BPF_LSH                       = 0x60
+       BPF_MAJOR_VERSION             = 0x1
+       BPF_MAXBUFSIZE                = 0x1000000
+       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                       = 0x0
+       BPF_TXA                       = 0x80
+       BPF_W                         = 0x0
+       BPF_X                         = 0x8
+       BRKINT                        = 0x2
+       CFLUSH                        = 0xf
+       CLOCAL                        = 0x800
+       CLOCK_HIGHRES                 = 0x4
+       CLOCK_LEVEL                   = 0xa
+       CLOCK_MONOTONIC               = 0x4
+       CLOCK_PROCESS_CPUTIME_ID      = 0x5
+       CLOCK_PROF                    = 0x2
+       CLOCK_REALTIME                = 0x3
+       CLOCK_THREAD_CPUTIME_ID       = 0x2
+       CLOCK_VIRTUAL                 = 0x1
+       CREAD                         = 0x80
+       CS5                           = 0x0
+       CS6                           = 0x10
+       CS7                           = 0x20
+       CS8                           = 0x30
+       CSIZE                         = 0x30
+       CSTART                        = 0x11
+       CSTATUS                       = 0x14
+       CSTOP                         = 0x13
+       CSTOPB                        = 0x40
+       CSUSP                         = 0x1a
+       CSWTCH                        = 0x1a
+       DLT_AIRONET_HEADER            = 0x78
+       DLT_APPLE_IP_OVER_IEEE1394    = 0x8a
+       DLT_ARCNET                    = 0x7
+       DLT_ARCNET_LINUX              = 0x81
+       DLT_ATM_CLIP                  = 0x13
+       DLT_ATM_RFC1483               = 0xb
+       DLT_AURORA                    = 0x7e
+       DLT_AX25                      = 0x3
+       DLT_BACNET_MS_TP              = 0xa5
+       DLT_CHAOS                     = 0x5
+       DLT_CISCO_IOS                 = 0x76
+       DLT_C_HDLC                    = 0x68
+       DLT_DOCSIS                    = 0x8f
+       DLT_ECONET                    = 0x73
+       DLT_EN10MB                    = 0x1
+       DLT_EN3MB                     = 0x2
+       DLT_ENC                       = 0x6d
+       DLT_ERF_ETH                   = 0xaf
+       DLT_ERF_POS                   = 0xb0
+       DLT_FDDI                      = 0xa
+       DLT_FRELAY                    = 0x6b
+       DLT_GCOM_SERIAL               = 0xad
+       DLT_GCOM_T1E1                 = 0xac
+       DLT_GPF_F                     = 0xab
+       DLT_GPF_T                     = 0xaa
+       DLT_GPRS_LLC                  = 0xa9
+       DLT_HDLC                      = 0x10
+       DLT_HHDLC                     = 0x79
+       DLT_HIPPI                     = 0xf
+       DLT_IBM_SN                    = 0x92
+       DLT_IBM_SP                    = 0x91
+       DLT_IEEE802                   = 0x6
+       DLT_IEEE802_11                = 0x69
+       DLT_IEEE802_11_RADIO          = 0x7f
+       DLT_IEEE802_11_RADIO_AVS      = 0xa3
+       DLT_IPNET                     = 0xe2
+       DLT_IPOIB                     = 0xa2
+       DLT_IP_OVER_FC                = 0x7a
+       DLT_JUNIPER_ATM1              = 0x89
+       DLT_JUNIPER_ATM2              = 0x87
+       DLT_JUNIPER_CHDLC             = 0xb5
+       DLT_JUNIPER_ES                = 0x84
+       DLT_JUNIPER_ETHER             = 0xb2
+       DLT_JUNIPER_FRELAY            = 0xb4
+       DLT_JUNIPER_GGSN              = 0x85
+       DLT_JUNIPER_MFR               = 0x86
+       DLT_JUNIPER_MLFR              = 0x83
+       DLT_JUNIPER_MLPPP             = 0x82
+       DLT_JUNIPER_MONITOR           = 0xa4
+       DLT_JUNIPER_PIC_PEER          = 0xae
+       DLT_JUNIPER_PPP               = 0xb3
+       DLT_JUNIPER_PPPOE             = 0xa7
+       DLT_JUNIPER_PPPOE_ATM         = 0xa8
+       DLT_JUNIPER_SERVICES          = 0x88
+       DLT_LINUX_IRDA                = 0x90
+       DLT_LINUX_LAPD                = 0xb1
+       DLT_LINUX_SLL                 = 0x71
+       DLT_LOOP                      = 0x6c
+       DLT_LTALK                     = 0x72
+       DLT_MTP2                      = 0x8c
+       DLT_MTP2_WITH_PHDR            = 0x8b
+       DLT_MTP3                      = 0x8d
+       DLT_NULL                      = 0x0
+       DLT_PCI_EXP                   = 0x7d
+       DLT_PFLOG                     = 0x75
+       DLT_PFSYNC                    = 0x12
+       DLT_PPP                       = 0x9
+       DLT_PPP_BSDOS                 = 0xe
+       DLT_PPP_PPPD                  = 0xa6
+       DLT_PRISM_HEADER              = 0x77
+       DLT_PRONET                    = 0x4
+       DLT_RAW                       = 0xc
+       DLT_RAWAF_MASK                = 0x2240000
+       DLT_RIO                       = 0x7c
+       DLT_SCCP                      = 0x8e
+       DLT_SLIP                      = 0x8
+       DLT_SLIP_BSDOS                = 0xd
+       DLT_SUNATM                    = 0x7b
+       DLT_SYMANTEC_FIREWALL         = 0x63
+       DLT_TZSP                      = 0x80
+       ECHO                          = 0x8
+       ECHOCTL                       = 0x200
+       ECHOE                         = 0x10
+       ECHOK                         = 0x20
+       ECHOKE                        = 0x800
+       ECHONL                        = 0x40
+       ECHOPRT                       = 0x400
+       EMPTY_SET                     = 0x0
+       EMT_CPCOVF                    = 0x1
+       EQUALITY_CHECK                = 0x0
+       EXTA                          = 0xe
+       EXTB                          = 0xf
+       FD_CLOEXEC                    = 0x1
+       FD_NFDBITS                    = 0x40
+       FD_SETSIZE                    = 0x10000
+       FLUSHALL                      = 0x1
+       FLUSHDATA                     = 0x0
+       FLUSHO                        = 0x2000
+       F_ALLOCSP                     = 0xa
+       F_ALLOCSP64                   = 0xa
+       F_BADFD                       = 0x2e
+       F_BLKSIZE                     = 0x13
+       F_BLOCKS                      = 0x12
+       F_CHKFL                       = 0x8
+       F_COMPAT                      = 0x8
+       F_DUP2FD                      = 0x9
+       F_DUP2FD_CLOEXEC              = 0x24
+       F_DUPFD                       = 0x0
+       F_DUPFD_CLOEXEC               = 0x25
+       F_FREESP                      = 0xb
+       F_FREESP64                    = 0xb
+       F_GETFD                       = 0x1
+       F_GETFL                       = 0x3
+       F_GETLK                       = 0xe
+       F_GETLK64                     = 0xe
+       F_GETOWN                      = 0x17
+       F_GETXFL                      = 0x2d
+       F_HASREMOTELOCKS              = 0x1a
+       F_ISSTREAM                    = 0xd
+       F_MANDDNY                     = 0x10
+       F_MDACC                       = 0x20
+       F_NODNY                       = 0x0
+       F_NPRIV                       = 0x10
+       F_PRIV                        = 0xf
+       F_QUOTACTL                    = 0x11
+       F_RDACC                       = 0x1
+       F_RDDNY                       = 0x1
+       F_RDLCK                       = 0x1
+       F_REVOKE                      = 0x19
+       F_RMACC                       = 0x4
+       F_RMDNY                       = 0x4
+       F_RWACC                       = 0x3
+       F_RWDNY                       = 0x3
+       F_SETFD                       = 0x2
+       F_SETFL                       = 0x4
+       F_SETLK                       = 0x6
+       F_SETLK64                     = 0x6
+       F_SETLK64_NBMAND              = 0x2a
+       F_SETLKW                      = 0x7
+       F_SETLKW64                    = 0x7
+       F_SETLK_NBMAND                = 0x2a
+       F_SETOWN                      = 0x18
+       F_SHARE                       = 0x28
+       F_SHARE_NBMAND                = 0x2b
+       F_UNLCK                       = 0x3
+       F_UNLKSYS                     = 0x4
+       F_UNSHARE                     = 0x29
+       F_WRACC                       = 0x2
+       F_WRDNY                       = 0x2
+       F_WRLCK                       = 0x2
+       HUPCL                         = 0x400
+       ICANON                        = 0x2
+       ICRNL                         = 0x100
+       IEXTEN                        = 0x8000
+       IFF_ADDRCONF                  = 0x80000
+       IFF_ALLMULTI                  = 0x200
+       IFF_ANYCAST                   = 0x400000
+       IFF_BROADCAST                 = 0x2
+       IFF_CANTCHANGE                = 0x7f203003b5a
+       IFF_COS_ENABLED               = 0x200000000
+       IFF_DEBUG                     = 0x4
+       IFF_DEPRECATED                = 0x40000
+       IFF_DHCPRUNNING               = 0x4000
+       IFF_DUPLICATE                 = 0x4000000000
+       IFF_FAILED                    = 0x10000000
+       IFF_FIXEDMTU                  = 0x1000000000
+       IFF_INACTIVE                  = 0x40000000
+       IFF_INTELLIGENT               = 0x400
+       IFF_IPMP                      = 0x8000000000
+       IFF_IPMP_CANTCHANGE           = 0x10000000
+       IFF_IPMP_INVALID              = 0x1ec200080
+       IFF_IPV4                      = 0x1000000
+       IFF_IPV6                      = 0x2000000
+       IFF_L3PROTECT                 = 0x40000000000
+       IFF_LOOPBACK                  = 0x8
+       IFF_MULTICAST                 = 0x800
+       IFF_MULTI_BCAST               = 0x1000
+       IFF_NOACCEPT                  = 0x4000000
+       IFF_NOARP                     = 0x80
+       IFF_NOFAILOVER                = 0x8000000
+       IFF_NOLINKLOCAL               = 0x20000000000
+       IFF_NOLOCAL                   = 0x20000
+       IFF_NONUD                     = 0x200000
+       IFF_NORTEXCH                  = 0x800000
+       IFF_NOTRAILERS                = 0x20
+       IFF_NOXMIT                    = 0x10000
+       IFF_OFFLINE                   = 0x80000000
+       IFF_POINTOPOINT               = 0x10
+       IFF_PREFERRED                 = 0x400000000
+       IFF_PRIVATE                   = 0x8000
+       IFF_PROMISC                   = 0x100
+       IFF_ROUTER                    = 0x100000
+       IFF_RUNNING                   = 0x40
+       IFF_STANDBY                   = 0x20000000
+       IFF_TEMPORARY                 = 0x800000000
+       IFF_UNNUMBERED                = 0x2000
+       IFF_UP                        = 0x1
+       IFF_VIRTUAL                   = 0x2000000000
+       IFF_VRRP                      = 0x10000000000
+       IFF_XRESOLV                   = 0x100000000
+       IFNAMSIZ                      = 0x10
+       IFT_1822                      = 0x2
+       IFT_6TO4                      = 0xca
+       IFT_AAL5                      = 0x31
+       IFT_ARCNET                    = 0x23
+       IFT_ARCNETPLUS                = 0x24
+       IFT_ATM                       = 0x25
+       IFT_CEPT                      = 0x13
+       IFT_DS3                       = 0x1e
+       IFT_EON                       = 0x19
+       IFT_ETHER                     = 0x6
+       IFT_FDDI                      = 0xf
+       IFT_FRELAY                    = 0x20
+       IFT_FRELAYDCE                 = 0x2c
+       IFT_HDH1822                   = 0x3
+       IFT_HIPPI                     = 0x2f
+       IFT_HSSI                      = 0x2e
+       IFT_HY                        = 0xe
+       IFT_IB                        = 0xc7
+       IFT_IPV4                      = 0xc8
+       IFT_IPV6                      = 0xc9
+       IFT_ISDNBASIC                 = 0x14
+       IFT_ISDNPRIMARY               = 0x15
+       IFT_ISO88022LLC               = 0x29
+       IFT_ISO88023                  = 0x7
+       IFT_ISO88024                  = 0x8
+       IFT_ISO88025                  = 0x9
+       IFT_ISO88026                  = 0xa
+       IFT_LAPB                      = 0x10
+       IFT_LOCALTALK                 = 0x2a
+       IFT_LOOP                      = 0x18
+       IFT_MIOX25                    = 0x26
+       IFT_MODEM                     = 0x30
+       IFT_NSIP                      = 0x1b
+       IFT_OTHER                     = 0x1
+       IFT_P10                       = 0xc
+       IFT_P80                       = 0xd
+       IFT_PARA                      = 0x22
+       IFT_PPP                       = 0x17
+       IFT_PROPMUX                   = 0x36
+       IFT_PROPVIRTUAL               = 0x35
+       IFT_PTPSERIAL                 = 0x16
+       IFT_RS232                     = 0x21
+       IFT_SDLC                      = 0x11
+       IFT_SIP                       = 0x1f
+       IFT_SLIP                      = 0x1c
+       IFT_SMDSDXI                   = 0x2b
+       IFT_SMDSICIP                  = 0x34
+       IFT_SONET                     = 0x27
+       IFT_SONETPATH                 = 0x32
+       IFT_SONETVT                   = 0x33
+       IFT_STARLAN                   = 0xb
+       IFT_T1                        = 0x12
+       IFT_ULTRA                     = 0x1d
+       IFT_V35                       = 0x2d
+       IFT_X25                       = 0x5
+       IFT_X25DDN                    = 0x4
+       IFT_X25PLE                    = 0x28
+       IFT_XETHER                    = 0x1a
+       IGNBRK                        = 0x1
+       IGNCR                         = 0x80
+       IGNPAR                        = 0x4
+       IMAXBEL                       = 0x2000
+       INLCR                         = 0x40
+       INPCK                         = 0x10
+       IN_AUTOCONF_MASK              = 0xffff0000
+       IN_AUTOCONF_NET               = 0xa9fe0000
+       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_CLASSE_NET                 = 0xffffffff
+       IN_LOOPBACKNET                = 0x7f
+       IN_PRIVATE12_MASK             = 0xfff00000
+       IN_PRIVATE12_NET              = 0xac100000
+       IN_PRIVATE16_MASK             = 0xffff0000
+       IN_PRIVATE16_NET              = 0xc0a80000
+       IN_PRIVATE8_MASK              = 0xff000000
+       IN_PRIVATE8_NET               = 0xa000000
+       IPPROTO_AH                    = 0x33
+       IPPROTO_DSTOPTS               = 0x3c
+       IPPROTO_EGP                   = 0x8
+       IPPROTO_ENCAP                 = 0x4
+       IPPROTO_EON                   = 0x50
+       IPPROTO_ESP                   = 0x32
+       IPPROTO_FRAGMENT              = 0x2c
+       IPPROTO_GGP                   = 0x3
+       IPPROTO_HELLO                 = 0x3f
+       IPPROTO_HOPOPTS               = 0x0
+       IPPROTO_ICMP                  = 0x1
+       IPPROTO_ICMPV6                = 0x3a
+       IPPROTO_IDP                   = 0x16
+       IPPROTO_IGMP                  = 0x2
+       IPPROTO_IP                    = 0x0
+       IPPROTO_IPV6                  = 0x29
+       IPPROTO_MAX                   = 0x100
+       IPPROTO_ND                    = 0x4d
+       IPPROTO_NONE                  = 0x3b
+       IPPROTO_OSPF                  = 0x59
+       IPPROTO_PIM                   = 0x67
+       IPPROTO_PUP                   = 0xc
+       IPPROTO_RAW                   = 0xff
+       IPPROTO_ROUTING               = 0x2b
+       IPPROTO_RSVP                  = 0x2e
+       IPPROTO_SCTP                  = 0x84
+       IPPROTO_TCP                   = 0x6
+       IPPROTO_UDP                   = 0x11
+       IPV6_ADD_MEMBERSHIP           = 0x9
+       IPV6_BOUND_IF                 = 0x41
+       IPV6_CHECKSUM                 = 0x18
+       IPV6_DONTFRAG                 = 0x21
+       IPV6_DROP_MEMBERSHIP          = 0xa
+       IPV6_DSTOPTS                  = 0xf
+       IPV6_FLOWINFO_FLOWLABEL       = 0xffff0f00
+       IPV6_FLOWINFO_TCLASS          = 0xf00f
+       IPV6_HOPLIMIT                 = 0xc
+       IPV6_HOPOPTS                  = 0xe
+       IPV6_JOIN_GROUP               = 0x9
+       IPV6_LEAVE_GROUP              = 0xa
+       IPV6_MULTICAST_HOPS           = 0x7
+       IPV6_MULTICAST_IF             = 0x6
+       IPV6_MULTICAST_LOOP           = 0x8
+       IPV6_NEXTHOP                  = 0xd
+       IPV6_PAD1_OPT                 = 0x0
+       IPV6_PATHMTU                  = 0x25
+       IPV6_PKTINFO                  = 0xb
+       IPV6_PREFER_SRC_CGA           = 0x20
+       IPV6_PREFER_SRC_CGADEFAULT    = 0x10
+       IPV6_PREFER_SRC_CGAMASK       = 0x30
+       IPV6_PREFER_SRC_COA           = 0x2
+       IPV6_PREFER_SRC_DEFAULT       = 0x15
+       IPV6_PREFER_SRC_HOME          = 0x1
+       IPV6_PREFER_SRC_MASK          = 0x3f
+       IPV6_PREFER_SRC_MIPDEFAULT    = 0x1
+       IPV6_PREFER_SRC_MIPMASK       = 0x3
+       IPV6_PREFER_SRC_NONCGA        = 0x10
+       IPV6_PREFER_SRC_PUBLIC        = 0x4
+       IPV6_PREFER_SRC_TMP           = 0x8
+       IPV6_PREFER_SRC_TMPDEFAULT    = 0x4
+       IPV6_PREFER_SRC_TMPMASK       = 0xc
+       IPV6_RECVDSTOPTS              = 0x28
+       IPV6_RECVHOPLIMIT             = 0x13
+       IPV6_RECVHOPOPTS              = 0x14
+       IPV6_RECVPATHMTU              = 0x24
+       IPV6_RECVPKTINFO              = 0x12
+       IPV6_RECVRTHDR                = 0x16
+       IPV6_RECVRTHDRDSTOPTS         = 0x17
+       IPV6_RECVTCLASS               = 0x19
+       IPV6_RTHDR                    = 0x10
+       IPV6_RTHDRDSTOPTS             = 0x11
+       IPV6_RTHDR_TYPE_0             = 0x0
+       IPV6_SEC_OPT                  = 0x22
+       IPV6_SRC_PREFERENCES          = 0x23
+       IPV6_TCLASS                   = 0x26
+       IPV6_UNICAST_HOPS             = 0x5
+       IPV6_UNSPEC_SRC               = 0x42
+       IPV6_USE_MIN_MTU              = 0x20
+       IPV6_V6ONLY                   = 0x27
+       IP_ADD_MEMBERSHIP             = 0x13
+       IP_ADD_SOURCE_MEMBERSHIP      = 0x17
+       IP_BLOCK_SOURCE               = 0x15
+       IP_BOUND_IF                   = 0x41
+       IP_BROADCAST                  = 0x106
+       IP_BROADCAST_TTL              = 0x43
+       IP_DEFAULT_MULTICAST_LOOP     = 0x1
+       IP_DEFAULT_MULTICAST_TTL      = 0x1
+       IP_DF                         = 0x4000
+       IP_DHCPINIT_IF                = 0x45
+       IP_DONTFRAG                   = 0x1b
+       IP_DONTROUTE                  = 0x105
+       IP_DROP_MEMBERSHIP            = 0x14
+       IP_DROP_SOURCE_MEMBERSHIP     = 0x18
+       IP_HDRINCL                    = 0x2
+       IP_MAXPACKET                  = 0xffff
+       IP_MF                         = 0x2000
+       IP_MSS                        = 0x240
+       IP_MULTICAST_IF               = 0x10
+       IP_MULTICAST_LOOP             = 0x12
+       IP_MULTICAST_TTL              = 0x11
+       IP_NEXTHOP                    = 0x19
+       IP_OPTIONS                    = 0x1
+       IP_PKTINFO                    = 0x1a
+       IP_RECVDSTADDR                = 0x7
+       IP_RECVIF                     = 0x9
+       IP_RECVOPTS                   = 0x5
+       IP_RECVPKTINFO                = 0x1a
+       IP_RECVRETOPTS                = 0x6
+       IP_RECVSLLA                   = 0xa
+       IP_RECVTTL                    = 0xb
+       IP_RETOPTS                    = 0x8
+       IP_REUSEADDR                  = 0x104
+       IP_SEC_OPT                    = 0x22
+       IP_TOS                        = 0x3
+       IP_TTL                        = 0x4
+       IP_UNBLOCK_SOURCE             = 0x16
+       IP_UNSPEC_SRC                 = 0x42
+       ISIG                          = 0x1
+       ISTRIP                        = 0x20
+       IXANY                         = 0x800
+       IXOFF                         = 0x1000
+       IXON                          = 0x400
+       MADV_ACCESS_DEFAULT           = 0x6
+       MADV_ACCESS_LWP               = 0x7
+       MADV_ACCESS_MANY              = 0x8
+       MADV_DONTNEED                 = 0x4
+       MADV_FREE                     = 0x5
+       MADV_NORMAL                   = 0x0
+       MADV_RANDOM                   = 0x1
+       MADV_SEQUENTIAL               = 0x2
+       MADV_WILLNEED                 = 0x3
+       MAP_32BIT                     = 0x80
+       MAP_ALIGN                     = 0x200
+       MAP_ANON                      = 0x100
+       MAP_ANONYMOUS                 = 0x100
+       MAP_FIXED                     = 0x10
+       MAP_INITDATA                  = 0x800
+       MAP_NORESERVE                 = 0x40
+       MAP_PRIVATE                   = 0x2
+       MAP_RENAME                    = 0x20
+       MAP_SHARED                    = 0x1
+       MAP_TEXT                      = 0x400
+       MAP_TYPE                      = 0xf
+       MCL_CURRENT                   = 0x1
+       MCL_FUTURE                    = 0x2
+       MSG_CTRUNC                    = 0x10
+       MSG_DONTROUTE                 = 0x4
+       MSG_DONTWAIT                  = 0x80
+       MSG_DUPCTRL                   = 0x800
+       MSG_EOR                       = 0x8
+       MSG_MAXIOVLEN                 = 0x10
+       MSG_NOTIFICATION              = 0x100
+       MSG_OOB                       = 0x1
+       MSG_PEEK                      = 0x2
+       MSG_TRUNC                     = 0x20
+       MSG_WAITALL                   = 0x40
+       MSG_XPG4_2                    = 0x8000
+       MS_ASYNC                      = 0x1
+       MS_INVALIDATE                 = 0x2
+       MS_OLDSYNC                    = 0x0
+       MS_SYNC                       = 0x4
+       M_FLUSH                       = 0x86
+       NOFLSH                        = 0x80
+       OCRNL                         = 0x8
+       OFDEL                         = 0x80
+       OFILL                         = 0x40
+       ONLCR                         = 0x4
+       ONLRET                        = 0x20
+       ONOCR                         = 0x10
+       OPENFAIL                      = -0x1
+       OPOST                         = 0x1
+       O_ACCMODE                     = 0x600003
+       O_APPEND                      = 0x8
+       O_CLOEXEC                     = 0x800000
+       O_CREAT                       = 0x100
+       O_DSYNC                       = 0x40
+       O_EXCL                        = 0x400
+       O_EXEC                        = 0x400000
+       O_LARGEFILE                   = 0x2000
+       O_NDELAY                      = 0x4
+       O_NOCTTY                      = 0x800
+       O_NOFOLLOW                    = 0x20000
+       O_NOLINKS                     = 0x40000
+       O_NONBLOCK                    = 0x80
+       O_RDONLY                      = 0x0
+       O_RDWR                        = 0x2
+       O_RSYNC                       = 0x8000
+       O_SEARCH                      = 0x200000
+       O_SIOCGIFCONF                 = -0x3ff796ec
+       O_SIOCGLIFCONF                = -0x3fef9688
+       O_SYNC                        = 0x10
+       O_TRUNC                       = 0x200
+       O_WRONLY                      = 0x1
+       O_XATTR                       = 0x4000
+       PARENB                        = 0x100
+       PAREXT                        = 0x100000
+       PARMRK                        = 0x8
+       PARODD                        = 0x200
+       PENDIN                        = 0x4000
+       PRIO_PGRP                     = 0x1
+       PRIO_PROCESS                  = 0x0
+       PRIO_USER                     = 0x2
+       PROT_EXEC                     = 0x4
+       PROT_NONE                     = 0x0
+       PROT_READ                     = 0x1
+       PROT_WRITE                    = 0x2
+       RLIMIT_AS                     = 0x6
+       RLIMIT_CORE                   = 0x4
+       RLIMIT_CPU                    = 0x0
+       RLIMIT_DATA                   = 0x2
+       RLIMIT_FSIZE                  = 0x1
+       RLIMIT_NOFILE                 = 0x5
+       RLIMIT_STACK                  = 0x3
+       RLIM_INFINITY                 = -0x3
+       RTAX_AUTHOR                   = 0x6
+       RTAX_BRD                      = 0x7
+       RTAX_DST                      = 0x0
+       RTAX_GATEWAY                  = 0x1
+       RTAX_GENMASK                  = 0x3
+       RTAX_IFA                      = 0x5
+       RTAX_IFP                      = 0x4
+       RTAX_MAX                      = 0x9
+       RTAX_NETMASK                  = 0x2
+       RTAX_SRC                      = 0x8
+       RTA_AUTHOR                    = 0x40
+       RTA_BRD                       = 0x80
+       RTA_DST                       = 0x1
+       RTA_GATEWAY                   = 0x2
+       RTA_GENMASK                   = 0x8
+       RTA_IFA                       = 0x20
+       RTA_IFP                       = 0x10
+       RTA_NETMASK                   = 0x4
+       RTA_NUMBITS                   = 0x9
+       RTA_SRC                       = 0x100
+       RTF_BLACKHOLE                 = 0x1000
+       RTF_CLONING                   = 0x100
+       RTF_DONE                      = 0x40
+       RTF_DYNAMIC                   = 0x10
+       RTF_GATEWAY                   = 0x2
+       RTF_HOST                      = 0x4
+       RTF_INDIRECT                  = 0x40000
+       RTF_KERNEL                    = 0x80000
+       RTF_LLINFO                    = 0x400
+       RTF_MASK                      = 0x80
+       RTF_MODIFIED                  = 0x20
+       RTF_MULTIRT                   = 0x10000
+       RTF_PRIVATE                   = 0x2000
+       RTF_PROTO1                    = 0x8000
+       RTF_PROTO2                    = 0x4000
+       RTF_REJECT                    = 0x8
+       RTF_SETSRC                    = 0x20000
+       RTF_STATIC                    = 0x800
+       RTF_UP                        = 0x1
+       RTF_XRESOLVE                  = 0x200
+       RTF_ZONE                      = 0x100000
+       RTM_ADD                       = 0x1
+       RTM_CHANGE                    = 0x3
+       RTM_CHGADDR                   = 0xf
+       RTM_DELADDR                   = 0xd
+       RTM_DELETE                    = 0x2
+       RTM_FREEADDR                  = 0x10
+       RTM_GET                       = 0x4
+       RTM_IFINFO                    = 0xe
+       RTM_LOCK                      = 0x8
+       RTM_LOSING                    = 0x5
+       RTM_MISS                      = 0x7
+       RTM_NEWADDR                   = 0xc
+       RTM_OLDADD                    = 0x9
+       RTM_OLDDEL                    = 0xa
+       RTM_REDIRECT                  = 0x6
+       RTM_RESOLVE                   = 0xb
+       RTM_VERSION                   = 0x3
+       RTV_EXPIRE                    = 0x4
+       RTV_HOPCOUNT                  = 0x2
+       RTV_MTU                       = 0x1
+       RTV_RPIPE                     = 0x8
+       RTV_RTT                       = 0x40
+       RTV_RTTVAR                    = 0x80
+       RTV_SPIPE                     = 0x10
+       RTV_SSTHRESH                  = 0x20
+       RT_AWARE                      = 0x1
+       RUSAGE_CHILDREN               = -0x1
+       RUSAGE_SELF                   = 0x0
+       SCM_RIGHTS                    = 0x1010
+       SCM_TIMESTAMP                 = 0x1013
+       SCM_UCRED                     = 0x1012
+       SHUT_RD                       = 0x0
+       SHUT_RDWR                     = 0x2
+       SHUT_WR                       = 0x1
+       SIG2STR_MAX                   = 0x20
+       SIOCADDMULTI                  = -0x7fdf96cf
+       SIOCADDRT                     = -0x7fcf8df6
+       SIOCATMARK                    = 0x40047307
+       SIOCDARP                      = -0x7fdb96e0
+       SIOCDELMULTI                  = -0x7fdf96ce
+       SIOCDELRT                     = -0x7fcf8df5
+       SIOCDXARP                     = -0x7fff9658
+       SIOCGARP                      = -0x3fdb96e1
+       SIOCGDSTINFO                  = -0x3fff965c
+       SIOCGENADDR                   = -0x3fdf96ab
+       SIOCGENPSTATS                 = -0x3fdf96c7
+       SIOCGETLSGCNT                 = -0x3fef8deb
+       SIOCGETNAME                   = 0x40107334
+       SIOCGETPEER                   = 0x40107335
+       SIOCGETPROP                   = -0x3fff8f44
+       SIOCGETSGCNT                  = -0x3feb8deb
+       SIOCGETSYNC                   = -0x3fdf96d3
+       SIOCGETVIFCNT                 = -0x3feb8dec
+       SIOCGHIWAT                    = 0x40047301
+       SIOCGIFADDR                   = -0x3fdf96f3
+       SIOCGIFBRDADDR                = -0x3fdf96e9
+       SIOCGIFCONF                   = -0x3ff796a4
+       SIOCGIFDSTADDR                = -0x3fdf96f1
+       SIOCGIFFLAGS                  = -0x3fdf96ef
+       SIOCGIFHWADDR                 = -0x3fdf9647
+       SIOCGIFINDEX                  = -0x3fdf96a6
+       SIOCGIFMEM                    = -0x3fdf96ed
+       SIOCGIFMETRIC                 = -0x3fdf96e5
+       SIOCGIFMTU                    = -0x3fdf96ea
+       SIOCGIFMUXID                  = -0x3fdf96a8
+       SIOCGIFNETMASK                = -0x3fdf96e7
+       SIOCGIFNUM                    = 0x40046957
+       SIOCGIP6ADDRPOLICY            = -0x3fff965e
+       SIOCGIPMSFILTER               = -0x3ffb964c
+       SIOCGLIFADDR                  = -0x3f87968f
+       SIOCGLIFBINDING               = -0x3f879666
+       SIOCGLIFBRDADDR               = -0x3f879685
+       SIOCGLIFCONF                  = -0x3fef965b
+       SIOCGLIFDADSTATE              = -0x3f879642
+       SIOCGLIFDSTADDR               = -0x3f87968d
+       SIOCGLIFFLAGS                 = -0x3f87968b
+       SIOCGLIFGROUPINFO             = -0x3f4b9663
+       SIOCGLIFGROUPNAME             = -0x3f879664
+       SIOCGLIFHWADDR                = -0x3f879640
+       SIOCGLIFINDEX                 = -0x3f87967b
+       SIOCGLIFLNKINFO               = -0x3f879674
+       SIOCGLIFMETRIC                = -0x3f879681
+       SIOCGLIFMTU                   = -0x3f879686
+       SIOCGLIFMUXID                 = -0x3f87967d
+       SIOCGLIFNETMASK               = -0x3f879683
+       SIOCGLIFNUM                   = -0x3ff3967e
+       SIOCGLIFSRCOF                 = -0x3fef964f
+       SIOCGLIFSUBNET                = -0x3f879676
+       SIOCGLIFTOKEN                 = -0x3f879678
+       SIOCGLIFUSESRC                = -0x3f879651
+       SIOCGLIFZONE                  = -0x3f879656
+       SIOCGLOWAT                    = 0x40047303
+       SIOCGMSFILTER                 = -0x3ffb964e
+       SIOCGPGRP                     = 0x40047309
+       SIOCGSTAMP                    = -0x3fef9646
+       SIOCGXARP                     = -0x3fff9659
+       SIOCIFDETACH                  = -0x7fdf96c8
+       SIOCILB                       = -0x3ffb9645
+       SIOCLIFADDIF                  = -0x3f879691
+       SIOCLIFDELND                  = -0x7f879673
+       SIOCLIFGETND                  = -0x3f879672
+       SIOCLIFREMOVEIF               = -0x7f879692
+       SIOCLIFSETND                  = -0x7f879671
+       SIOCLOWER                     = -0x7fdf96d7
+       SIOCSARP                      = -0x7fdb96e2
+       SIOCSCTPGOPT                  = -0x3fef9653
+       SIOCSCTPPEELOFF               = -0x3ffb9652
+       SIOCSCTPSOPT                  = -0x7fef9654
+       SIOCSENABLESDP                = -0x3ffb9649
+       SIOCSETPROP                   = -0x7ffb8f43
+       SIOCSETSYNC                   = -0x7fdf96d4
+       SIOCSHIWAT                    = -0x7ffb8d00
+       SIOCSIFADDR                   = -0x7fdf96f4
+       SIOCSIFBRDADDR                = -0x7fdf96e8
+       SIOCSIFDSTADDR                = -0x7fdf96f2
+       SIOCSIFFLAGS                  = -0x7fdf96f0
+       SIOCSIFINDEX                  = -0x7fdf96a5
+       SIOCSIFMEM                    = -0x7fdf96ee
+       SIOCSIFMETRIC                 = -0x7fdf96e4
+       SIOCSIFMTU                    = -0x7fdf96eb
+       SIOCSIFMUXID                  = -0x7fdf96a7
+       SIOCSIFNAME                   = -0x7fdf96b7
+       SIOCSIFNETMASK                = -0x7fdf96e6
+       SIOCSIP6ADDRPOLICY            = -0x7fff965d
+       SIOCSIPMSFILTER               = -0x7ffb964b
+       SIOCSLGETREQ                  = -0x3fdf96b9
+       SIOCSLIFADDR                  = -0x7f879690
+       SIOCSLIFBRDADDR               = -0x7f879684
+       SIOCSLIFDSTADDR               = -0x7f87968e
+       SIOCSLIFFLAGS                 = -0x7f87968c
+       SIOCSLIFGROUPNAME             = -0x7f879665
+       SIOCSLIFINDEX                 = -0x7f87967a
+       SIOCSLIFLNKINFO               = -0x7f879675
+       SIOCSLIFMETRIC                = -0x7f879680
+       SIOCSLIFMTU                   = -0x7f879687
+       SIOCSLIFMUXID                 = -0x7f87967c
+       SIOCSLIFNAME                  = -0x3f87967f
+       SIOCSLIFNETMASK               = -0x7f879682
+       SIOCSLIFPREFIX                = -0x3f879641
+       SIOCSLIFSUBNET                = -0x7f879677
+       SIOCSLIFTOKEN                 = -0x7f879679
+       SIOCSLIFUSESRC                = -0x7f879650
+       SIOCSLIFZONE                  = -0x7f879655
+       SIOCSLOWAT                    = -0x7ffb8cfe
+       SIOCSLSTAT                    = -0x7fdf96b8
+       SIOCSMSFILTER                 = -0x7ffb964d
+       SIOCSPGRP                     = -0x7ffb8cf8
+       SIOCSPROMISC                  = -0x7ffb96d0
+       SIOCSQPTR                     = -0x3ffb9648
+       SIOCSSDSTATS                  = -0x3fdf96d2
+       SIOCSSESTATS                  = -0x3fdf96d1
+       SIOCSXARP                     = -0x7fff965a
+       SIOCTMYADDR                   = -0x3ff79670
+       SIOCTMYSITE                   = -0x3ff7966e
+       SIOCTONLINK                   = -0x3ff7966f
+       SIOCUPPER                     = -0x7fdf96d8
+       SIOCX25RCV                    = -0x3fdf96c4
+       SIOCX25TBL                    = -0x3fdf96c3
+       SIOCX25XMT                    = -0x3fdf96c5
+       SIOCXPROTO                    = 0x20007337
+       SOCK_CLOEXEC                  = 0x80000
+       SOCK_DGRAM                    = 0x1
+       SOCK_NDELAY                   = 0x200000
+       SOCK_NONBLOCK                 = 0x100000
+       SOCK_RAW                      = 0x4
+       SOCK_RDM                      = 0x5
+       SOCK_SEQPACKET                = 0x6
+       SOCK_STREAM                   = 0x2
+       SOCK_TYPE_MASK                = 0xffff
+       SOL_FILTER                    = 0xfffc
+       SOL_PACKET                    = 0xfffd
+       SOL_ROUTE                     = 0xfffe
+       SOL_SOCKET                    = 0xffff
+       SOMAXCONN                     = 0x80
+       SO_ACCEPTCONN                 = 0x2
+       SO_ALL                        = 0x3f
+       SO_ALLZONES                   = 0x1014
+       SO_ANON_MLP                   = 0x100a
+       SO_ATTACH_FILTER              = 0x40000001
+       SO_BAND                       = 0x4000
+       SO_BROADCAST                  = 0x20
+       SO_COPYOPT                    = 0x80000
+       SO_DEBUG                      = 0x1
+       SO_DELIM                      = 0x8000
+       SO_DETACH_FILTER              = 0x40000002
+       SO_DGRAM_ERRIND               = 0x200
+       SO_DOMAIN                     = 0x100c
+       SO_DONTLINGER                 = -0x81
+       SO_DONTROUTE                  = 0x10
+       SO_ERROPT                     = 0x40000
+       SO_ERROR                      = 0x1007
+       SO_EXCLBIND                   = 0x1015
+       SO_HIWAT                      = 0x10
+       SO_ISNTTY                     = 0x800
+       SO_ISTTY                      = 0x400
+       SO_KEEPALIVE                  = 0x8
+       SO_LINGER                     = 0x80
+       SO_LOWAT                      = 0x20
+       SO_MAC_EXEMPT                 = 0x100b
+       SO_MAC_IMPLICIT               = 0x1016
+       SO_MAXBLK                     = 0x100000
+       SO_MAXPSZ                     = 0x8
+       SO_MINPSZ                     = 0x4
+       SO_MREADOFF                   = 0x80
+       SO_MREADON                    = 0x40
+       SO_NDELOFF                    = 0x200
+       SO_NDELON                     = 0x100
+       SO_NODELIM                    = 0x10000
+       SO_OOBINLINE                  = 0x100
+       SO_PROTOTYPE                  = 0x1009
+       SO_RCVBUF                     = 0x1002
+       SO_RCVLOWAT                   = 0x1004
+       SO_RCVPSH                     = 0x100d
+       SO_RCVTIMEO                   = 0x1006
+       SO_READOPT                    = 0x1
+       SO_RECVUCRED                  = 0x400
+       SO_REUSEADDR                  = 0x4
+       SO_SECATTR                    = 0x1011
+       SO_SNDBUF                     = 0x1001
+       SO_SNDLOWAT                   = 0x1003
+       SO_SNDTIMEO                   = 0x1005
+       SO_STRHOLD                    = 0x20000
+       SO_TAIL                       = 0x200000
+       SO_TIMESTAMP                  = 0x1013
+       SO_TONSTOP                    = 0x2000
+       SO_TOSTOP                     = 0x1000
+       SO_TYPE                       = 0x1008
+       SO_USELOOPBACK                = 0x40
+       SO_VRRP                       = 0x1017
+       SO_WROFF                      = 0x2
+       TCFLSH                        = 0x5407
+       TCGETA                        = 0x5401
+       TCGETS                        = 0x540d
+       TCIFLUSH                      = 0x0
+       TCIOFLUSH                     = 0x2
+       TCOFLUSH                      = 0x1
+       TCP_ABORT_THRESHOLD           = 0x11
+       TCP_ANONPRIVBIND              = 0x20
+       TCP_CONN_ABORT_THRESHOLD      = 0x13
+       TCP_CONN_NOTIFY_THRESHOLD     = 0x12
+       TCP_CORK                      = 0x18
+       TCP_EXCLBIND                  = 0x21
+       TCP_INIT_CWND                 = 0x15
+       TCP_KEEPALIVE                 = 0x8
+       TCP_KEEPALIVE_ABORT_THRESHOLD = 0x17
+       TCP_KEEPALIVE_THRESHOLD       = 0x16
+       TCP_KEEPCNT                   = 0x23
+       TCP_KEEPIDLE                  = 0x22
+       TCP_KEEPINTVL                 = 0x24
+       TCP_LINGER2                   = 0x1c
+       TCP_MAXSEG                    = 0x2
+       TCP_MSS                       = 0x218
+       TCP_NODELAY                   = 0x1
+       TCP_NOTIFY_THRESHOLD          = 0x10
+       TCP_RECVDSTADDR               = 0x14
+       TCP_RTO_INITIAL               = 0x19
+       TCP_RTO_MAX                   = 0x1b
+       TCP_RTO_MIN                   = 0x1a
+       TCSAFLUSH                     = 0x5410
+       TCSBRK                        = 0x5405
+       TCSETA                        = 0x5402
+       TCSETAF                       = 0x5404
+       TCSETAW                       = 0x5403
+       TCSETS                        = 0x540e
+       TCSETSF                       = 0x5410
+       TCSETSW                       = 0x540f
+       TCXONC                        = 0x5406
+       TIOC                          = 0x5400
+       TIOCCBRK                      = 0x747a
+       TIOCCDTR                      = 0x7478
+       TIOCCILOOP                    = 0x746c
+       TIOCEXCL                      = 0x740d
+       TIOCFLUSH                     = 0x7410
+       TIOCGETC                      = 0x7412
+       TIOCGETD                      = 0x7400
+       TIOCGETP                      = 0x7408
+       TIOCGLTC                      = 0x7474
+       TIOCGPGRP                     = 0x7414
+       TIOCGPPS                      = 0x547d
+       TIOCGPPSEV                    = 0x547f
+       TIOCGSID                      = 0x7416
+       TIOCGSOFTCAR                  = 0x5469
+       TIOCGWINSZ                    = 0x5468
+       TIOCHPCL                      = 0x7402
+       TIOCKBOF                      = 0x5409
+       TIOCKBON                      = 0x5408
+       TIOCLBIC                      = 0x747e
+       TIOCLBIS                      = 0x747f
+       TIOCLGET                      = 0x747c
+       TIOCLSET                      = 0x747d
+       TIOCMBIC                      = 0x741c
+       TIOCMBIS                      = 0x741b
+       TIOCMGET                      = 0x741d
+       TIOCMSET                      = 0x741a
+       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                     = 0x7471
+       TIOCNXCL                      = 0x740e
+       TIOCOUTQ                      = 0x7473
+       TIOCREMOTE                    = 0x741e
+       TIOCSBRK                      = 0x747b
+       TIOCSCTTY                     = 0x7484
+       TIOCSDTR                      = 0x7479
+       TIOCSETC                      = 0x7411
+       TIOCSETD                      = 0x7401
+       TIOCSETN                      = 0x740a
+       TIOCSETP                      = 0x7409
+       TIOCSIGNAL                    = 0x741f
+       TIOCSILOOP                    = 0x746d
+       TIOCSLTC                      = 0x7475
+       TIOCSPGRP                     = 0x7415
+       TIOCSPPS                      = 0x547e
+       TIOCSSOFTCAR                  = 0x546a
+       TIOCSTART                     = 0x746e
+       TIOCSTI                       = 0x7417
+       TIOCSTOP                      = 0x746f
+       TIOCSWINSZ                    = 0x5467
+       TOSTOP                        = 0x100
+       VCEOF                         = 0x8
+       VCEOL                         = 0x9
+       VDISCARD                      = 0xd
+       VDSUSP                        = 0xb
+       VEOF                          = 0x4
+       VEOL                          = 0x5
+       VEOL2                         = 0x6
+       VERASE                        = 0x2
+       VINTR                         = 0x0
+       VKILL                         = 0x3
+       VLNEXT                        = 0xf
+       VMIN                          = 0x4
+       VQUIT                         = 0x1
+       VREPRINT                      = 0xc
+       VSTART                        = 0x8
+       VSTATUS                       = 0x10
+       VSTOP                         = 0x9
+       VSUSP                         = 0xa
+       VSWTCH                        = 0x7
+       VT0                           = 0x0
+       VT1                           = 0x4000
+       VTDLY                         = 0x4000
+       VTIME                         = 0x5
+       VWERASE                       = 0xe
+       WCONTFLG                      = 0xffff
+       WCONTINUED                    = 0x8
+       WCOREFLG                      = 0x80
+       WEXITED                       = 0x1
+       WNOHANG                       = 0x40
+       WNOWAIT                       = 0x80
+       WOPTMASK                      = 0xcf
+       WRAP                          = 0x20000
+       WSIGMASK                      = 0x7f
+       WSTOPFLG                      = 0x7f
+       WSTOPPED                      = 0x4
+       WTRAPPED                      = 0x2
+       WUNTRACED                     = 0x4
+)
+
+// Errors
+const (
+       E2BIG           = syscall.Errno(0x7)
+       EACCES          = syscall.Errno(0xd)
+       EADDRINUSE      = syscall.Errno(0x7d)
+       EADDRNOTAVAIL   = syscall.Errno(0x7e)
+       EADV            = syscall.Errno(0x44)
+       EAFNOSUPPORT    = syscall.Errno(0x7c)
+       EAGAIN          = syscall.Errno(0xb)
+       EALREADY        = syscall.Errno(0x95)
+       EBADE           = syscall.Errno(0x32)
+       EBADF           = syscall.Errno(0x9)
+       EBADFD          = syscall.Errno(0x51)
+       EBADMSG         = syscall.Errno(0x4d)
+       EBADR           = syscall.Errno(0x33)
+       EBADRQC         = syscall.Errno(0x36)
+       EBADSLT         = syscall.Errno(0x37)
+       EBFONT          = syscall.Errno(0x39)
+       EBUSY           = syscall.Errno(0x10)
+       ECANCELED       = syscall.Errno(0x2f)
+       ECHILD          = syscall.Errno(0xa)
+       ECHRNG          = syscall.Errno(0x25)
+       ECOMM           = syscall.Errno(0x46)
+       ECONNABORTED    = syscall.Errno(0x82)
+       ECONNREFUSED    = syscall.Errno(0x92)
+       ECONNRESET      = syscall.Errno(0x83)
+       EDEADLK         = syscall.Errno(0x2d)
+       EDEADLOCK       = syscall.Errno(0x38)
+       EDESTADDRREQ    = syscall.Errno(0x60)
+       EDOM            = syscall.Errno(0x21)
+       EDQUOT          = syscall.Errno(0x31)
+       EEXIST          = syscall.Errno(0x11)
+       EFAULT          = syscall.Errno(0xe)
+       EFBIG           = syscall.Errno(0x1b)
+       EHOSTDOWN       = syscall.Errno(0x93)
+       EHOSTUNREACH    = syscall.Errno(0x94)
+       EIDRM           = syscall.Errno(0x24)
+       EILSEQ          = syscall.Errno(0x58)
+       EINPROGRESS     = syscall.Errno(0x96)
+       EINTR           = syscall.Errno(0x4)
+       EINVAL          = syscall.Errno(0x16)
+       EIO             = syscall.Errno(0x5)
+       EISCONN         = syscall.Errno(0x85)
+       EISDIR          = syscall.Errno(0x15)
+       EL2HLT          = syscall.Errno(0x2c)
+       EL2NSYNC        = syscall.Errno(0x26)
+       EL3HLT          = syscall.Errno(0x27)
+       EL3RST          = syscall.Errno(0x28)
+       ELIBACC         = syscall.Errno(0x53)
+       ELIBBAD         = syscall.Errno(0x54)
+       ELIBEXEC        = syscall.Errno(0x57)
+       ELIBMAX         = syscall.Errno(0x56)
+       ELIBSCN         = syscall.Errno(0x55)
+       ELNRNG          = syscall.Errno(0x29)
+       ELOCKUNMAPPED   = syscall.Errno(0x48)
+       ELOOP           = syscall.Errno(0x5a)
+       EMFILE          = syscall.Errno(0x18)
+       EMLINK          = syscall.Errno(0x1f)
+       EMSGSIZE        = syscall.Errno(0x61)
+       EMULTIHOP       = syscall.Errno(0x4a)
+       ENAMETOOLONG    = syscall.Errno(0x4e)
+       ENETDOWN        = syscall.Errno(0x7f)
+       ENETRESET       = syscall.Errno(0x81)
+       ENETUNREACH     = syscall.Errno(0x80)
+       ENFILE          = syscall.Errno(0x17)
+       ENOANO          = syscall.Errno(0x35)
+       ENOBUFS         = syscall.Errno(0x84)
+       ENOCSI          = syscall.Errno(0x2b)
+       ENODATA         = syscall.Errno(0x3d)
+       ENODEV          = syscall.Errno(0x13)
+       ENOENT          = syscall.Errno(0x2)
+       ENOEXEC         = syscall.Errno(0x8)
+       ENOLCK          = syscall.Errno(0x2e)
+       ENOLINK         = syscall.Errno(0x43)
+       ENOMEM          = syscall.Errno(0xc)
+       ENOMSG          = syscall.Errno(0x23)
+       ENONET          = syscall.Errno(0x40)
+       ENOPKG          = syscall.Errno(0x41)
+       ENOPROTOOPT     = syscall.Errno(0x63)
+       ENOSPC          = syscall.Errno(0x1c)
+       ENOSR           = syscall.Errno(0x3f)
+       ENOSTR          = syscall.Errno(0x3c)
+       ENOSYS          = syscall.Errno(0x59)
+       ENOTACTIVE      = syscall.Errno(0x49)
+       ENOTBLK         = syscall.Errno(0xf)
+       ENOTCONN        = syscall.Errno(0x86)
+       ENOTDIR         = syscall.Errno(0x14)
+       ENOTEMPTY       = syscall.Errno(0x5d)
+       ENOTRECOVERABLE = syscall.Errno(0x3b)
+       ENOTSOCK        = syscall.Errno(0x5f)
+       ENOTSUP         = syscall.Errno(0x30)
+       ENOTTY          = syscall.Errno(0x19)
+       ENOTUNIQ        = syscall.Errno(0x50)
+       ENXIO           = syscall.Errno(0x6)
+       EOPNOTSUPP      = syscall.Errno(0x7a)
+       EOVERFLOW       = syscall.Errno(0x4f)
+       EOWNERDEAD      = syscall.Errno(0x3a)
+       EPERM           = syscall.Errno(0x1)
+       EPFNOSUPPORT    = syscall.Errno(0x7b)
+       EPIPE           = syscall.Errno(0x20)
+       EPROTO          = syscall.Errno(0x47)
+       EPROTONOSUPPORT = syscall.Errno(0x78)
+       EPROTOTYPE      = syscall.Errno(0x62)
+       ERANGE          = syscall.Errno(0x22)
+       EREMCHG         = syscall.Errno(0x52)
+       EREMOTE         = syscall.Errno(0x42)
+       ERESTART        = syscall.Errno(0x5b)
+       EROFS           = syscall.Errno(0x1e)
+       ESHUTDOWN       = syscall.Errno(0x8f)
+       ESOCKTNOSUPPORT = syscall.Errno(0x79)
+       ESPIPE          = syscall.Errno(0x1d)
+       ESRCH           = syscall.Errno(0x3)
+       ESRMNT          = syscall.Errno(0x45)
+       ESTALE          = syscall.Errno(0x97)
+       ESTRPIPE        = syscall.Errno(0x5c)
+       ETIME           = syscall.Errno(0x3e)
+       ETIMEDOUT       = syscall.Errno(0x91)
+       ETOOMANYREFS    = syscall.Errno(0x90)
+       ETXTBSY         = syscall.Errno(0x1a)
+       EUNATCH         = syscall.Errno(0x2a)
+       EUSERS          = syscall.Errno(0x5e)
+       EWOULDBLOCK     = syscall.Errno(0xb)
+       EXDEV           = syscall.Errno(0x12)
+       EXFULL          = syscall.Errno(0x34)
+)
+
+// Signals
+const (
+       SIGABRT    = syscall.Signal(0x6)
+       SIGALRM    = syscall.Signal(0xe)
+       SIGBUS     = syscall.Signal(0xa)
+       SIGCANCEL  = syscall.Signal(0x24)
+       SIGCHLD    = syscall.Signal(0x12)
+       SIGCLD     = syscall.Signal(0x12)
+       SIGCONT    = syscall.Signal(0x19)
+       SIGEMT     = syscall.Signal(0x7)
+       SIGFPE     = syscall.Signal(0x8)
+       SIGFREEZE  = syscall.Signal(0x22)
+       SIGHUP     = syscall.Signal(0x1)
+       SIGILL     = syscall.Signal(0x4)
+       SIGINFO    = syscall.Signal(0x29)
+       SIGINT     = syscall.Signal(0x2)
+       SIGIO      = syscall.Signal(0x16)
+       SIGIOT     = syscall.Signal(0x6)
+       SIGJVM1    = syscall.Signal(0x27)
+       SIGJVM2    = syscall.Signal(0x28)
+       SIGKILL    = syscall.Signal(0x9)
+       SIGLOST    = syscall.Signal(0x25)
+       SIGLWP     = syscall.Signal(0x21)
+       SIGPIPE    = syscall.Signal(0xd)
+       SIGPOLL    = syscall.Signal(0x16)
+       SIGPROF    = syscall.Signal(0x1d)
+       SIGPWR     = syscall.Signal(0x13)
+       SIGQUIT    = syscall.Signal(0x3)
+       SIGSEGV    = syscall.Signal(0xb)
+       SIGSTOP    = syscall.Signal(0x17)
+       SIGSYS     = syscall.Signal(0xc)
+       SIGTERM    = syscall.Signal(0xf)
+       SIGTHAW    = syscall.Signal(0x23)
+       SIGTRAP    = syscall.Signal(0x5)
+       SIGTSTP    = syscall.Signal(0x18)
+       SIGTTIN    = syscall.Signal(0x1a)
+       SIGTTOU    = syscall.Signal(0x1b)
+       SIGURG     = syscall.Signal(0x15)
+       SIGUSR1    = syscall.Signal(0x10)
+       SIGUSR2    = syscall.Signal(0x11)
+       SIGVTALRM  = syscall.Signal(0x1c)
+       SIGWAITING = syscall.Signal(0x20)
+       SIGWINCH   = syscall.Signal(0x14)
+       SIGXCPU    = syscall.Signal(0x1e)
+       SIGXFSZ    = syscall.Signal(0x1f)
+       SIGXRES    = syscall.Signal(0x26)
+)
+
+// Error table
+var errors = [...]string{
+       1:   "not owner",
+       2:   "no such file or directory",
+       3:   "no such process",
+       4:   "interrupted system call",
+       5:   "I/O error",
+       6:   "no such device or address",
+       7:   "arg list too long",
+       8:   "exec format error",
+       9:   "bad file number",
+       10:  "no child processes",
+       11:  "resource temporarily unavailable",
+       12:  "not enough space",
+       13:  "permission denied",
+       14:  "bad address",
+       15:  "block device required",
+       16:  "device busy",
+       17:  "file exists",
+       18:  "cross-device link",
+       19:  "no such device",
+       20:  "not a directory",
+       21:  "is a directory",
+       22:  "invalid argument",
+       23:  "file table overflow",
+       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:  "argument out of domain",
+       34:  "result too large",
+       35:  "no message of desired type",
+       36:  "identifier removed",
+       37:  "channel number out of range",
+       38:  "level 2 not synchronized",
+       39:  "level 3 halted",
+       40:  "level 3 reset",
+       41:  "link number out of range",
+       42:  "protocol driver not attached",
+       43:  "no CSI structure available",
+       44:  "level 2 halted",
+       45:  "deadlock situation detected/avoided",
+       46:  "no record locks available",
+       47:  "operation canceled",
+       48:  "operation not supported",
+       49:  "disc quota exceeded",
+       50:  "bad exchange descriptor",
+       51:  "bad request descriptor",
+       52:  "message tables full",
+       53:  "anode table overflow",
+       54:  "bad request code",
+       55:  "invalid slot",
+       56:  "file locking deadlock",
+       57:  "bad font file format",
+       58:  "owner of the lock died",
+       59:  "lock is not recoverable",
+       60:  "not a stream device",
+       61:  "no data available",
+       62:  "timer expired",
+       63:  "out of stream resources",
+       64:  "machine is not on the network",
+       65:  "package not installed",
+       66:  "object is remote",
+       67:  "link has been severed",
+       68:  "advertise error",
+       69:  "srmount error",
+       70:  "communication error on send",
+       71:  "protocol error",
+       72:  "locked lock was unmapped ",
+       73:  "facility is not active",
+       74:  "multihop attempted",
+       77:  "not a data message",
+       78:  "file name too long",
+       79:  "value too large for defined data type",
+       80:  "name not unique on network",
+       81:  "file descriptor in bad state",
+       82:  "remote address changed",
+       83:  "can not access a needed shared library",
+       84:  "accessing a corrupted shared library",
+       85:  ".lib section in a.out corrupted",
+       86:  "attempting to link in more shared libraries than system limit",
+       87:  "can not exec a shared library directly",
+       88:  "illegal byte sequence",
+       89:  "operation not applicable",
+       90:  "number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS",
+       91:  "error 91",
+       92:  "error 92",
+       93:  "directory not empty",
+       94:  "too many users",
+       95:  "socket operation on non-socket",
+       96:  "destination address required",
+       97:  "message too long",
+       98:  "protocol wrong type for socket",
+       99:  "option not supported by protocol",
+       120: "protocol not supported",
+       121: "socket type not supported",
+       122: "operation not supported on transport endpoint",
+       123: "protocol family not supported",
+       124: "address family not supported by protocol family",
+       125: "address already in use",
+       126: "cannot assign requested address",
+       127: "network is down",
+       128: "network is unreachable",
+       129: "network dropped connection because of reset",
+       130: "software caused connection abort",
+       131: "connection reset by peer",
+       132: "no buffer space available",
+       133: "transport endpoint is already connected",
+       134: "transport endpoint is not connected",
+       143: "cannot send after socket shutdown",
+       144: "too many references: cannot splice",
+       145: "connection timed out",
+       146: "connection refused",
+       147: "host is down",
+       148: "no route to host",
+       149: "operation already in progress",
+       150: "operation now in progress",
+       151: "stale NFS file handle",
+}
+
+// Signal table
+var signals = [...]string{
+       1:  "hangup",
+       2:  "interrupt",
+       3:  "quit",
+       4:  "illegal Instruction",
+       5:  "trace/Breakpoint Trap",
+       6:  "abort",
+       7:  "emulation Trap",
+       8:  "arithmetic Exception",
+       9:  "killed",
+       10: "bus Error",
+       11: "segmentation Fault",
+       12: "bad System Call",
+       13: "broken Pipe",
+       14: "alarm Clock",
+       15: "terminated",
+       16: "user Signal 1",
+       17: "user Signal 2",
+       18: "child Status Changed",
+       19: "power-Fail/Restart",
+       20: "window Size Change",
+       21: "urgent Socket Condition",
+       22: "pollable Event",
+       23: "stopped (signal)",
+       24: "stopped (user)",
+       25: "continued",
+       26: "stopped (tty input)",
+       27: "stopped (tty output)",
+       28: "virtual Timer Expired",
+       29: "profiling Timer Expired",
+       30: "cpu Limit Exceeded",
+       31: "file Size Limit Exceeded",
+       32: "no runnable lwp",
+       33: "inter-lwp signal",
+       34: "checkpoint Freeze",
+       35: "checkpoint Thaw",
+       36: "thread Cancellation",
+       37: "resource Lost",
+       38: "resource Control Exceeded",
+       39: "reserved for JVM 1",
+       40: "reserved for JVM 2",
+       41: "information Request",
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go
new file mode 100644 (file)
index 0000000..a15aaf1
--- /dev/null
@@ -0,0 +1,1426 @@
+// mksyscall.pl -l32 syscall_bsd.go syscall_darwin.go syscall_darwin_386.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build 386,darwin
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+       wpid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+       _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(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]int32) (err error) {
+       _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe() (r int, w int, err error) {
+       r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
+       r = int(r0)
+       w = int(r1)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kill(pid int, signum int, posix int) (err error) {
+       _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+       r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+       nfd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+       _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exchangedata(path1 string, path2 string, options int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path1)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(path2)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+       _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+       r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, stat *Statfs_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+       _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdtablesize() (size int) {
+       r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
+       size = int(r0)
+       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 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, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+       pgid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+       prio = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+       sid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0)
+       tainted = bool(r0 != 0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+       r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+       _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+       _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+       use(unsafe.Pointer(_p0))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)), uintptr(offset), uintptr(offset>>32), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)), uintptr(offset), uintptr(offset>>32), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(buf) > 0 {
+               _p1 = unsafe.Pointer(&buf[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+       use(unsafe.Pointer(_p0))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(from)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(to)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)
+       newoffset = int64(int64(r1)<<32 | int64(r0))
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+       _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setlogin(name string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(name)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+       _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setprivexec(flag int) (err error) {
+       _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+       pid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, stat *Statfs_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+       _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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 Undelete(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unlink(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)
+       ret = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+       _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {
+       r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+       sec = int32(r0)
+       usec = int32(r1)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go
new file mode 100644 (file)
index 0000000..74606b2
--- /dev/null
@@ -0,0 +1,1442 @@
+// mksyscall.pl syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,darwin
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+       wpid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+       _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(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]int32) (err error) {
+       _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe() (r int, w int, err error) {
+       r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
+       r = int(r0)
+       w = int(r1)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kill(pid int, signum int, posix int) (err error) {
+       _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+       r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+       nfd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+       _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exchangedata(path1 string, path2 string, options int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path1)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(path2)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+       _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+       r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, stat *Statfs_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+       _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdtablesize() (size int) {
+       r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
+       size = int(r0)
+       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 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, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+       pgid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+       prio = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+       sid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0)
+       tainted = bool(r0 != 0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+       r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+       _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+       _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+       use(unsafe.Pointer(_p0))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)), uintptr(offset), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)), uintptr(offset), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(buf) > 0 {
+               _p1 = unsafe.Pointer(&buf[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+       use(unsafe.Pointer(_p0))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(from)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(to)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
+       newoffset = int64(r0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+       _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setlogin(name string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(name)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+       _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setprivexec(flag int) (err error) {
+       _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+       pid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, stat *Statfs_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+       _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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 Undelete(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unlink(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))
+       ret = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+       _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) {
+       r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+       sec = int64(r0)
+       usec = int32(r1)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go
new file mode 100644 (file)
index 0000000..640e854
--- /dev/null
@@ -0,0 +1,1426 @@
+// mksyscall.pl syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build arm,darwin
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+       wpid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+       _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(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]int32) (err error) {
+       _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe() (r int, w int, err error) {
+       r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
+       r = int(r0)
+       w = int(r1)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kill(pid int, signum int, posix int) (err error) {
+       _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+       r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+       nfd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+       _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exchangedata(path1 string, path2 string, options int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path1)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(path2)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+       _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+       r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, stat *Statfs_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+       _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdtablesize() (size int) {
+       r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
+       size = int(r0)
+       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 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, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+       pgid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+       prio = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+       sid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0)
+       tainted = bool(r0 != 0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+       r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+       _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+       _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+       use(unsafe.Pointer(_p0))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)), uintptr(offset), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)), uintptr(offset), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(buf) > 0 {
+               _p1 = unsafe.Pointer(&buf[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+       use(unsafe.Pointer(_p0))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(from)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(to)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
+       newoffset = int64(r0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+       _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setlogin(name string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(name)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+       _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setprivexec(flag int) (err error) {
+       _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+       pid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, stat *Statfs_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+       _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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 Undelete(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unlink(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))
+       ret = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+       _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) {
+       r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+       sec = int32(r0)
+       usec = int32(r1)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go
new file mode 100644 (file)
index 0000000..933f67b
--- /dev/null
@@ -0,0 +1,1426 @@
+// mksyscall.pl syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build arm64,darwin
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+       wpid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+       _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(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]int32) (err error) {
+       _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe() (r int, w int, err error) {
+       r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
+       r = int(r0)
+       w = int(r1)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kill(pid int, signum int, posix int) (err error) {
+       _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+       r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+       nfd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+       _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exchangedata(path1 string, path2 string, options int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path1)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(path2)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+       _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+       r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, stat *Statfs_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+       _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdtablesize() (size int) {
+       r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
+       size = int(r0)
+       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 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, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+       pgid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+       prio = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+       sid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0)
+       tainted = bool(r0 != 0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+       r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+       _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+       _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+       use(unsafe.Pointer(_p0))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)), uintptr(offset), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)), uintptr(offset), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(buf) > 0 {
+               _p1 = unsafe.Pointer(&buf[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+       use(unsafe.Pointer(_p0))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(from)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(to)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
+       newoffset = int64(r0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+       _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setlogin(name string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(name)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+       _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setprivexec(flag int) (err error) {
+       _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+       pid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, stat *Statfs_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+       _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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 Undelete(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unlink(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))
+       ret = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+       _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) {
+       r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+       sec = int64(r0)
+       usec = int32(r1)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_386.go b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_386.go
new file mode 100644 (file)
index 0000000..32e46af
--- /dev/null
@@ -0,0 +1,1412 @@
+// mksyscall.pl -l32 -dragonfly syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_386.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build 386,dragonfly
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+       wpid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+       _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(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]int32) (err error) {
+       _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe() (r int, w int, err error) {
+       r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
+       r = int(r0)
+       w = int(r1)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func extpread(fd int, p []byte, flags int, offset int64) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_EXTPREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), uintptr(offset>>32))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_EXTPWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), uintptr(offset>>32))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+       r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+       nfd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+       _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+       _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+       r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, stat *Statfs_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+       _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdtablesize() (size int) {
+       r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
+       size = int(r0)
+       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 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, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+       pgid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+       prio = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+       sid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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 syscall.Signal) (err error) {
+       _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+       r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+       _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+       _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+       _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+       use(unsafe.Pointer(_p0))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(buf) > 0 {
+               _p1 = unsafe.Pointer(&buf[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+       use(unsafe.Pointer(_p0))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(from)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(to)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)
+       newoffset = int64(int64(r1)<<32 | int64(r0))
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setlogin(name string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(name)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+       _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+       pid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, stat *Statfs_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+       _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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 Undelete(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unlink(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)
+       ret = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+       _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go
new file mode 100644 (file)
index 0000000..3fa6ff7
--- /dev/null
@@ -0,0 +1,1412 @@
+// mksyscall.pl -dragonfly syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_amd64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,dragonfly
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+       wpid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+       _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(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]int32) (err error) {
+       _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe() (r int, w int, err error) {
+       r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
+       r = int(r0)
+       w = int(r1)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func extpread(fd int, p []byte, flags int, offset int64) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_EXTPREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_EXTPWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+       r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+       nfd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+       _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+       _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+       r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, stat *Statfs_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+       _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdtablesize() (size int) {
+       r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
+       size = int(r0)
+       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 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, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+       pgid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+       prio = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+       sid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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 syscall.Signal) (err error) {
+       _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+       r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+       _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+       _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+       _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+       use(unsafe.Pointer(_p0))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(buf) > 0 {
+               _p1 = unsafe.Pointer(&buf[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+       use(unsafe.Pointer(_p0))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(from)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(to)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)
+       newoffset = int64(r0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setlogin(name string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(name)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+       _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+       pid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, stat *Statfs_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+       _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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 Undelete(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unlink(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)
+       ret = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+       _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go
new file mode 100644 (file)
index 0000000..1a0e528
--- /dev/null
@@ -0,0 +1,1664 @@
+// mksyscall.pl -l32 syscall_bsd.go syscall_freebsd.go syscall_freebsd_386.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build 386,freebsd
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+       wpid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+       _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(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]int32) (err error) {
+       _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe() (r int, w int, err error) {
+       r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
+       r = int(r0)
+       w = int(r1)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+       r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+       nfd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+       _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+       if e1 != 0 {
+               err = errnoErr(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 ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)
+       use(unsafe.Pointer(_p0))
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)
+       use(unsafe.Pointer(_p0))
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
+       r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(file)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(file)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(file)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(file)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
+       use(unsafe.Pointer(_p0))
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
+       use(unsafe.Pointer(_p0))
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
+       _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+       _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+       r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, stat *Statfs_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+       _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdtablesize() (size int) {
+       r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
+       size = int(r0)
+       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 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, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+       pgid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+       prio = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+       sid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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 syscall.Signal) (err error) {
+       _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+       r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+       _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+       _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+       _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+       use(unsafe.Pointer(_p0))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)), uintptr(offset), uintptr(offset>>32), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)), uintptr(offset), uintptr(offset>>32), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(buf) > 0 {
+               _p1 = unsafe.Pointer(&buf[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+       use(unsafe.Pointer(_p0))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(from)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(to)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)
+       newoffset = int64(int64(r1)<<32 | int64(r0))
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setlogin(name string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(name)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+       _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+       pid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, stat *Statfs_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+       _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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 Undelete(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unlink(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)
+       ret = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+       _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {
+       r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
+       nfd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go
new file mode 100644 (file)
index 0000000..6e4cf14
--- /dev/null
@@ -0,0 +1,1664 @@
+// mksyscall.pl syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,freebsd
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+       wpid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+       _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(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]int32) (err error) {
+       _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe() (r int, w int, err error) {
+       r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
+       r = int(r0)
+       w = int(r1)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+       r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+       nfd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+       _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+       if e1 != 0 {
+               err = errnoErr(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 ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)
+       use(unsafe.Pointer(_p0))
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)
+       use(unsafe.Pointer(_p0))
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
+       r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(file)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(file)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(file)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(file)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
+       use(unsafe.Pointer(_p0))
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
+       use(unsafe.Pointer(_p0))
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
+       _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+       _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+       r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, stat *Statfs_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+       _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdtablesize() (size int) {
+       r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
+       size = int(r0)
+       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 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, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+       pgid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+       prio = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+       sid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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 syscall.Signal) (err error) {
+       _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+       r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+       _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+       _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+       _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+       use(unsafe.Pointer(_p0))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)), uintptr(offset), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)), uintptr(offset), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(buf) > 0 {
+               _p1 = unsafe.Pointer(&buf[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+       use(unsafe.Pointer(_p0))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(from)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(to)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
+       newoffset = int64(r0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setlogin(name string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(name)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+       _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+       pid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, stat *Statfs_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+       _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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 Undelete(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unlink(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))
+       ret = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+       _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {
+       r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
+       nfd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go
new file mode 100644 (file)
index 0000000..1872d32
--- /dev/null
@@ -0,0 +1,1664 @@
+// mksyscall.pl -l32 -arm syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build arm,freebsd
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+       wpid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+       _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(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]int32) (err error) {
+       _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe() (r int, w int, err error) {
+       r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
+       r = int(r0)
+       w = int(r1)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+       r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+       nfd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+       _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+       if e1 != 0 {
+               err = errnoErr(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 ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)
+       use(unsafe.Pointer(_p0))
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)
+       use(unsafe.Pointer(_p0))
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
+       r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(file)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(file)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(file)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(file)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
+       use(unsafe.Pointer(_p0))
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attrname)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)
+       use(unsafe.Pointer(_p0))
+       ret = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
+       _, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+       _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+       r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, stat *Statfs_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+       _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdtablesize() (size int) {
+       r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)
+       size = int(r0)
+       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 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, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+       pgid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+       prio = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+       sid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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 syscall.Signal) (err error) {
+       _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+       r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+       _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+       _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+       _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+       use(unsafe.Pointer(_p0))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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), uintptr(offset>>32))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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), uintptr(offset>>32))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(buf) > 0 {
+               _p1 = unsafe.Pointer(&buf[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+       use(unsafe.Pointer(_p0))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(from)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(to)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)
+       newoffset = int64(int64(r1)<<32 | int64(r0))
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setlogin(name string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(name)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+       _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+       pid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, stat *Statfs_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+       _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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 Undelete(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unlink(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)
+       ret = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+       _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {
+       r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
+       nfd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go
new file mode 100644 (file)
index 0000000..106cd59
--- /dev/null
@@ -0,0 +1,1638 @@
+// mksyscall.pl -l32 syscall_linux.go syscall_linux_386.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build 386,linux
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(oldpath)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(newpath)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(buf) > 0 {
+               _p1 = unsafe.Pointer(&buf[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(oldpath)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(newpath)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func unlinkat(dirfd int, path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, times *[2]Timeval) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getcwd(buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+       wpid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(arg)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(source)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(target)
+       if err != nil {
+               return
+       }
+       var _p2 *byte
+       _p2, err = BytePtrFromString(fstype)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       use(unsafe.Pointer(_p2))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Acct(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtimex(buf *Timex) (state int, err error) {
+       r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
+       state = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ClockGettime(clockid int32, time *Timespec) (err error) {
+       _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(oldfd int) (fd int, err error) {
+       r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup3(oldfd int, newfd int, flags int) (err error) {
+       _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate(size int) (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate1(flag int) (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
+       _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(events) > 0 {
+               _p0 = unsafe.Pointer(&events[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+       Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
+       _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+       _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fdatasync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdents(fd int, buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+       pgid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       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, err error) {
+       r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+       prio = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettid() (tid int) {
+       r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
+       tid = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attr)
+       if err != nil {
+               return
+       }
+       var _p2 unsafe.Pointer
+       if len(dest) > 0 {
+               _p2 = unsafe.Pointer(&dest[0])
+       } else {
+               _p2 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       sz = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(pathname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
+       use(unsafe.Pointer(_p0))
+       watchdesc = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyInit1(flags int) (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
+       r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
+       success = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, sig syscall.Signal) (err error) {
+       _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Klogctl(typ int, buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listxattr(path string, dest []byte) (sz int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(dest) > 0 {
+               _p1 = unsafe.Pointer(&dest[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
+       use(unsafe.Pointer(_p0))
+       sz = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+       _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pause() (err error) {
+       _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func PivotRoot(newroot string, putold string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(newroot)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(putold)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) {
+       _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(newlimit)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Removexattr(path string, attr string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attr)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(oldpath)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(newpath)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setdomainname(p []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sethostname(p []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+       pid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tv *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setns(fd int, nstype int) (err error) {
+       _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+       _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setxattr(path string, attr string, data []byte, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attr)
+       if err != nil {
+               return
+       }
+       var _p2 unsafe.Pointer
+       if len(data) > 0 {
+               _p2 = unsafe.Pointer(&data[0])
+       } else {
+               _p2 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() {
+       Syscall(SYS_SYNC, 0, 0, 0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sysinfo(info *Sysinfo_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
+       r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
+       n = int64(int64(r1)<<32 | int64(r0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
+       _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Times(tms *Tms) (ticks uintptr, err error) {
+       r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
+       ticks = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(mask int) (oldmask int) {
+       r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
+       oldmask = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Uname(buf *Utsname) (err error) {
+       _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(target string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(target)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unshare(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ustat(dev int, ubuf *Ustat_t) (err error) {
+       _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func exitThread(code int) (err error) {
+       _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, p *byte, np int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, p *byte, np int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+       _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Madvise(b []byte, advice int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+       _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe(p *[2]_C_int) (err error) {
+       _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe2(p *[2]_C_int, flags int) (err error) {
+       _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(oldfd int, newfd int) (err error) {
+       _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
+       _, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+       _, _, e1 := Syscall(SYS_FTRUNCATE64, uintptr(fd), uintptr(length), uintptr(length>>32))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getegid() (egid int) {
+       r0, _, _ := RawSyscall(SYS_GETEGID32, 0, 0, 0)
+       egid = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Geteuid() (euid int) {
+       r0, _, _ := RawSyscall(SYS_GETEUID32, 0, 0, 0)
+       euid = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+       r0, _, _ := RawSyscall(SYS_GETGID32, 0, 0, 0)
+       gid = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getuid() (uid int) {
+       r0, _, _ := RawSyscall(SYS_GETUID32, 0, 0, 0)
+       uid = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyInit() (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ioperm(from int, num int, on int) (err error) {
+       _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Iopl(level int) (err error) {
+       _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+       r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
+       written = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsgid(gid int) (err error) {
+       _, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsuid(uid int) (err error) {
+       _, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREGID32, uintptr(rgid), uintptr(egid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESGID32, uintptr(rgid), uintptr(egid), uintptr(sgid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESUID32, uintptr(ruid), uintptr(euid), uintptr(suid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREUID32, uintptr(ruid), uintptr(euid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
+       _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), uintptr(flags))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(n int, list *_Gid_t) (nn int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+       nn = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(n int, list *_Gid_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {
+       r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))
+       xaddr = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getrlimit(resource int, rlim *rlimit32) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setrlimit(resource int, rlim *rlimit32) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Time(t *Time_t) (tt Time_t, err error) {
+       r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)
+       tt = Time_t(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Utime(path string, buf *Utimbuf) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go
new file mode 100644 (file)
index 0000000..c1bae65
--- /dev/null
@@ -0,0 +1,1832 @@
+// mksyscall.pl syscall_linux.go syscall_linux_amd64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,linux
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(oldpath)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(newpath)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(buf) > 0 {
+               _p1 = unsafe.Pointer(&buf[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(oldpath)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(newpath)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func unlinkat(dirfd int, path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, times *[2]Timeval) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getcwd(buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+       wpid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(arg)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(source)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(target)
+       if err != nil {
+               return
+       }
+       var _p2 *byte
+       _p2, err = BytePtrFromString(fstype)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       use(unsafe.Pointer(_p2))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Acct(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtimex(buf *Timex) (state int, err error) {
+       r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
+       state = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ClockGettime(clockid int32, time *Timespec) (err error) {
+       _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(oldfd int) (fd int, err error) {
+       r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup3(oldfd int, newfd int, flags int) (err error) {
+       _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate(size int) (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate1(flag int) (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
+       _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(events) > 0 {
+               _p0 = unsafe.Pointer(&events[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+       Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
+       _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+       _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fdatasync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdents(fd int, buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+       pgid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       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, err error) {
+       r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+       prio = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettid() (tid int) {
+       r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
+       tid = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attr)
+       if err != nil {
+               return
+       }
+       var _p2 unsafe.Pointer
+       if len(dest) > 0 {
+               _p2 = unsafe.Pointer(&dest[0])
+       } else {
+               _p2 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       sz = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(pathname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
+       use(unsafe.Pointer(_p0))
+       watchdesc = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyInit1(flags int) (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
+       r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
+       success = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, sig syscall.Signal) (err error) {
+       _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Klogctl(typ int, buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listxattr(path string, dest []byte) (sz int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(dest) > 0 {
+               _p1 = unsafe.Pointer(&dest[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
+       use(unsafe.Pointer(_p0))
+       sz = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+       _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pause() (err error) {
+       _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func PivotRoot(newroot string, putold string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(newroot)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(putold)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) {
+       _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(newlimit)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Removexattr(path string, attr string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attr)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(oldpath)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(newpath)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setdomainname(p []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sethostname(p []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+       pid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tv *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setns(fd int, nstype int) (err error) {
+       _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+       _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setxattr(path string, attr string, data []byte, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attr)
+       if err != nil {
+               return
+       }
+       var _p2 unsafe.Pointer
+       if len(data) > 0 {
+               _p2 = unsafe.Pointer(&data[0])
+       } else {
+               _p2 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() {
+       Syscall(SYS_SYNC, 0, 0, 0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sysinfo(info *Sysinfo_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
+       r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
+       n = int64(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
+       _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Times(tms *Tms) (ticks uintptr, err error) {
+       r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
+       ticks = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(mask int) (oldmask int) {
+       r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
+       oldmask = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Uname(buf *Utsname) (err error) {
+       _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(target string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(target)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unshare(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ustat(dev int, ubuf *Ustat_t) (err error) {
+       _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func exitThread(code int) (err error) {
+       _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, p *byte, np int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, p *byte, np int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+       _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Madvise(b []byte, advice int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+       _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(oldfd int, newfd int) (err error) {
+       _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fadvise(fd int, offset int64, length int64, advice int) (err error) {
+       _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, buf *Statfs_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+       _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(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() (euid int) {
+       r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+       euid = int(r0)
+       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 Getrlimit(resource int, rlim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+       if e1 != 0 {
+               err = errnoErr(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 InotifyInit() (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ioperm(from int, num int, on int) (err error) {
+       _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Iopl(level int) (err error) {
+       _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, n int) (err error) {
+       _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (off int64, err error) {
+       r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
+       off = int64(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+       r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
+       written = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsgid(gid int) (err error) {
+       _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsuid(uid int) (err error) {
+       _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(resource int, rlim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
+       r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
+       n = int64(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, buf *Statfs_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
+       _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {
+       r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(n int, list *_Gid_t) (nn int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+       nn = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(n int, list *_Gid_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+       _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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]int32) (err error) {
+       _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
+       r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))
+       xaddr = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Utime(path string, buf *Utimbuf) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe(p *[2]_C_int) (err error) {
+       _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe2(p *[2]_C_int, flags int) (err error) {
+       _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go
new file mode 100644 (file)
index 0000000..3383f97
--- /dev/null
@@ -0,0 +1,1739 @@
+// mksyscall.pl -l32 -arm syscall_linux.go syscall_linux_arm.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build arm,linux
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(oldpath)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(newpath)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(buf) > 0 {
+               _p1 = unsafe.Pointer(&buf[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(oldpath)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(newpath)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func unlinkat(dirfd int, path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, times *[2]Timeval) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getcwd(buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+       wpid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(arg)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(source)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(target)
+       if err != nil {
+               return
+       }
+       var _p2 *byte
+       _p2, err = BytePtrFromString(fstype)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       use(unsafe.Pointer(_p2))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Acct(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtimex(buf *Timex) (state int, err error) {
+       r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
+       state = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ClockGettime(clockid int32, time *Timespec) (err error) {
+       _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(oldfd int) (fd int, err error) {
+       r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup3(oldfd int, newfd int, flags int) (err error) {
+       _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate(size int) (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate1(flag int) (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
+       _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(events) > 0 {
+               _p0 = unsafe.Pointer(&events[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+       Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
+       _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+       _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fdatasync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdents(fd int, buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+       pgid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       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, err error) {
+       r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+       prio = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettid() (tid int) {
+       r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
+       tid = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attr)
+       if err != nil {
+               return
+       }
+       var _p2 unsafe.Pointer
+       if len(dest) > 0 {
+               _p2 = unsafe.Pointer(&dest[0])
+       } else {
+               _p2 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       sz = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(pathname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
+       use(unsafe.Pointer(_p0))
+       watchdesc = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyInit1(flags int) (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
+       r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
+       success = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, sig syscall.Signal) (err error) {
+       _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Klogctl(typ int, buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listxattr(path string, dest []byte) (sz int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(dest) > 0 {
+               _p1 = unsafe.Pointer(&dest[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
+       use(unsafe.Pointer(_p0))
+       sz = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+       _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pause() (err error) {
+       _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func PivotRoot(newroot string, putold string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(newroot)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(putold)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) {
+       _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(newlimit)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Removexattr(path string, attr string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attr)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(oldpath)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(newpath)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setdomainname(p []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sethostname(p []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+       pid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tv *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setns(fd int, nstype int) (err error) {
+       _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+       _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setxattr(path string, attr string, data []byte, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attr)
+       if err != nil {
+               return
+       }
+       var _p2 unsafe.Pointer
+       if len(data) > 0 {
+               _p2 = unsafe.Pointer(&data[0])
+       } else {
+               _p2 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() {
+       Syscall(SYS_SYNC, 0, 0, 0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sysinfo(info *Sysinfo_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
+       r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
+       n = int64(int64(r1)<<32 | int64(r0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
+       _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Times(tms *Tms) (ticks uintptr, err error) {
+       r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
+       ticks = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(mask int) (oldmask int) {
+       r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
+       oldmask = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Uname(buf *Utsname) (err error) {
+       _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(target string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(target)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unshare(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ustat(dev int, ubuf *Ustat_t) (err error) {
+       _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func exitThread(code int) (err error) {
+       _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, p *byte, np int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, p *byte, np int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+       _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Madvise(b []byte, advice int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+       _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe2(p *[2]_C_int, flags int) (err error) {
+       _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {
+       r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(n int, list *_Gid_t) (nn int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+       nn = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(n int, list *_Gid_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+       _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) {
+       _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(oldfd int, newfd int) (err error) {
+       _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getegid() (egid int) {
+       r0, _, _ := RawSyscall(SYS_GETEGID32, 0, 0, 0)
+       egid = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Geteuid() (euid int) {
+       r0, _, _ := RawSyscall(SYS_GETEUID32, 0, 0, 0)
+       euid = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getgid() (gid int) {
+       r0, _, _ := RawSyscall(SYS_GETGID32, 0, 0, 0)
+       gid = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getuid() (uid int) {
+       r0, _, _ := RawSyscall(SYS_GETUID32, 0, 0, 0)
+       uid = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyInit() (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, n int) (err error) {
+       _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+       r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
+       written = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsgid(gid int) (err error) {
+       _, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsuid(uid int) (err error) {
+       _, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREGID32, uintptr(rgid), uintptr(egid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESGID32, uintptr(rgid), uintptr(egid), uintptr(sgid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESUID32, uintptr(ruid), uintptr(euid), uintptr(suid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREUID32, uintptr(ruid), uintptr(euid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+       _, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {
+       r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))
+       xaddr = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getrlimit(resource int, rlim *rlimit32) (err error) {
+       _, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setrlimit(resource int, rlim *rlimit32) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go
new file mode 100644 (file)
index 0000000..fb2ff3a
--- /dev/null
@@ -0,0 +1,1733 @@
+// mksyscall.pl syscall_linux.go syscall_linux_arm64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build arm64,linux
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(oldpath)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(newpath)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(buf) > 0 {
+               _p1 = unsafe.Pointer(&buf[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(oldpath)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(newpath)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func unlinkat(dirfd int, path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, times *[2]Timeval) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getcwd(buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+       wpid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(arg)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(source)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(target)
+       if err != nil {
+               return
+       }
+       var _p2 *byte
+       _p2, err = BytePtrFromString(fstype)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       use(unsafe.Pointer(_p2))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Acct(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtimex(buf *Timex) (state int, err error) {
+       r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
+       state = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ClockGettime(clockid int32, time *Timespec) (err error) {
+       _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(oldfd int) (fd int, err error) {
+       r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup3(oldfd int, newfd int, flags int) (err error) {
+       _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate(size int) (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate1(flag int) (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
+       _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(events) > 0 {
+               _p0 = unsafe.Pointer(&events[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+       Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
+       _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+       _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fdatasync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdents(fd int, buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+       pgid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       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, err error) {
+       r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+       prio = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettid() (tid int) {
+       r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
+       tid = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attr)
+       if err != nil {
+               return
+       }
+       var _p2 unsafe.Pointer
+       if len(dest) > 0 {
+               _p2 = unsafe.Pointer(&dest[0])
+       } else {
+               _p2 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       sz = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(pathname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
+       use(unsafe.Pointer(_p0))
+       watchdesc = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyInit1(flags int) (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
+       r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
+       success = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, sig syscall.Signal) (err error) {
+       _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Klogctl(typ int, buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listxattr(path string, dest []byte) (sz int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(dest) > 0 {
+               _p1 = unsafe.Pointer(&dest[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
+       use(unsafe.Pointer(_p0))
+       sz = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+       _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pause() (err error) {
+       _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func PivotRoot(newroot string, putold string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(newroot)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(putold)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) {
+       _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(newlimit)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Removexattr(path string, attr string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attr)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(oldpath)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(newpath)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setdomainname(p []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sethostname(p []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+       pid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tv *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setns(fd int, nstype int) (err error) {
+       _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+       _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setxattr(path string, attr string, data []byte, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attr)
+       if err != nil {
+               return
+       }
+       var _p2 unsafe.Pointer
+       if len(data) > 0 {
+               _p2 = unsafe.Pointer(&data[0])
+       } else {
+               _p2 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() {
+       Syscall(SYS_SYNC, 0, 0, 0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sysinfo(info *Sysinfo_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
+       r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
+       n = int64(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
+       _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Times(tms *Tms) (ticks uintptr, err error) {
+       r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
+       ticks = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(mask int) (oldmask int) {
+       r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
+       oldmask = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Uname(buf *Utsname) (err error) {
+       _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(target string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(target)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unshare(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ustat(dev int, ubuf *Ustat_t) (err error) {
+       _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func exitThread(code int) (err error) {
+       _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, p *byte, np int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, p *byte, np int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+       _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Madvise(b []byte, advice int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+       _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, buf *Statfs_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+       _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(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() (euid int) {
+       r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+       euid = int(r0)
+       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 Getrlimit(resource int, rlim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+       if e1 != 0 {
+               err = errnoErr(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 Listen(s int, n int) (err error) {
+       _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (off int64, err error) {
+       r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
+       off = int64(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+       r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
+       written = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsgid(gid int) (err error) {
+       _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsuid(uid int) (err error) {
+       _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(resource int, rlim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
+       r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
+       n = int64(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, buf *Statfs_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
+       _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {
+       r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(n int, list *_Gid_t) (nn int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+       nn = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(n int, list *_Gid_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+       _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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]int32) (err error) {
+       _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
+       r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))
+       xaddr = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe2(p *[2]_C_int, flags int) (err error) {
+       _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go
new file mode 100644 (file)
index 0000000..7eac55b
--- /dev/null
@@ -0,0 +1,1781 @@
+// mksyscall.pl syscall_linux.go syscall_linux_mips64x.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build mips64,linux
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(oldpath)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(newpath)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(buf) > 0 {
+               _p1 = unsafe.Pointer(&buf[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(oldpath)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(newpath)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func unlinkat(dirfd int, path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, times *[2]Timeval) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getcwd(buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+       wpid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(arg)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(source)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(target)
+       if err != nil {
+               return
+       }
+       var _p2 *byte
+       _p2, err = BytePtrFromString(fstype)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       use(unsafe.Pointer(_p2))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Acct(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtimex(buf *Timex) (state int, err error) {
+       r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
+       state = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ClockGettime(clockid int32, time *Timespec) (err error) {
+       _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(oldfd int) (fd int, err error) {
+       r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup3(oldfd int, newfd int, flags int) (err error) {
+       _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate(size int) (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate1(flag int) (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
+       _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(events) > 0 {
+               _p0 = unsafe.Pointer(&events[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+       Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
+       _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+       _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fdatasync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdents(fd int, buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+       pgid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       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, err error) {
+       r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+       prio = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettid() (tid int) {
+       r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
+       tid = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attr)
+       if err != nil {
+               return
+       }
+       var _p2 unsafe.Pointer
+       if len(dest) > 0 {
+               _p2 = unsafe.Pointer(&dest[0])
+       } else {
+               _p2 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       sz = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(pathname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
+       use(unsafe.Pointer(_p0))
+       watchdesc = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyInit1(flags int) (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
+       r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
+       success = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, sig syscall.Signal) (err error) {
+       _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Klogctl(typ int, buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listxattr(path string, dest []byte) (sz int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(dest) > 0 {
+               _p1 = unsafe.Pointer(&dest[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
+       use(unsafe.Pointer(_p0))
+       sz = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+       _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pause() (err error) {
+       _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func PivotRoot(newroot string, putold string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(newroot)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(putold)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) {
+       _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(newlimit)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Removexattr(path string, attr string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attr)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(oldpath)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(newpath)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setdomainname(p []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sethostname(p []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+       pid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tv *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setns(fd int, nstype int) (err error) {
+       _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+       _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setxattr(path string, attr string, data []byte, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attr)
+       if err != nil {
+               return
+       }
+       var _p2 unsafe.Pointer
+       if len(data) > 0 {
+               _p2 = unsafe.Pointer(&data[0])
+       } else {
+               _p2 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() {
+       Syscall(SYS_SYNC, 0, 0, 0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sysinfo(info *Sysinfo_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
+       r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
+       n = int64(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
+       _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Times(tms *Tms) (ticks uintptr, err error) {
+       r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
+       ticks = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(mask int) (oldmask int) {
+       r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
+       oldmask = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Uname(buf *Utsname) (err error) {
+       _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(target string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(target)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unshare(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ustat(dev int, ubuf *Ustat_t) (err error) {
+       _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func exitThread(code int) (err error) {
+       _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, p *byte, np int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, p *byte, np int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+       _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Madvise(b []byte, advice int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+       _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, buf *Statfs_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+       _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(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() (euid int) {
+       r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+       euid = int(r0)
+       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 Getrlimit(resource int, rlim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+       if e1 != 0 {
+               err = errnoErr(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 Lchown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, n int) (err error) {
+       _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (off int64, err error) {
+       r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
+       off = int64(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+       r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
+       written = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsgid(gid int) (err error) {
+       _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsuid(uid int) (err error) {
+       _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(resource int, rlim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
+       r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
+       n = int64(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, buf *Statfs_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
+       _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {
+       r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(n int, list *_Gid_t) (nn int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+       nn = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(n int, list *_Gid_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+       _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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]int32) (err error) {
+       _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
+       r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))
+       xaddr = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Utime(path string, buf *Utimbuf) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe2(p *[2]_C_int, flags int) (err error) {
+       _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fstat(fd int, st *stat_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(st)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func lstat(path string, st *stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func stat(path string, st *stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go
new file mode 100644 (file)
index 0000000..e8b61a6
--- /dev/null
@@ -0,0 +1,1781 @@
+// mksyscall.pl syscall_linux.go syscall_linux_mips64x.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build mips64le,linux
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(oldpath)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(newpath)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(buf) > 0 {
+               _p1 = unsafe.Pointer(&buf[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(oldpath)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(newpath)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func unlinkat(dirfd int, path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, times *[2]Timeval) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getcwd(buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+       wpid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(arg)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(source)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(target)
+       if err != nil {
+               return
+       }
+       var _p2 *byte
+       _p2, err = BytePtrFromString(fstype)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       use(unsafe.Pointer(_p2))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Acct(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtimex(buf *Timex) (state int, err error) {
+       r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
+       state = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ClockGettime(clockid int32, time *Timespec) (err error) {
+       _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(oldfd int) (fd int, err error) {
+       r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup3(oldfd int, newfd int, flags int) (err error) {
+       _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate(size int) (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate1(flag int) (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
+       _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(events) > 0 {
+               _p0 = unsafe.Pointer(&events[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+       Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
+       _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+       _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fdatasync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdents(fd int, buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+       pgid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       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, err error) {
+       r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+       prio = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettid() (tid int) {
+       r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
+       tid = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attr)
+       if err != nil {
+               return
+       }
+       var _p2 unsafe.Pointer
+       if len(dest) > 0 {
+               _p2 = unsafe.Pointer(&dest[0])
+       } else {
+               _p2 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       sz = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(pathname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
+       use(unsafe.Pointer(_p0))
+       watchdesc = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyInit1(flags int) (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
+       r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
+       success = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, sig syscall.Signal) (err error) {
+       _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Klogctl(typ int, buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listxattr(path string, dest []byte) (sz int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(dest) > 0 {
+               _p1 = unsafe.Pointer(&dest[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
+       use(unsafe.Pointer(_p0))
+       sz = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+       _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pause() (err error) {
+       _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func PivotRoot(newroot string, putold string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(newroot)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(putold)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) {
+       _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(newlimit)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Removexattr(path string, attr string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attr)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(oldpath)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(newpath)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setdomainname(p []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sethostname(p []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+       pid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tv *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setns(fd int, nstype int) (err error) {
+       _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+       _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setxattr(path string, attr string, data []byte, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attr)
+       if err != nil {
+               return
+       }
+       var _p2 unsafe.Pointer
+       if len(data) > 0 {
+               _p2 = unsafe.Pointer(&data[0])
+       } else {
+               _p2 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() {
+       Syscall(SYS_SYNC, 0, 0, 0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sysinfo(info *Sysinfo_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
+       r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
+       n = int64(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
+       _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Times(tms *Tms) (ticks uintptr, err error) {
+       r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
+       ticks = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(mask int) (oldmask int) {
+       r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
+       oldmask = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Uname(buf *Utsname) (err error) {
+       _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(target string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(target)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unshare(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ustat(dev int, ubuf *Ustat_t) (err error) {
+       _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func exitThread(code int) (err error) {
+       _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, p *byte, np int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, p *byte, np int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+       _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Madvise(b []byte, advice int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+       _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, buf *Statfs_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+       _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(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() (euid int) {
+       r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+       euid = int(r0)
+       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 Getrlimit(resource int, rlim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+       if e1 != 0 {
+               err = errnoErr(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 Lchown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, n int) (err error) {
+       _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (off int64, err error) {
+       r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
+       off = int64(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+       r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
+       written = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsgid(gid int) (err error) {
+       _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsuid(uid int) (err error) {
+       _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(resource int, rlim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
+       r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
+       n = int64(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, buf *Statfs_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
+       _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {
+       r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(n int, list *_Gid_t) (nn int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+       nn = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(n int, list *_Gid_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+       _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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]int32) (err error) {
+       _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
+       r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))
+       xaddr = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Utime(path string, buf *Utimbuf) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe2(p *[2]_C_int, flags int) (err error) {
+       _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func fstat(fd int, st *stat_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(st)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func lstat(path string, st *stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func stat(path string, st *stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go
new file mode 100644 (file)
index 0000000..f8eaae9
--- /dev/null
@@ -0,0 +1,1802 @@
+// mksyscall.pl syscall_linux.go syscall_linux_ppc64x.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build ppc64,linux
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(oldpath)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(newpath)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(buf) > 0 {
+               _p1 = unsafe.Pointer(&buf[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(oldpath)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(newpath)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func unlinkat(dirfd int, path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, times *[2]Timeval) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getcwd(buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+       wpid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(arg)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(source)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(target)
+       if err != nil {
+               return
+       }
+       var _p2 *byte
+       _p2, err = BytePtrFromString(fstype)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       use(unsafe.Pointer(_p2))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Acct(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtimex(buf *Timex) (state int, err error) {
+       r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
+       state = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ClockGettime(clockid int32, time *Timespec) (err error) {
+       _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(oldfd int) (fd int, err error) {
+       r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup3(oldfd int, newfd int, flags int) (err error) {
+       _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate(size int) (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate1(flag int) (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
+       _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(events) > 0 {
+               _p0 = unsafe.Pointer(&events[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+       Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
+       _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+       _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fdatasync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdents(fd int, buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+       pgid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       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, err error) {
+       r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+       prio = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettid() (tid int) {
+       r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
+       tid = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attr)
+       if err != nil {
+               return
+       }
+       var _p2 unsafe.Pointer
+       if len(dest) > 0 {
+               _p2 = unsafe.Pointer(&dest[0])
+       } else {
+               _p2 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       sz = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(pathname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
+       use(unsafe.Pointer(_p0))
+       watchdesc = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyInit1(flags int) (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
+       r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
+       success = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, sig syscall.Signal) (err error) {
+       _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Klogctl(typ int, buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listxattr(path string, dest []byte) (sz int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(dest) > 0 {
+               _p1 = unsafe.Pointer(&dest[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
+       use(unsafe.Pointer(_p0))
+       sz = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+       _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pause() (err error) {
+       _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func PivotRoot(newroot string, putold string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(newroot)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(putold)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) {
+       _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(newlimit)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Removexattr(path string, attr string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attr)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(oldpath)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(newpath)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setdomainname(p []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sethostname(p []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+       pid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tv *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setns(fd int, nstype int) (err error) {
+       _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+       _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setxattr(path string, attr string, data []byte, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attr)
+       if err != nil {
+               return
+       }
+       var _p2 unsafe.Pointer
+       if len(data) > 0 {
+               _p2 = unsafe.Pointer(&data[0])
+       } else {
+               _p2 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() {
+       Syscall(SYS_SYNC, 0, 0, 0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sysinfo(info *Sysinfo_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
+       r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
+       n = int64(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
+       _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Times(tms *Tms) (ticks uintptr, err error) {
+       r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
+       ticks = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(mask int) (oldmask int) {
+       r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
+       oldmask = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Uname(buf *Utsname) (err error) {
+       _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(target string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(target)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unshare(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ustat(dev int, ubuf *Ustat_t) (err error) {
+       _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func exitThread(code int) (err error) {
+       _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, p *byte, np int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, p *byte, np int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+       _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Madvise(b []byte, advice int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+       _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, buf *Statfs_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+       _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(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() (euid int) {
+       r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+       euid = int(r0)
+       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 Getrlimit(resource int, rlim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+       if e1 != 0 {
+               err = errnoErr(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 Ioperm(from int, num int, on int) (err error) {
+       _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Iopl(level int) (err error) {
+       _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, n int) (err error) {
+       _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (off int64, err error) {
+       r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
+       off = int64(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+       r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
+       written = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsgid(gid int) (err error) {
+       _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsuid(uid int) (err error) {
+       _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(resource int, rlim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
+       r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
+       n = int64(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, buf *Statfs_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
+       _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {
+       r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(n int, list *_Gid_t) (nn int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+       nn = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(n int, list *_Gid_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+       _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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]int32) (err error) {
+       _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
+       r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))
+       xaddr = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Time(t *Time_t) (tt Time_t, err error) {
+       r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)
+       tt = Time_t(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Utime(path string, buf *Utimbuf) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go
new file mode 100644 (file)
index 0000000..22d444f
--- /dev/null
@@ -0,0 +1,1802 @@
+// mksyscall.pl syscall_linux.go syscall_linux_ppc64x.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build ppc64le,linux
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(oldpath)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(newpath)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlinkat(dirfd int, path string, buf []byte) (n int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(buf) > 0 {
+               _p1 = unsafe.Pointer(&buf[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func symlinkat(oldpath string, newdirfd int, newpath string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(oldpath)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(newpath)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func unlinkat(dirfd int, path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, times *[2]Timeval) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimesat(dirfd int, path *byte, times *[2]Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getcwd(buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+       wpid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(arg)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(source)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(target)
+       if err != nil {
+               return
+       }
+       var _p2 *byte
+       _p2, err = BytePtrFromString(fstype)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       use(unsafe.Pointer(_p2))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Acct(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtimex(buf *Timex) (state int, err error) {
+       r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)
+       state = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func ClockGettime(clockid int32, time *Timespec) (err error) {
+       _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(oldfd int) (fd int, err error) {
+       r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup3(oldfd int, newfd int, flags int) (err error) {
+       _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate(size int) (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCreate1(flag int) (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {
+       _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(events) > 0 {
+               _p0 = unsafe.Pointer(&events[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Exit(code int) {
+       Syscall(SYS_EXIT_GROUP, uintptr(code), 0, 0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fallocate(fd int, mode uint32, off int64, len int64) (err error) {
+       _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchdir(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+       _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fdatasync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getdents(fd int, buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getpgid(pid int) (pgid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+       pgid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       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, err error) {
+       r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+       prio = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettid() (tid int) {
+       r0, _, _ := RawSyscall(SYS_GETTID, 0, 0, 0)
+       tid = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getxattr(path string, attr string, dest []byte) (sz int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attr)
+       if err != nil {
+               return
+       }
+       var _p2 unsafe.Pointer
+       if len(dest) > 0 {
+               _p2 = unsafe.Pointer(&dest[0])
+       } else {
+               _p2 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       sz = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(pathname)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask))
+       use(unsafe.Pointer(_p0))
+       watchdesc = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyInit1(flags int) (fd int, err error) {
+       r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) {
+       r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0)
+       success = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kill(pid int, sig syscall.Signal) (err error) {
+       _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Klogctl(typ int, buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listxattr(path string, dest []byte) (sz int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(dest) > 0 {
+               _p1 = unsafe.Pointer(&dest[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)))
+       use(unsafe.Pointer(_p0))
+       sz = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+       _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pause() (err error) {
+       _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func PivotRoot(newroot string, putold string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(newroot)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(putold)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func prlimit(pid int, resource int, old *Rlimit, newlimit *Rlimit) (err error) {
+       _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(newlimit)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Removexattr(path string, attr string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attr)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(oldpath)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(newpath)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setdomainname(p []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sethostname(p []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+       pid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tv *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setns(fd int, nstype int) (err error) {
+       _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+       _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setxattr(path string, attr string, data []byte, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(attr)
+       if err != nil {
+               return
+       }
+       var _p2 unsafe.Pointer
+       if len(data) > 0 {
+               _p2 = unsafe.Pointer(&data[0])
+       } else {
+               _p2 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() {
+       Syscall(SYS_SYNC, 0, 0, 0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sysinfo(info *Sysinfo_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {
+       r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)
+       n = int64(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {
+       _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Times(tms *Tms) (ticks uintptr, err error) {
+       r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)
+       ticks = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Umask(mask int) (oldmask int) {
+       r0, _, _ := RawSyscall(SYS_UMASK, uintptr(mask), 0, 0)
+       oldmask = int(r0)
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Uname(buf *Utsname) (err error) {
+       _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(target string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(target)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unshare(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ustat(dev int, ubuf *Ustat_t) (err error) {
+       _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func exitThread(code int) (err error) {
+       _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, p *byte, np int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, p *byte, np int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+       _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Madvise(b []byte, advice int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+       _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, buf *Statfs_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+       _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(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() (euid int) {
+       r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)
+       euid = int(r0)
+       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 Getrlimit(resource int, rlim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+       if e1 != 0 {
+               err = errnoErr(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 Ioperm(from int, num int, on int) (err error) {
+       _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Iopl(level int) (err error) {
+       _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, n int) (err error) {
+       _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 unsafe.Pointer
+       if len(p) > 0 {
+               _p0 = unsafe.Pointer(&p[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seek(fd int, offset int64, whence int) (off int64, err error) {
+       r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))
+       off = int64(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
+       r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)
+       written = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsgid(gid int) (err error) {
+       _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setfsuid(uid int) (err error) {
+       _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(resource int, rlim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {
+       r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))
+       n = int64(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, buf *Statfs_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func SyncFileRange(fd int, off int64, n int64, flags int) (err error) {
+       _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {
+       r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(n int, list *_Gid_t) (nn int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+       nn = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(n int, list *_Gid_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+       _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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]int32) (err error) {
+       _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {
+       r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))
+       xaddr = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Time(t *Time_t) (tt Time_t, err error) {
+       r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)
+       tt = Time_t(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Utime(path string, buf *Utimbuf) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go
new file mode 100644 (file)
index 0000000..00ca1f9
--- /dev/null
@@ -0,0 +1,1326 @@
+// mksyscall.pl -l32 -netbsd syscall_bsd.go syscall_netbsd.go syscall_netbsd_386.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build 386,netbsd
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+       wpid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+       _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(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]int32) (err error) {
+       _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe() (fd1 int, fd2 int, err error) {
+       r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
+       fd1 = int(r0)
+       fd2 = int(r1)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getdents(fd int, buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+       r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+       nfd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+       _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+       _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+       r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+       _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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 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, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+       pgid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+       prio = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+       sid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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 syscall.Signal) (err error) {
+       _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+       r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+       _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+       _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+       _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+       use(unsafe.Pointer(_p0))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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), uintptr(offset>>32))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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), uintptr(offset>>32))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(buf) > 0 {
+               _p1 = unsafe.Pointer(&buf[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+       use(unsafe.Pointer(_p0))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(from)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(to)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)
+       newoffset = int64(int64(r1)<<32 | int64(r0))
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+       _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+       pid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+       _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)
+       ret = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+       _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go
new file mode 100644 (file)
index 0000000..03f31b9
--- /dev/null
@@ -0,0 +1,1326 @@
+// mksyscall.pl -netbsd syscall_bsd.go syscall_netbsd.go syscall_netbsd_amd64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,netbsd
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+       wpid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+       _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(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]int32) (err error) {
+       _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe() (fd1 int, fd2 int, err error) {
+       r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
+       fd1 = int(r0)
+       fd2 = int(r1)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getdents(fd int, buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+       r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+       nfd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+       _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+       _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+       r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+       _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))
+       if e1 != 0 {
+               err = errnoErr(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 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, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+       pgid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+       prio = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+       sid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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 syscall.Signal) (err error) {
+       _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+       r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+       _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+       _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+       _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+       use(unsafe.Pointer(_p0))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(buf) > 0 {
+               _p1 = unsafe.Pointer(&buf[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+       use(unsafe.Pointer(_p0))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(from)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(to)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)
+       newoffset = int64(r0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+       _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+       pid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+       _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)
+       ret = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+       _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go
new file mode 100644 (file)
index 0000000..84dc61c
--- /dev/null
@@ -0,0 +1,1326 @@
+// mksyscall.pl -l32 -arm syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build arm,netbsd
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+       wpid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+       _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(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]int32) (err error) {
+       _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe() (fd1 int, fd2 int, err error) {
+       r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
+       fd1 = int(r0)
+       fd2 = int(r1)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getdents(fd int, buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+       r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+       nfd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+       _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+       _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+       r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+       _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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 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, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+       pgid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+       prio = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+       sid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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 syscall.Signal) (err error) {
+       _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+       r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+       _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+       _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+       _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+       use(unsafe.Pointer(_p0))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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), uintptr(offset>>32))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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), uintptr(offset>>32))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(buf) > 0 {
+               _p1 = unsafe.Pointer(&buf[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+       use(unsafe.Pointer(_p0))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(from)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(to)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)
+       newoffset = int64(int64(r1)<<32 | int64(r0))
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+       _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+       pid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+       _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)
+       ret = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+       _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go
new file mode 100644 (file)
index 0000000..02b3528
--- /dev/null
@@ -0,0 +1,1386 @@
+// mksyscall.pl -l32 -openbsd syscall_bsd.go syscall_openbsd.go syscall_openbsd_386.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build 386,openbsd
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+       wpid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+       _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(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]int32) (err error) {
+       _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe(p *[2]_C_int) (err error) {
+       _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getdents(fd int, buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+       r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+       nfd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+       _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+       _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+       r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, stat *Statfs_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+       _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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 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, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+       pgid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+       prio = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+       sid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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 syscall.Signal) (err error) {
+       _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+       r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+       _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+       _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+       _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+       use(unsafe.Pointer(_p0))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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), uintptr(offset>>32))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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), uintptr(offset>>32))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(buf) > 0 {
+               _p1 = unsafe.Pointer(&buf[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+       use(unsafe.Pointer(_p0))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(from)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(to)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)
+       newoffset = int64(int64(r1)<<32 | int64(r0))
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setlogin(name string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(name)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+       _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+       pid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, stat *Statfs_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+       _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)
+       ret = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+       _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go
new file mode 100644 (file)
index 0000000..7dc2b7e
--- /dev/null
@@ -0,0 +1,1386 @@
+// mksyscall.pl -openbsd syscall_bsd.go syscall_openbsd.go syscall_openbsd_amd64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,openbsd
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+var _ syscall.Errno
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)
+       wpid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+       _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+       _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Shutdown(s int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(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]int32) (err error) {
+       _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {
+       r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       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))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func utimes(path string, timeval *[2]Timeval) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func futimes(fd int, timeval *[2]Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func pipe(p *[2]_C_int) (err error) {
+       _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func getdents(fd int, buf []byte) (n int, err error) {
+       var _p0 unsafe.Pointer
+       if len(buf) > 0 {
+               _p0 = unsafe.Pointer(&buf[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Access(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+       _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chflags(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chmod(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Chroot(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Close(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup(fd int) (nfd int, err error) {
+       r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)
+       nfd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Dup2(from int, to int) (err error) {
+       _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchflags(fd int, flags int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchmod(fd int, mode uint32) (err error) {
+       _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fchown(fd int, uid int, gid int) (err error) {
+       _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Flock(fd int, how int) (err error) {
+       _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fpathconf(fd int, name int) (val int, err error) {
+       r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fstatfs(fd int, stat *Statfs_t) (err error) {
+       _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Fsync(fd int) (err error) {
+       _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Ftruncate(fd int, length int64) (err error) {
+       _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))
+       if e1 != 0 {
+               err = errnoErr(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 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, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)
+       pgid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)
+       prio = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Getsid(pid int) (sid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)
+       sid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Gettimeofday(tv *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(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 syscall.Signal) (err error) {
+       _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Kqueue() (fd int, err error) {
+       r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lchown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Link(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Listen(s int, backlog int) (err error) {
+       _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Lstat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkdir(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mkfifo(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mlockall(flags int) (err error) {
+       _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Mprotect(b []byte, prot int) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlock(b []byte) (err error) {
+       var _p0 unsafe.Pointer
+       if len(b) > 0 {
+               _p0 = unsafe.Pointer(&b[0])
+       } else {
+               _p0 = unsafe.Pointer(&_zero)
+       }
+       _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Munlockall() (err error) {
+       _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+       _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Pathconf(path string, name int) (val int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)
+       use(unsafe.Pointer(_p0))
+       val = int(r0)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func read(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Readlink(path string, buf []byte) (n int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 unsafe.Pointer
+       if len(buf) > 0 {
+               _p1 = unsafe.Pointer(&buf[0])
+       } else {
+               _p1 = unsafe.Pointer(&_zero)
+       }
+       r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))
+       use(unsafe.Pointer(_p0))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rename(from string, to string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(from)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(to)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Revoke(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Rmdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)
+       newoffset = int64(r0)
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setegid(egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Seteuid(euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setgid(gid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setlogin(name string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(name)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpgid(pid int, pgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setpriority(which int, who int, prio int) (err error) {
+       _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setregid(rgid int, egid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setreuid(ruid int, euid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresgid(rgid int, egid int, sgid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setresuid(ruid int, euid int, suid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setsid() (pid int, err error) {
+       r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)
+       pid = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Settimeofday(tp *Timeval) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Setuid(uid int) (err error) {
+       _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Stat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Statfs(path string, stat *Statfs_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Symlink(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Sync() (err error) {
+       _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Truncate(path string, length int64) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(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) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func Unmount(path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func write(fd int, p []byte) (n int, err error) {
+       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)
+       if e1 != 0 {
+               err = errnoErr(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, err error) {
+       r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)
+       ret = uintptr(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func munmap(addr uintptr, length uintptr) (err error) {
+       _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
+
+// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
+
+func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
+       r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
+       n = int(r0)
+       if e1 != 0 {
+               err = errnoErr(e1)
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go
new file mode 100644 (file)
index 0000000..4326427
--- /dev/null
@@ -0,0 +1,1559 @@
+// mksyscall_solaris.pl syscall_solaris.go syscall_solaris_amd64.go
+// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
+
+// +build amd64,solaris
+
+package unix
+
+import (
+       "syscall"
+       "unsafe"
+)
+
+//go:cgo_import_dynamic libc_getsockname getsockname "libsocket.so"
+//go:cgo_import_dynamic libc_getcwd getcwd "libc.so"
+//go:cgo_import_dynamic libc_getgroups getgroups "libc.so"
+//go:cgo_import_dynamic libc_setgroups setgroups "libc.so"
+//go:cgo_import_dynamic libc_utimes utimes "libc.so"
+//go:cgo_import_dynamic libc_utimensat utimensat "libc.so"
+//go:cgo_import_dynamic libc_fcntl fcntl "libc.so"
+//go:cgo_import_dynamic libc_futimesat futimesat "libc.so"
+//go:cgo_import_dynamic libc_accept accept "libsocket.so"
+//go:cgo_import_dynamic libc_recvmsg recvmsg "libsocket.so"
+//go:cgo_import_dynamic libc_sendmsg sendmsg "libsocket.so"
+//go:cgo_import_dynamic libc_acct acct "libc.so"
+//go:cgo_import_dynamic libc_ioctl ioctl "libc.so"
+//go:cgo_import_dynamic libc_access access "libc.so"
+//go:cgo_import_dynamic libc_adjtime adjtime "libc.so"
+//go:cgo_import_dynamic libc_chdir chdir "libc.so"
+//go:cgo_import_dynamic libc_chmod chmod "libc.so"
+//go:cgo_import_dynamic libc_chown chown "libc.so"
+//go:cgo_import_dynamic libc_chroot chroot "libc.so"
+//go:cgo_import_dynamic libc_close close "libc.so"
+//go:cgo_import_dynamic libc_creat creat "libc.so"
+//go:cgo_import_dynamic libc_dup dup "libc.so"
+//go:cgo_import_dynamic libc_dup2 dup2 "libc.so"
+//go:cgo_import_dynamic libc_exit exit "libc.so"
+//go:cgo_import_dynamic libc_fchdir fchdir "libc.so"
+//go:cgo_import_dynamic libc_fchmod fchmod "libc.so"
+//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so"
+//go:cgo_import_dynamic libc_fchown fchown "libc.so"
+//go:cgo_import_dynamic libc_fchownat fchownat "libc.so"
+//go:cgo_import_dynamic libc_fdatasync fdatasync "libc.so"
+//go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so"
+//go:cgo_import_dynamic libc_fstat fstat "libc.so"
+//go:cgo_import_dynamic libc_getdents getdents "libc.so"
+//go:cgo_import_dynamic libc_getgid getgid "libc.so"
+//go:cgo_import_dynamic libc_getpid getpid "libc.so"
+//go:cgo_import_dynamic libc_getpgid getpgid "libc.so"
+//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.so"
+//go:cgo_import_dynamic libc_geteuid geteuid "libc.so"
+//go:cgo_import_dynamic libc_getegid getegid "libc.so"
+//go:cgo_import_dynamic libc_getppid getppid "libc.so"
+//go:cgo_import_dynamic libc_getpriority getpriority "libc.so"
+//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so"
+//go:cgo_import_dynamic libc_getrusage getrusage "libc.so"
+//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so"
+//go:cgo_import_dynamic libc_getuid getuid "libc.so"
+//go:cgo_import_dynamic libc_kill kill "libc.so"
+//go:cgo_import_dynamic libc_lchown lchown "libc.so"
+//go:cgo_import_dynamic libc_link link "libc.so"
+//go:cgo_import_dynamic libc_listen listen "libsocket.so"
+//go:cgo_import_dynamic libc_lstat lstat "libc.so"
+//go:cgo_import_dynamic libc_madvise madvise "libc.so"
+//go:cgo_import_dynamic libc_mkdir mkdir "libc.so"
+//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.so"
+//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.so"
+//go:cgo_import_dynamic libc_mkfifoat mkfifoat "libc.so"
+//go:cgo_import_dynamic libc_mknod mknod "libc.so"
+//go:cgo_import_dynamic libc_mknodat mknodat "libc.so"
+//go:cgo_import_dynamic libc_mlock mlock "libc.so"
+//go:cgo_import_dynamic libc_mlockall mlockall "libc.so"
+//go:cgo_import_dynamic libc_mprotect mprotect "libc.so"
+//go:cgo_import_dynamic libc_munlock munlock "libc.so"
+//go:cgo_import_dynamic libc_munlockall munlockall "libc.so"
+//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so"
+//go:cgo_import_dynamic libc_open open "libc.so"
+//go:cgo_import_dynamic libc_openat openat "libc.so"
+//go:cgo_import_dynamic libc_pathconf pathconf "libc.so"
+//go:cgo_import_dynamic libc_pause pause "libc.so"
+//go:cgo_import_dynamic libc_pread pread "libc.so"
+//go:cgo_import_dynamic libc_pwrite pwrite "libc.so"
+//go:cgo_import_dynamic libc_read read "libc.so"
+//go:cgo_import_dynamic libc_readlink readlink "libc.so"
+//go:cgo_import_dynamic libc_rename rename "libc.so"
+//go:cgo_import_dynamic libc_renameat renameat "libc.so"
+//go:cgo_import_dynamic libc_rmdir rmdir "libc.so"
+//go:cgo_import_dynamic libc_lseek lseek "libc.so"
+//go:cgo_import_dynamic libc_setegid setegid "libc.so"
+//go:cgo_import_dynamic libc_seteuid seteuid "libc.so"
+//go:cgo_import_dynamic libc_setgid setgid "libc.so"
+//go:cgo_import_dynamic libc_sethostname sethostname "libc.so"
+//go:cgo_import_dynamic libc_setpgid setpgid "libc.so"
+//go:cgo_import_dynamic libc_setpriority setpriority "libc.so"
+//go:cgo_import_dynamic libc_setregid setregid "libc.so"
+//go:cgo_import_dynamic libc_setreuid setreuid "libc.so"
+//go:cgo_import_dynamic libc_setrlimit setrlimit "libc.so"
+//go:cgo_import_dynamic libc_setsid setsid "libc.so"
+//go:cgo_import_dynamic libc_setuid setuid "libc.so"
+//go:cgo_import_dynamic libc_shutdown shutdown "libsocket.so"
+//go:cgo_import_dynamic libc_stat stat "libc.so"
+//go:cgo_import_dynamic libc_symlink symlink "libc.so"
+//go:cgo_import_dynamic libc_sync sync "libc.so"
+//go:cgo_import_dynamic libc_times times "libc.so"
+//go:cgo_import_dynamic libc_truncate truncate "libc.so"
+//go:cgo_import_dynamic libc_fsync fsync "libc.so"
+//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.so"
+//go:cgo_import_dynamic libc_umask umask "libc.so"
+//go:cgo_import_dynamic libc_uname uname "libc.so"
+//go:cgo_import_dynamic libc_umount umount "libc.so"
+//go:cgo_import_dynamic libc_unlink unlink "libc.so"
+//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so"
+//go:cgo_import_dynamic libc_ustat ustat "libc.so"
+//go:cgo_import_dynamic libc_utime utime "libc.so"
+//go:cgo_import_dynamic libc_bind bind "libsocket.so"
+//go:cgo_import_dynamic libc_connect connect "libsocket.so"
+//go:cgo_import_dynamic libc_mmap mmap "libc.so"
+//go:cgo_import_dynamic libc_munmap munmap "libc.so"
+//go:cgo_import_dynamic libc_sendto sendto "libsocket.so"
+//go:cgo_import_dynamic libc_socket socket "libsocket.so"
+//go:cgo_import_dynamic libc_socketpair socketpair "libsocket.so"
+//go:cgo_import_dynamic libc_write write "libc.so"
+//go:cgo_import_dynamic libc_getsockopt getsockopt "libsocket.so"
+//go:cgo_import_dynamic libc_getpeername getpeername "libsocket.so"
+//go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so"
+//go:cgo_import_dynamic libc_recvfrom recvfrom "libsocket.so"
+//go:cgo_import_dynamic libc_sysconf sysconf "libc.so"
+
+//go:linkname procgetsockname libc_getsockname
+//go:linkname procGetcwd libc_getcwd
+//go:linkname procgetgroups libc_getgroups
+//go:linkname procsetgroups libc_setgroups
+//go:linkname procutimes libc_utimes
+//go:linkname procutimensat libc_utimensat
+//go:linkname procfcntl libc_fcntl
+//go:linkname procfutimesat libc_futimesat
+//go:linkname procaccept libc_accept
+//go:linkname procrecvmsg libc_recvmsg
+//go:linkname procsendmsg libc_sendmsg
+//go:linkname procacct libc_acct
+//go:linkname procioctl libc_ioctl
+//go:linkname procAccess libc_access
+//go:linkname procAdjtime libc_adjtime
+//go:linkname procChdir libc_chdir
+//go:linkname procChmod libc_chmod
+//go:linkname procChown libc_chown
+//go:linkname procChroot libc_chroot
+//go:linkname procClose libc_close
+//go:linkname procCreat libc_creat
+//go:linkname procDup libc_dup
+//go:linkname procDup2 libc_dup2
+//go:linkname procExit libc_exit
+//go:linkname procFchdir libc_fchdir
+//go:linkname procFchmod libc_fchmod
+//go:linkname procFchmodat libc_fchmodat
+//go:linkname procFchown libc_fchown
+//go:linkname procFchownat libc_fchownat
+//go:linkname procFdatasync libc_fdatasync
+//go:linkname procFpathconf libc_fpathconf
+//go:linkname procFstat libc_fstat
+//go:linkname procGetdents libc_getdents
+//go:linkname procGetgid libc_getgid
+//go:linkname procGetpid libc_getpid
+//go:linkname procGetpgid libc_getpgid
+//go:linkname procGetpgrp libc_getpgrp
+//go:linkname procGeteuid libc_geteuid
+//go:linkname procGetegid libc_getegid
+//go:linkname procGetppid libc_getppid
+//go:linkname procGetpriority libc_getpriority
+//go:linkname procGetrlimit libc_getrlimit
+//go:linkname procGetrusage libc_getrusage
+//go:linkname procGettimeofday libc_gettimeofday
+//go:linkname procGetuid libc_getuid
+//go:linkname procKill libc_kill
+//go:linkname procLchown libc_lchown
+//go:linkname procLink libc_link
+//go:linkname proclisten libc_listen
+//go:linkname procLstat libc_lstat
+//go:linkname procMadvise libc_madvise
+//go:linkname procMkdir libc_mkdir
+//go:linkname procMkdirat libc_mkdirat
+//go:linkname procMkfifo libc_mkfifo
+//go:linkname procMkfifoat libc_mkfifoat
+//go:linkname procMknod libc_mknod
+//go:linkname procMknodat libc_mknodat
+//go:linkname procMlock libc_mlock
+//go:linkname procMlockall libc_mlockall
+//go:linkname procMprotect libc_mprotect
+//go:linkname procMunlock libc_munlock
+//go:linkname procMunlockall libc_munlockall
+//go:linkname procNanosleep libc_nanosleep
+//go:linkname procOpen libc_open
+//go:linkname procOpenat libc_openat
+//go:linkname procPathconf libc_pathconf
+//go:linkname procPause libc_pause
+//go:linkname procPread libc_pread
+//go:linkname procPwrite libc_pwrite
+//go:linkname procread libc_read
+//go:linkname procReadlink libc_readlink
+//go:linkname procRename libc_rename
+//go:linkname procRenameat libc_renameat
+//go:linkname procRmdir libc_rmdir
+//go:linkname proclseek libc_lseek
+//go:linkname procSetegid libc_setegid
+//go:linkname procSeteuid libc_seteuid
+//go:linkname procSetgid libc_setgid
+//go:linkname procSethostname libc_sethostname
+//go:linkname procSetpgid libc_setpgid
+//go:linkname procSetpriority libc_setpriority
+//go:linkname procSetregid libc_setregid
+//go:linkname procSetreuid libc_setreuid
+//go:linkname procSetrlimit libc_setrlimit
+//go:linkname procSetsid libc_setsid
+//go:linkname procSetuid libc_setuid
+//go:linkname procshutdown libc_shutdown
+//go:linkname procStat libc_stat
+//go:linkname procSymlink libc_symlink
+//go:linkname procSync libc_sync
+//go:linkname procTimes libc_times
+//go:linkname procTruncate libc_truncate
+//go:linkname procFsync libc_fsync
+//go:linkname procFtruncate libc_ftruncate
+//go:linkname procUmask libc_umask
+//go:linkname procUname libc_uname
+//go:linkname procumount libc_umount
+//go:linkname procUnlink libc_unlink
+//go:linkname procUnlinkat libc_unlinkat
+//go:linkname procUstat libc_ustat
+//go:linkname procUtime libc_utime
+//go:linkname procbind libc_bind
+//go:linkname procconnect libc_connect
+//go:linkname procmmap libc_mmap
+//go:linkname procmunmap libc_munmap
+//go:linkname procsendto libc_sendto
+//go:linkname procsocket libc_socket
+//go:linkname procsocketpair libc_socketpair
+//go:linkname procwrite libc_write
+//go:linkname procgetsockopt libc_getsockopt
+//go:linkname procgetpeername libc_getpeername
+//go:linkname procsetsockopt libc_setsockopt
+//go:linkname procrecvfrom libc_recvfrom
+//go:linkname procsysconf libc_sysconf
+
+var (
+       procgetsockname,
+       procGetcwd,
+       procgetgroups,
+       procsetgroups,
+       procutimes,
+       procutimensat,
+       procfcntl,
+       procfutimesat,
+       procaccept,
+       procrecvmsg,
+       procsendmsg,
+       procacct,
+       procioctl,
+       procAccess,
+       procAdjtime,
+       procChdir,
+       procChmod,
+       procChown,
+       procChroot,
+       procClose,
+       procCreat,
+       procDup,
+       procDup2,
+       procExit,
+       procFchdir,
+       procFchmod,
+       procFchmodat,
+       procFchown,
+       procFchownat,
+       procFdatasync,
+       procFpathconf,
+       procFstat,
+       procGetdents,
+       procGetgid,
+       procGetpid,
+       procGetpgid,
+       procGetpgrp,
+       procGeteuid,
+       procGetegid,
+       procGetppid,
+       procGetpriority,
+       procGetrlimit,
+       procGetrusage,
+       procGettimeofday,
+       procGetuid,
+       procKill,
+       procLchown,
+       procLink,
+       proclisten,
+       procLstat,
+       procMadvise,
+       procMkdir,
+       procMkdirat,
+       procMkfifo,
+       procMkfifoat,
+       procMknod,
+       procMknodat,
+       procMlock,
+       procMlockall,
+       procMprotect,
+       procMunlock,
+       procMunlockall,
+       procNanosleep,
+       procOpen,
+       procOpenat,
+       procPathconf,
+       procPause,
+       procPread,
+       procPwrite,
+       procread,
+       procReadlink,
+       procRename,
+       procRenameat,
+       procRmdir,
+       proclseek,
+       procSetegid,
+       procSeteuid,
+       procSetgid,
+       procSethostname,
+       procSetpgid,
+       procSetpriority,
+       procSetregid,
+       procSetreuid,
+       procSetrlimit,
+       procSetsid,
+       procSetuid,
+       procshutdown,
+       procStat,
+       procSymlink,
+       procSync,
+       procTimes,
+       procTruncate,
+       procFsync,
+       procFtruncate,
+       procUmask,
+       procUname,
+       procumount,
+       procUnlink,
+       procUnlinkat,
+       procUstat,
+       procUtime,
+       procbind,
+       procconnect,
+       procmmap,
+       procmunmap,
+       procsendto,
+       procsocket,
+       procsocketpair,
+       procwrite,
+       procgetsockopt,
+       procgetpeername,
+       procsetsockopt,
+       procrecvfrom,
+       procsysconf syscallFunc
+)
+
+func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetsockname)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Getcwd(buf []byte) (n int, err error) {
+       var _p0 *byte
+       if len(buf) > 0 {
+               _p0 = &buf[0]
+       }
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetcwd)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func getgroups(ngid int, gid *_Gid_t) (n int, err error) {
+       r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func setgroups(ngid int, gid *_Gid_t) (err error) {
+       _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procsetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func utimes(path string, times *[2]Timeval) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimes)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0, 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func utimensat(fd int, path string, times *[2]Timespec, flag int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimensat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flag), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func fcntl(fd int, cmd int, arg int) (val int, err error) {
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0)
+       val = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func futimesat(fildes int, path *byte, times *[2]Timeval) (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfutimesat)), 3, uintptr(fildes), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)), 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept)), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procrecvmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsendmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func acct(path *byte) (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procacct)), 1, uintptr(unsafe.Pointer(path)), 0, 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func ioctl(fd int, req int, arg uintptr) (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Access(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAccess)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Adjtime(delta *Timeval, olddelta *Timeval) (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAdjtime)), 2, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Chdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Chmod(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChmod)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Chown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Chroot(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChroot)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Close(fd int) (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procClose)), 1, uintptr(fd), 0, 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Creat(path string, mode uint32) (fd int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procCreat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Dup(fd int) (nfd int, err error) {
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup)), 1, uintptr(fd), 0, 0, 0, 0, 0)
+       nfd = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Dup2(oldfd int, newfd int) (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Exit(code int) {
+       sysvicall6(uintptr(unsafe.Pointer(&procExit)), 1, uintptr(code), 0, 0, 0, 0, 0)
+       return
+}
+
+func Fchdir(fd int) (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Fchmod(fd int, mode uint32) (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Fchown(fd int, uid int, gid int) (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchownat)), 5, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Fdatasync(fd int) (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Fpathconf(fd int, name int) (val int, err error) {
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFpathconf)), 2, uintptr(fd), uintptr(name), 0, 0, 0, 0)
+       val = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Fstat(fd int, stat *Stat_t) (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstat)), 2, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Getdents(fd int, buf []byte, basep *uintptr) (n int, err error) {
+       var _p0 *byte
+       if len(buf) > 0 {
+               _p0 = &buf[0]
+       }
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetdents)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Getgid() (gid int) {
+       r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetgid)), 0, 0, 0, 0, 0, 0, 0)
+       gid = int(r0)
+       return
+}
+
+func Getpid() (pid int) {
+       r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpid)), 0, 0, 0, 0, 0, 0, 0)
+       pid = int(r0)
+       return
+}
+
+func Getpgid(pid int) (pgid int, err error) {
+       r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0)
+       pgid = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Getpgrp() (pgid int, err error) {
+       r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgrp)), 0, 0, 0, 0, 0, 0, 0)
+       pgid = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Geteuid() (euid int) {
+       r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGeteuid)), 0, 0, 0, 0, 0, 0, 0)
+       euid = int(r0)
+       return
+}
+
+func Getegid() (egid int) {
+       r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetegid)), 0, 0, 0, 0, 0, 0, 0)
+       egid = int(r0)
+       return
+}
+
+func Getppid() (ppid int) {
+       r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetppid)), 0, 0, 0, 0, 0, 0, 0)
+       ppid = int(r0)
+       return
+}
+
+func Getpriority(which int, who int) (n int, err error) {
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Getrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrlimit)), 2, uintptr(which), uintptr(unsafe.Pointer(lim)), 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Getrusage(who int, rusage *Rusage) (err error) {
+       _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrusage)), 2, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Gettimeofday(tv *Timeval) (err error) {
+       _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGettimeofday)), 1, uintptr(unsafe.Pointer(tv)), 0, 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Getuid() (uid int) {
+       r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetuid)), 0, 0, 0, 0, 0, 0, 0)
+       uid = int(r0)
+       return
+}
+
+func Kill(pid int, signum syscall.Signal) (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procKill)), 2, uintptr(pid), uintptr(signum), 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Lchown(path string, uid int, gid int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLchown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Link(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Listen(s int, backlog int) (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proclisten)), 2, uintptr(s), uintptr(backlog), 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Lstat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLstat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Madvise(b []byte, advice int) (err error) {
+       var _p0 *byte
+       if len(b) > 0 {
+               _p0 = &b[0]
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMadvise)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(advice), 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Mkdir(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdir)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Mkdirat(dirfd int, path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdirat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Mkfifo(path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifo)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Mkfifoat(dirfd int, path string, mode uint32) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifoat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Mknod(path string, mode uint32, dev int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknod)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Mlock(b []byte) (err error) {
+       var _p0 *byte
+       if len(b) > 0 {
+               _p0 = &b[0]
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Mlockall(flags int) (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Mprotect(b []byte, prot int) (err error) {
+       var _p0 *byte
+       if len(b) > 0 {
+               _p0 = &b[0]
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMprotect)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(prot), 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Munlock(b []byte) (err error) {
+       var _p0 *byte
+       if len(b) > 0 {
+               _p0 = &b[0]
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Munlockall() (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlockall)), 0, 0, 0, 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Nanosleep(time *Timespec, leftover *Timespec) (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procNanosleep)), 2, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Open(path string, mode int, perm uint32) (fd int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpen)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpenat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)
+       use(unsafe.Pointer(_p0))
+       fd = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Pathconf(path string, name int) (val int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPathconf)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0, 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       val = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Pause() (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPause)), 0, 0, 0, 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Pread(fd int, p []byte, offset int64) (n int, err error) {
+       var _p0 *byte
+       if len(p) > 0 {
+               _p0 = &p[0]
+       }
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPread)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Pwrite(fd int, p []byte, offset int64) (n int, err error) {
+       var _p0 *byte
+       if len(p) > 0 {
+               _p0 = &p[0]
+       }
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPwrite)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func read(fd int, p []byte) (n int, err error) {
+       var _p0 *byte
+       if len(p) > 0 {
+               _p0 = &p[0]
+       }
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procread)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Readlink(path string, buf []byte) (n int, err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       if len(buf) > 0 {
+               _p1 = &buf[0]
+       }
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procReadlink)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(len(buf)), 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       n = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Rename(from string, to string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(from)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(to)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRename)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(oldpath)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(newpath)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRenameat)), 4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Rmdir(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRmdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Seek(fd int, offset int64, whence int) (newoffset int64, err error) {
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proclseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0)
+       newoffset = int64(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Setegid(egid int) (err error) {
+       _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetegid)), 1, uintptr(egid), 0, 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Seteuid(euid int) (err error) {
+       _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSeteuid)), 1, uintptr(euid), 0, 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Setgid(gid int) (err error) {
+       _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetgid)), 1, uintptr(gid), 0, 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Sethostname(p []byte) (err error) {
+       var _p0 *byte
+       if len(p) > 0 {
+               _p0 = &p[0]
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Setpgid(pid int, pgid int) (err error) {
+       _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Setpriority(which int, who int, prio int) (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSetpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Setregid(rgid int, egid int) (err error) {
+       _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Setreuid(ruid int, euid int) (err error) {
+       _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Setrlimit(which int, lim *Rlimit) (err error) {
+       _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetrlimit)), 2, uintptr(which), uintptr(unsafe.Pointer(lim)), 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Setsid() (pid int, err error) {
+       r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetsid)), 0, 0, 0, 0, 0, 0, 0)
+       pid = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Setuid(uid int) (err error) {
+       _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetuid)), 1, uintptr(uid), 0, 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Shutdown(s int, how int) (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procshutdown)), 2, uintptr(s), uintptr(how), 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Stat(path string, stat *Stat_t) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Symlink(path string, link string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       var _p1 *byte
+       _p1, err = BytePtrFromString(link)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSymlink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       use(unsafe.Pointer(_p1))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Sync() (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSync)), 0, 0, 0, 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Times(tms *Tms) (ticks uintptr, err error) {
+       r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procTimes)), 1, uintptr(unsafe.Pointer(tms)), 0, 0, 0, 0, 0)
+       ticks = uintptr(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Truncate(path string, length int64) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procTruncate)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0, 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Fsync(fd int) (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFsync)), 1, uintptr(fd), 0, 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Ftruncate(fd int, length int64) (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFtruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Umask(mask int) (oldmask int) {
+       r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procUmask)), 1, uintptr(mask), 0, 0, 0, 0, 0)
+       oldmask = int(r0)
+       return
+}
+
+func Uname(buf *Utsname) (err error) {
+       _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procUname)), 1, uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Unmount(target string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(target)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procumount)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Unlink(path string) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlink)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Unlinkat(dirfd int, path string, flags int) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlinkat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Ustat(dev int, ubuf *Ustat_t) (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUstat)), 2, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func Utime(path string, buf *Utimbuf) (err error) {
+       var _p0 *byte
+       _p0, err = BytePtrFromString(path)
+       if err != nil {
+               return
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUtime)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0)
+       use(unsafe.Pointer(_p0))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procbind)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procconnect)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmmap)), 6, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))
+       ret = uintptr(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func munmap(addr uintptr, length uintptr) (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmunmap)), 2, uintptr(addr), uintptr(length), 0, 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {
+       var _p0 *byte
+       if len(buf) > 0 {
+               _p0 = &buf[0]
+       }
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsendto)), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func socket(domain int, typ int, proto int) (fd int, err error) {
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsocket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0)
+       fd = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {
+       _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procsocketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func write(fd int, p []byte) (n int, err error) {
+       var _p0 *byte
+       if len(p) > 0 {
+               _p0 = &p[0]
+       }
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwrite)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0)
+       n = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {
+       _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetpeername)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {
+       _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsetsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {
+       var _p0 *byte
+       if len(p) > 0 {
+               _p0 = &p[0]
+       }
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procrecvfrom)), 6, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))
+       n = int(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
+
+func sysconf(name int) (n int64, err error) {
+       r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsysconf)), 1, uintptr(name), 0, 0, 0, 0, 0)
+       n = int64(r0)
+       if e1 != 0 {
+               err = e1
+       }
+       return
+}
diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd.go
new file mode 100644 (file)
index 0000000..83bb935
--- /dev/null
@@ -0,0 +1,270 @@
+// mksysctl_openbsd.pl
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+package unix
+
+type mibentry struct {
+       ctlname string
+       ctloid  []_C_int
+}
+
+var sysctlMib = []mibentry{
+       {"ddb.console", []_C_int{9, 6}},
+       {"ddb.log", []_C_int{9, 7}},
+       {"ddb.max_line", []_C_int{9, 3}},
+       {"ddb.max_width", []_C_int{9, 2}},
+       {"ddb.panic", []_C_int{9, 5}},
+       {"ddb.radix", []_C_int{9, 1}},
+       {"ddb.tab_stop_width", []_C_int{9, 4}},
+       {"ddb.trigger", []_C_int{9, 8}},
+       {"fs.posix.setuid", []_C_int{3, 1, 1}},
+       {"hw.allowpowerdown", []_C_int{6, 22}},
+       {"hw.byteorder", []_C_int{6, 4}},
+       {"hw.cpuspeed", []_C_int{6, 12}},
+       {"hw.diskcount", []_C_int{6, 10}},
+       {"hw.disknames", []_C_int{6, 8}},
+       {"hw.diskstats", []_C_int{6, 9}},
+       {"hw.machine", []_C_int{6, 1}},
+       {"hw.model", []_C_int{6, 2}},
+       {"hw.ncpu", []_C_int{6, 3}},
+       {"hw.ncpufound", []_C_int{6, 21}},
+       {"hw.pagesize", []_C_int{6, 7}},
+       {"hw.physmem", []_C_int{6, 19}},
+       {"hw.product", []_C_int{6, 15}},
+       {"hw.serialno", []_C_int{6, 17}},
+       {"hw.setperf", []_C_int{6, 13}},
+       {"hw.usermem", []_C_int{6, 20}},
+       {"hw.uuid", []_C_int{6, 18}},
+       {"hw.vendor", []_C_int{6, 14}},
+       {"hw.version", []_C_int{6, 16}},
+       {"kern.arandom", []_C_int{1, 37}},
+       {"kern.argmax", []_C_int{1, 8}},
+       {"kern.boottime", []_C_int{1, 21}},
+       {"kern.bufcachepercent", []_C_int{1, 72}},
+       {"kern.ccpu", []_C_int{1, 45}},
+       {"kern.clockrate", []_C_int{1, 12}},
+       {"kern.consdev", []_C_int{1, 75}},
+       {"kern.cp_time", []_C_int{1, 40}},
+       {"kern.cp_time2", []_C_int{1, 71}},
+       {"kern.cryptodevallowsoft", []_C_int{1, 53}},
+       {"kern.domainname", []_C_int{1, 22}},
+       {"kern.file", []_C_int{1, 73}},
+       {"kern.forkstat", []_C_int{1, 42}},
+       {"kern.fscale", []_C_int{1, 46}},
+       {"kern.fsync", []_C_int{1, 33}},
+       {"kern.hostid", []_C_int{1, 11}},
+       {"kern.hostname", []_C_int{1, 10}},
+       {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}},
+       {"kern.job_control", []_C_int{1, 19}},
+       {"kern.malloc.buckets", []_C_int{1, 39, 1}},
+       {"kern.malloc.kmemnames", []_C_int{1, 39, 3}},
+       {"kern.maxclusters", []_C_int{1, 67}},
+       {"kern.maxfiles", []_C_int{1, 7}},
+       {"kern.maxlocksperuid", []_C_int{1, 70}},
+       {"kern.maxpartitions", []_C_int{1, 23}},
+       {"kern.maxproc", []_C_int{1, 6}},
+       {"kern.maxthread", []_C_int{1, 25}},
+       {"kern.maxvnodes", []_C_int{1, 5}},
+       {"kern.mbstat", []_C_int{1, 59}},
+       {"kern.msgbuf", []_C_int{1, 48}},
+       {"kern.msgbufsize", []_C_int{1, 38}},
+       {"kern.nchstats", []_C_int{1, 41}},
+       {"kern.netlivelocks", []_C_int{1, 76}},
+       {"kern.nfiles", []_C_int{1, 56}},
+       {"kern.ngroups", []_C_int{1, 18}},
+       {"kern.nosuidcoredump", []_C_int{1, 32}},
+       {"kern.nprocs", []_C_int{1, 47}},
+       {"kern.nselcoll", []_C_int{1, 43}},
+       {"kern.nthreads", []_C_int{1, 26}},
+       {"kern.numvnodes", []_C_int{1, 58}},
+       {"kern.osrelease", []_C_int{1, 2}},
+       {"kern.osrevision", []_C_int{1, 3}},
+       {"kern.ostype", []_C_int{1, 1}},
+       {"kern.osversion", []_C_int{1, 27}},
+       {"kern.pool_debug", []_C_int{1, 77}},
+       {"kern.posix1version", []_C_int{1, 17}},
+       {"kern.proc", []_C_int{1, 66}},
+       {"kern.random", []_C_int{1, 31}},
+       {"kern.rawpartition", []_C_int{1, 24}},
+       {"kern.saved_ids", []_C_int{1, 20}},
+       {"kern.securelevel", []_C_int{1, 9}},
+       {"kern.seminfo", []_C_int{1, 61}},
+       {"kern.shminfo", []_C_int{1, 62}},
+       {"kern.somaxconn", []_C_int{1, 28}},
+       {"kern.sominconn", []_C_int{1, 29}},
+       {"kern.splassert", []_C_int{1, 54}},
+       {"kern.stackgap_random", []_C_int{1, 50}},
+       {"kern.sysvipc_info", []_C_int{1, 51}},
+       {"kern.sysvmsg", []_C_int{1, 34}},
+       {"kern.sysvsem", []_C_int{1, 35}},
+       {"kern.sysvshm", []_C_int{1, 36}},
+       {"kern.timecounter.choice", []_C_int{1, 69, 4}},
+       {"kern.timecounter.hardware", []_C_int{1, 69, 3}},
+       {"kern.timecounter.tick", []_C_int{1, 69, 1}},
+       {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}},
+       {"kern.tty.maxptys", []_C_int{1, 44, 6}},
+       {"kern.tty.nptys", []_C_int{1, 44, 7}},
+       {"kern.tty.tk_cancc", []_C_int{1, 44, 4}},
+       {"kern.tty.tk_nin", []_C_int{1, 44, 1}},
+       {"kern.tty.tk_nout", []_C_int{1, 44, 2}},
+       {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}},
+       {"kern.tty.ttyinfo", []_C_int{1, 44, 5}},
+       {"kern.ttycount", []_C_int{1, 57}},
+       {"kern.userasymcrypto", []_C_int{1, 60}},
+       {"kern.usercrypto", []_C_int{1, 52}},
+       {"kern.usermount", []_C_int{1, 30}},
+       {"kern.version", []_C_int{1, 4}},
+       {"kern.vnode", []_C_int{1, 13}},
+       {"kern.watchdog.auto", []_C_int{1, 64, 2}},
+       {"kern.watchdog.period", []_C_int{1, 64, 1}},
+       {"net.bpf.bufsize", []_C_int{4, 31, 1}},
+       {"net.bpf.maxbufsize", []_C_int{4, 31, 2}},
+       {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}},
+       {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}},
+       {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}},
+       {"net.inet.carp.log", []_C_int{4, 2, 112, 3}},
+       {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}},
+       {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}},
+       {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}},
+       {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}},
+       {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}},
+       {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}},
+       {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}},
+       {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}},
+       {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}},
+       {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}},
+       {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}},
+       {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}},
+       {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}},
+       {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}},
+       {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}},
+       {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}},
+       {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}},
+       {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}},
+       {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}},
+       {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}},
+       {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}},
+       {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}},
+       {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}},
+       {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}},
+       {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}},
+       {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}},
+       {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}},
+       {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}},
+       {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}},
+       {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}},
+       {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}},
+       {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}},
+       {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}},
+       {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}},
+       {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}},
+       {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}},
+       {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}},
+       {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}},
+       {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}},
+       {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}},
+       {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}},
+       {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}},
+       {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}},
+       {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}},
+       {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}},
+       {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}},
+       {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}},
+       {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}},
+       {"net.inet.mobileip.allow", []_C_int{4, 2, 55, 1}},
+       {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}},
+       {"net.inet.pim.stats", []_C_int{4, 2, 103, 1}},
+       {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}},
+       {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}},
+       {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}},
+       {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}},
+       {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}},
+       {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}},
+       {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}},
+       {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}},
+       {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}},
+       {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}},
+       {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}},
+       {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}},
+       {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}},
+       {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}},
+       {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}},
+       {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}},
+       {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}},
+       {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}},
+       {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}},
+       {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}},
+       {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}},
+       {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}},
+       {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}},
+       {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}},
+       {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}},
+       {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}},
+       {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}},
+       {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}},
+       {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}},
+       {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}},
+       {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}},
+       {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}},
+       {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}},
+       {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}},
+       {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}},
+       {"net.inet6.icmp6.nd6_prune", []_C_int{4, 24, 30, 6}},
+       {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}},
+       {"net.inet6.icmp6.nd6_useloopback", []_C_int{4, 24, 30, 11}},
+       {"net.inet6.icmp6.nodeinfo", []_C_int{4, 24, 30, 13}},
+       {"net.inet6.icmp6.rediraccept", []_C_int{4, 24, 30, 2}},
+       {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}},
+       {"net.inet6.ip6.accept_rtadv", []_C_int{4, 24, 17, 12}},
+       {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}},
+       {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}},
+       {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}},
+       {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}},
+       {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}},
+       {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}},
+       {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}},
+       {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}},
+       {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}},
+       {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}},
+       {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}},
+       {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}},
+       {"net.inet6.ip6.maxifdefrouters", []_C_int{4, 24, 17, 47}},
+       {"net.inet6.ip6.maxifprefixes", []_C_int{4, 24, 17, 46}},
+       {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}},
+       {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}},
+       {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}},
+       {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}},
+       {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}},
+       {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}},
+       {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}},
+       {"net.inet6.ip6.rr_prune", []_C_int{4, 24, 17, 22}},
+       {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}},
+       {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}},
+       {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}},
+       {"net.inet6.ip6.v6only", []_C_int{4, 24, 17, 24}},
+       {"net.key.sadb_dump", []_C_int{4, 30, 1}},
+       {"net.key.spd_dump", []_C_int{4, 30, 2}},
+       {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}},
+       {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}},
+       {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}},
+       {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}},
+       {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}},
+       {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}},
+       {"net.mpls.maxloop_inkernel", []_C_int{4, 33, 4}},
+       {"net.mpls.ttl", []_C_int{4, 33, 2}},
+       {"net.pflow.stats", []_C_int{4, 34, 1}},
+       {"net.pipex.enable", []_C_int{4, 35, 1}},
+       {"vm.anonmin", []_C_int{2, 7}},
+       {"vm.loadavg", []_C_int{2, 2}},
+       {"vm.maxslp", []_C_int{2, 10}},
+       {"vm.nkmempages", []_C_int{2, 6}},
+       {"vm.psstrings", []_C_int{2, 3}},
+       {"vm.swapencrypt.enable", []_C_int{2, 5, 0}},
+       {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}},
+       {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}},
+       {"vm.uspace", []_C_int{2, 11}},
+       {"vm.uvmexp", []_C_int{2, 4}},
+       {"vm.vmmeter", []_C_int{2, 1}},
+       {"vm.vnodemin", []_C_int{2, 9}},
+       {"vm.vtextmin", []_C_int{2, 8}},
+}
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go
new file mode 100644 (file)
index 0000000..2786773
--- /dev/null
@@ -0,0 +1,398 @@
+// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/sys/syscall.h
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build 386,darwin
+
+package unix
+
+const (
+       SYS_SYSCALL                        = 0
+       SYS_EXIT                           = 1
+       SYS_FORK                           = 2
+       SYS_READ                           = 3
+       SYS_WRITE                          = 4
+       SYS_OPEN                           = 5
+       SYS_CLOSE                          = 6
+       SYS_WAIT4                          = 7
+       SYS_LINK                           = 9
+       SYS_UNLINK                         = 10
+       SYS_CHDIR                          = 12
+       SYS_FCHDIR                         = 13
+       SYS_MKNOD                          = 14
+       SYS_CHMOD                          = 15
+       SYS_CHOWN                          = 16
+       SYS_GETFSSTAT                      = 18
+       SYS_GETPID                         = 20
+       SYS_SETUID                         = 23
+       SYS_GETUID                         = 24
+       SYS_GETEUID                        = 25
+       SYS_PTRACE                         = 26
+       SYS_RECVMSG                        = 27
+       SYS_SENDMSG                        = 28
+       SYS_RECVFROM                       = 29
+       SYS_ACCEPT                         = 30
+       SYS_GETPEERNAME                    = 31
+       SYS_GETSOCKNAME                    = 32
+       SYS_ACCESS                         = 33
+       SYS_CHFLAGS                        = 34
+       SYS_FCHFLAGS                       = 35
+       SYS_SYNC                           = 36
+       SYS_KILL                           = 37
+       SYS_GETPPID                        = 39
+       SYS_DUP                            = 41
+       SYS_PIPE                           = 42
+       SYS_GETEGID                        = 43
+       SYS_SIGACTION                      = 46
+       SYS_GETGID                         = 47
+       SYS_SIGPROCMASK                    = 48
+       SYS_GETLOGIN                       = 49
+       SYS_SETLOGIN                       = 50
+       SYS_ACCT                           = 51
+       SYS_SIGPENDING                     = 52
+       SYS_SIGALTSTACK                    = 53
+       SYS_IOCTL                          = 54
+       SYS_REBOOT                         = 55
+       SYS_REVOKE                         = 56
+       SYS_SYMLINK                        = 57
+       SYS_READLINK                       = 58
+       SYS_EXECVE                         = 59
+       SYS_UMASK                          = 60
+       SYS_CHROOT                         = 61
+       SYS_MSYNC                          = 65
+       SYS_VFORK                          = 66
+       SYS_MUNMAP                         = 73
+       SYS_MPROTECT                       = 74
+       SYS_MADVISE                        = 75
+       SYS_MINCORE                        = 78
+       SYS_GETGROUPS                      = 79
+       SYS_SETGROUPS                      = 80
+       SYS_GETPGRP                        = 81
+       SYS_SETPGID                        = 82
+       SYS_SETITIMER                      = 83
+       SYS_SWAPON                         = 85
+       SYS_GETITIMER                      = 86
+       SYS_GETDTABLESIZE                  = 89
+       SYS_DUP2                           = 90
+       SYS_FCNTL                          = 92
+       SYS_SELECT                         = 93
+       SYS_FSYNC                          = 95
+       SYS_SETPRIORITY                    = 96
+       SYS_SOCKET                         = 97
+       SYS_CONNECT                        = 98
+       SYS_GETPRIORITY                    = 100
+       SYS_BIND                           = 104
+       SYS_SETSOCKOPT                     = 105
+       SYS_LISTEN                         = 106
+       SYS_SIGSUSPEND                     = 111
+       SYS_GETTIMEOFDAY                   = 116
+       SYS_GETRUSAGE                      = 117
+       SYS_GETSOCKOPT                     = 118
+       SYS_READV                          = 120
+       SYS_WRITEV                         = 121
+       SYS_SETTIMEOFDAY                   = 122
+       SYS_FCHOWN                         = 123
+       SYS_FCHMOD                         = 124
+       SYS_SETREUID                       = 126
+       SYS_SETREGID                       = 127
+       SYS_RENAME                         = 128
+       SYS_FLOCK                          = 131
+       SYS_MKFIFO                         = 132
+       SYS_SENDTO                         = 133
+       SYS_SHUTDOWN                       = 134
+       SYS_SOCKETPAIR                     = 135
+       SYS_MKDIR                          = 136
+       SYS_RMDIR                          = 137
+       SYS_UTIMES                         = 138
+       SYS_FUTIMES                        = 139
+       SYS_ADJTIME                        = 140
+       SYS_GETHOSTUUID                    = 142
+       SYS_SETSID                         = 147
+       SYS_GETPGID                        = 151
+       SYS_SETPRIVEXEC                    = 152
+       SYS_PREAD                          = 153
+       SYS_PWRITE                         = 154
+       SYS_NFSSVC                         = 155
+       SYS_STATFS                         = 157
+       SYS_FSTATFS                        = 158
+       SYS_UNMOUNT                        = 159
+       SYS_GETFH                          = 161
+       SYS_QUOTACTL                       = 165
+       SYS_MOUNT                          = 167
+       SYS_CSOPS                          = 169
+       SYS_CSOPS_AUDITTOKEN               = 170
+       SYS_WAITID                         = 173
+       SYS_KDEBUG_TRACE64                 = 179
+       SYS_KDEBUG_TRACE                   = 180
+       SYS_SETGID                         = 181
+       SYS_SETEGID                        = 182
+       SYS_SETEUID                        = 183
+       SYS_SIGRETURN                      = 184
+       SYS_CHUD                           = 185
+       SYS_FDATASYNC                      = 187
+       SYS_STAT                           = 188
+       SYS_FSTAT                          = 189
+       SYS_LSTAT                          = 190
+       SYS_PATHCONF                       = 191
+       SYS_FPATHCONF                      = 192
+       SYS_GETRLIMIT                      = 194
+       SYS_SETRLIMIT                      = 195
+       SYS_GETDIRENTRIES                  = 196
+       SYS_MMAP                           = 197
+       SYS_LSEEK                          = 199
+       SYS_TRUNCATE                       = 200
+       SYS_FTRUNCATE                      = 201
+       SYS_SYSCTL                         = 202
+       SYS_MLOCK                          = 203
+       SYS_MUNLOCK                        = 204
+       SYS_UNDELETE                       = 205
+       SYS_OPEN_DPROTECTED_NP             = 216
+       SYS_GETATTRLIST                    = 220
+       SYS_SETATTRLIST                    = 221
+       SYS_GETDIRENTRIESATTR              = 222
+       SYS_EXCHANGEDATA                   = 223
+       SYS_SEARCHFS                       = 225
+       SYS_DELETE                         = 226
+       SYS_COPYFILE                       = 227
+       SYS_FGETATTRLIST                   = 228
+       SYS_FSETATTRLIST                   = 229
+       SYS_POLL                           = 230
+       SYS_WATCHEVENT                     = 231
+       SYS_WAITEVENT                      = 232
+       SYS_MODWATCH                       = 233
+       SYS_GETXATTR                       = 234
+       SYS_FGETXATTR                      = 235
+       SYS_SETXATTR                       = 236
+       SYS_FSETXATTR                      = 237
+       SYS_REMOVEXATTR                    = 238
+       SYS_FREMOVEXATTR                   = 239
+       SYS_LISTXATTR                      = 240
+       SYS_FLISTXATTR                     = 241
+       SYS_FSCTL                          = 242
+       SYS_INITGROUPS                     = 243
+       SYS_POSIX_SPAWN                    = 244
+       SYS_FFSCTL                         = 245
+       SYS_NFSCLNT                        = 247
+       SYS_FHOPEN                         = 248
+       SYS_MINHERIT                       = 250
+       SYS_SEMSYS                         = 251
+       SYS_MSGSYS                         = 252
+       SYS_SHMSYS                         = 253
+       SYS_SEMCTL                         = 254
+       SYS_SEMGET                         = 255
+       SYS_SEMOP                          = 256
+       SYS_MSGCTL                         = 258
+       SYS_MSGGET                         = 259
+       SYS_MSGSND                         = 260
+       SYS_MSGRCV                         = 261
+       SYS_SHMAT                          = 262
+       SYS_SHMCTL                         = 263
+       SYS_SHMDT                          = 264
+       SYS_SHMGET                         = 265
+       SYS_SHM_OPEN                       = 266
+       SYS_SHM_UNLINK                     = 267
+       SYS_SEM_OPEN                       = 268
+       SYS_SEM_CLOSE                      = 269
+       SYS_SEM_UNLINK                     = 270
+       SYS_SEM_WAIT                       = 271
+       SYS_SEM_TRYWAIT                    = 272
+       SYS_SEM_POST                       = 273
+       SYS_SYSCTLBYNAME                   = 274
+       SYS_OPEN_EXTENDED                  = 277
+       SYS_UMASK_EXTENDED                 = 278
+       SYS_STAT_EXTENDED                  = 279
+       SYS_LSTAT_EXTENDED                 = 280
+       SYS_FSTAT_EXTENDED                 = 281
+       SYS_CHMOD_EXTENDED                 = 282
+       SYS_FCHMOD_EXTENDED                = 283
+       SYS_ACCESS_EXTENDED                = 284
+       SYS_SETTID                         = 285
+       SYS_GETTID                         = 286
+       SYS_SETSGROUPS                     = 287
+       SYS_GETSGROUPS                     = 288
+       SYS_SETWGROUPS                     = 289
+       SYS_GETWGROUPS                     = 290
+       SYS_MKFIFO_EXTENDED                = 291
+       SYS_MKDIR_EXTENDED                 = 292
+       SYS_IDENTITYSVC                    = 293
+       SYS_SHARED_REGION_CHECK_NP         = 294
+       SYS_VM_PRESSURE_MONITOR            = 296
+       SYS_PSYNCH_RW_LONGRDLOCK           = 297
+       SYS_PSYNCH_RW_YIELDWRLOCK          = 298
+       SYS_PSYNCH_RW_DOWNGRADE            = 299
+       SYS_PSYNCH_RW_UPGRADE              = 300
+       SYS_PSYNCH_MUTEXWAIT               = 301
+       SYS_PSYNCH_MUTEXDROP               = 302
+       SYS_PSYNCH_CVBROAD                 = 303
+       SYS_PSYNCH_CVSIGNAL                = 304
+       SYS_PSYNCH_CVWAIT                  = 305
+       SYS_PSYNCH_RW_RDLOCK               = 306
+       SYS_PSYNCH_RW_WRLOCK               = 307
+       SYS_PSYNCH_RW_UNLOCK               = 308
+       SYS_PSYNCH_RW_UNLOCK2              = 309
+       SYS_GETSID                         = 310
+       SYS_SETTID_WITH_PID                = 311
+       SYS_PSYNCH_CVCLRPREPOST            = 312
+       SYS_AIO_FSYNC                      = 313
+       SYS_AIO_RETURN                     = 314
+       SYS_AIO_SUSPEND                    = 315
+       SYS_AIO_CANCEL                     = 316
+       SYS_AIO_ERROR                      = 317
+       SYS_AIO_READ                       = 318
+       SYS_AIO_WRITE                      = 319
+       SYS_LIO_LISTIO                     = 320
+       SYS_IOPOLICYSYS                    = 322
+       SYS_PROCESS_POLICY                 = 323
+       SYS_MLOCKALL                       = 324
+       SYS_MUNLOCKALL                     = 325
+       SYS_ISSETUGID                      = 327
+       SYS___PTHREAD_KILL                 = 328
+       SYS___PTHREAD_SIGMASK              = 329
+       SYS___SIGWAIT                      = 330
+       SYS___DISABLE_THREADSIGNAL         = 331
+       SYS___PTHREAD_MARKCANCEL           = 332
+       SYS___PTHREAD_CANCELED             = 333
+       SYS___SEMWAIT_SIGNAL               = 334
+       SYS_PROC_INFO                      = 336
+       SYS_SENDFILE                       = 337
+       SYS_STAT64                         = 338
+       SYS_FSTAT64                        = 339
+       SYS_LSTAT64                        = 340
+       SYS_STAT64_EXTENDED                = 341
+       SYS_LSTAT64_EXTENDED               = 342
+       SYS_FSTAT64_EXTENDED               = 343
+       SYS_GETDIRENTRIES64                = 344
+       SYS_STATFS64                       = 345
+       SYS_FSTATFS64                      = 346
+       SYS_GETFSSTAT64                    = 347
+       SYS___PTHREAD_CHDIR                = 348
+       SYS___PTHREAD_FCHDIR               = 349
+       SYS_AUDIT                          = 350
+       SYS_AUDITON                        = 351
+       SYS_GETAUID                        = 353
+       SYS_SETAUID                        = 354
+       SYS_GETAUDIT_ADDR                  = 357
+       SYS_SETAUDIT_ADDR                  = 358
+       SYS_AUDITCTL                       = 359
+       SYS_BSDTHREAD_CREATE               = 360
+       SYS_BSDTHREAD_TERMINATE            = 361
+       SYS_KQUEUE                         = 362
+       SYS_KEVENT                         = 363
+       SYS_LCHOWN                         = 364
+       SYS_STACK_SNAPSHOT                 = 365
+       SYS_BSDTHREAD_REGISTER             = 366
+       SYS_WORKQ_OPEN                     = 367
+       SYS_WORKQ_KERNRETURN               = 368
+       SYS_KEVENT64                       = 369
+       SYS___OLD_SEMWAIT_SIGNAL           = 370
+       SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL  = 371
+       SYS_THREAD_SELFID                  = 372
+       SYS_LEDGER                         = 373
+       SYS___MAC_EXECVE                   = 380
+       SYS___MAC_SYSCALL                  = 381
+       SYS___MAC_GET_FILE                 = 382
+       SYS___MAC_SET_FILE                 = 383
+       SYS___MAC_GET_LINK                 = 384
+       SYS___MAC_SET_LINK                 = 385
+       SYS___MAC_GET_PROC                 = 386
+       SYS___MAC_SET_PROC                 = 387
+       SYS___MAC_GET_FD                   = 388
+       SYS___MAC_SET_FD                   = 389
+       SYS___MAC_GET_PID                  = 390
+       SYS___MAC_GET_LCID                 = 391
+       SYS___MAC_GET_LCTX                 = 392
+       SYS___MAC_SET_LCTX                 = 393
+       SYS_SETLCID                        = 394
+       SYS_GETLCID                        = 395
+       SYS_READ_NOCANCEL                  = 396
+       SYS_WRITE_NOCANCEL                 = 397
+       SYS_OPEN_NOCANCEL                  = 398
+       SYS_CLOSE_NOCANCEL                 = 399
+       SYS_WAIT4_NOCANCEL                 = 400
+       SYS_RECVMSG_NOCANCEL               = 401
+       SYS_SENDMSG_NOCANCEL               = 402
+       SYS_RECVFROM_NOCANCEL              = 403
+       SYS_ACCEPT_NOCANCEL                = 404
+       SYS_MSYNC_NOCANCEL                 = 405
+       SYS_FCNTL_NOCANCEL                 = 406
+       SYS_SELECT_NOCANCEL                = 407
+       SYS_FSYNC_NOCANCEL                 = 408
+       SYS_CONNECT_NOCANCEL               = 409
+       SYS_SIGSUSPEND_NOCANCEL            = 410
+       SYS_READV_NOCANCEL                 = 411
+       SYS_WRITEV_NOCANCEL                = 412
+       SYS_SENDTO_NOCANCEL                = 413
+       SYS_PREAD_NOCANCEL                 = 414
+       SYS_PWRITE_NOCANCEL                = 415
+       SYS_WAITID_NOCANCEL                = 416
+       SYS_POLL_NOCANCEL                  = 417
+       SYS_MSGSND_NOCANCEL                = 418
+       SYS_MSGRCV_NOCANCEL                = 419
+       SYS_SEM_WAIT_NOCANCEL              = 420
+       SYS_AIO_SUSPEND_NOCANCEL           = 421
+       SYS___SIGWAIT_NOCANCEL             = 422
+       SYS___SEMWAIT_SIGNAL_NOCANCEL      = 423
+       SYS___MAC_MOUNT                    = 424
+       SYS___MAC_GET_MOUNT                = 425
+       SYS___MAC_GETFSSTAT                = 426
+       SYS_FSGETPATH                      = 427
+       SYS_AUDIT_SESSION_SELF             = 428
+       SYS_AUDIT_SESSION_JOIN             = 429
+       SYS_FILEPORT_MAKEPORT              = 430
+       SYS_FILEPORT_MAKEFD                = 431
+       SYS_AUDIT_SESSION_PORT             = 432
+       SYS_PID_SUSPEND                    = 433
+       SYS_PID_RESUME                     = 434
+       SYS_PID_HIBERNATE                  = 435
+       SYS_PID_SHUTDOWN_SOCKETS           = 436
+       SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438
+       SYS_KAS_INFO                       = 439
+       SYS_MEMORYSTATUS_CONTROL           = 440
+       SYS_GUARDED_OPEN_NP                = 441
+       SYS_GUARDED_CLOSE_NP               = 442
+       SYS_GUARDED_KQUEUE_NP              = 443
+       SYS_CHANGE_FDGUARD_NP              = 444
+       SYS_PROC_RLIMIT_CONTROL            = 446
+       SYS_CONNECTX                       = 447
+       SYS_DISCONNECTX                    = 448
+       SYS_PEELOFF                        = 449
+       SYS_SOCKET_DELEGATE                = 450
+       SYS_TELEMETRY                      = 451
+       SYS_PROC_UUID_POLICY               = 452
+       SYS_MEMORYSTATUS_GET_LEVEL         = 453
+       SYS_SYSTEM_OVERRIDE                = 454
+       SYS_VFS_PURGE                      = 455
+       SYS_SFI_CTL                        = 456
+       SYS_SFI_PIDCTL                     = 457
+       SYS_COALITION                      = 458
+       SYS_COALITION_INFO                 = 459
+       SYS_NECP_MATCH_POLICY              = 460
+       SYS_GETATTRLISTBULK                = 461
+       SYS_OPENAT                         = 463
+       SYS_OPENAT_NOCANCEL                = 464
+       SYS_RENAMEAT                       = 465
+       SYS_FACCESSAT                      = 466
+       SYS_FCHMODAT                       = 467
+       SYS_FCHOWNAT                       = 468
+       SYS_FSTATAT                        = 469
+       SYS_FSTATAT64                      = 470
+       SYS_LINKAT                         = 471
+       SYS_UNLINKAT                       = 472
+       SYS_READLINKAT                     = 473
+       SYS_SYMLINKAT                      = 474
+       SYS_MKDIRAT                        = 475
+       SYS_GETATTRLISTAT                  = 476
+       SYS_PROC_TRACE_LOG                 = 477
+       SYS_BSDTHREAD_CTL                  = 478
+       SYS_OPENBYID_NP                    = 479
+       SYS_RECVMSG_X                      = 480
+       SYS_SENDMSG_X                      = 481
+       SYS_THREAD_SELFUSAGE               = 482
+       SYS_CSRCTL                         = 483
+       SYS_GUARDED_OPEN_DPROTECTED_NP     = 484
+       SYS_GUARDED_WRITE_NP               = 485
+       SYS_GUARDED_PWRITE_NP              = 486
+       SYS_GUARDED_WRITEV_NP              = 487
+       SYS_RENAME_EXT                     = 488
+       SYS_MREMAP_ENCRYPTED               = 489
+       SYS_MAXSYSCALL                     = 490
+)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go
new file mode 100644 (file)
index 0000000..09de240
--- /dev/null
@@ -0,0 +1,398 @@
+// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/sys/syscall.h
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build amd64,darwin
+
+package unix
+
+const (
+       SYS_SYSCALL                        = 0
+       SYS_EXIT                           = 1
+       SYS_FORK                           = 2
+       SYS_READ                           = 3
+       SYS_WRITE                          = 4
+       SYS_OPEN                           = 5
+       SYS_CLOSE                          = 6
+       SYS_WAIT4                          = 7
+       SYS_LINK                           = 9
+       SYS_UNLINK                         = 10
+       SYS_CHDIR                          = 12
+       SYS_FCHDIR                         = 13
+       SYS_MKNOD                          = 14
+       SYS_CHMOD                          = 15
+       SYS_CHOWN                          = 16
+       SYS_GETFSSTAT                      = 18
+       SYS_GETPID                         = 20
+       SYS_SETUID                         = 23
+       SYS_GETUID                         = 24
+       SYS_GETEUID                        = 25
+       SYS_PTRACE                         = 26
+       SYS_RECVMSG                        = 27
+       SYS_SENDMSG                        = 28
+       SYS_RECVFROM                       = 29
+       SYS_ACCEPT                         = 30
+       SYS_GETPEERNAME                    = 31
+       SYS_GETSOCKNAME                    = 32
+       SYS_ACCESS                         = 33
+       SYS_CHFLAGS                        = 34
+       SYS_FCHFLAGS                       = 35
+       SYS_SYNC                           = 36
+       SYS_KILL                           = 37
+       SYS_GETPPID                        = 39
+       SYS_DUP                            = 41
+       SYS_PIPE                           = 42
+       SYS_GETEGID                        = 43
+       SYS_SIGACTION                      = 46
+       SYS_GETGID                         = 47
+       SYS_SIGPROCMASK                    = 48
+       SYS_GETLOGIN                       = 49
+       SYS_SETLOGIN                       = 50
+       SYS_ACCT                           = 51
+       SYS_SIGPENDING                     = 52
+       SYS_SIGALTSTACK                    = 53
+       SYS_IOCTL                          = 54
+       SYS_REBOOT                         = 55
+       SYS_REVOKE                         = 56
+       SYS_SYMLINK                        = 57
+       SYS_READLINK                       = 58
+       SYS_EXECVE                         = 59
+       SYS_UMASK                          = 60
+       SYS_CHROOT                         = 61
+       SYS_MSYNC                          = 65
+       SYS_VFORK                          = 66
+       SYS_MUNMAP                         = 73
+       SYS_MPROTECT                       = 74
+       SYS_MADVISE                        = 75
+       SYS_MINCORE                        = 78
+       SYS_GETGROUPS                      = 79
+       SYS_SETGROUPS                      = 80
+       SYS_GETPGRP                        = 81
+       SYS_SETPGID                        = 82
+       SYS_SETITIMER                      = 83
+       SYS_SWAPON                         = 85
+       SYS_GETITIMER                      = 86
+       SYS_GETDTABLESIZE                  = 89
+       SYS_DUP2                           = 90
+       SYS_FCNTL                          = 92
+       SYS_SELECT                         = 93
+       SYS_FSYNC                          = 95
+       SYS_SETPRIORITY                    = 96
+       SYS_SOCKET                         = 97
+       SYS_CONNECT                        = 98
+       SYS_GETPRIORITY                    = 100
+       SYS_BIND                           = 104
+       SYS_SETSOCKOPT                     = 105
+       SYS_LISTEN                         = 106
+       SYS_SIGSUSPEND                     = 111
+       SYS_GETTIMEOFDAY                   = 116
+       SYS_GETRUSAGE                      = 117
+       SYS_GETSOCKOPT                     = 118
+       SYS_READV                          = 120
+       SYS_WRITEV                         = 121
+       SYS_SETTIMEOFDAY                   = 122
+       SYS_FCHOWN                         = 123
+       SYS_FCHMOD                         = 124
+       SYS_SETREUID                       = 126
+       SYS_SETREGID                       = 127
+       SYS_RENAME                         = 128
+       SYS_FLOCK                          = 131
+       SYS_MKFIFO                         = 132
+       SYS_SENDTO                         = 133
+       SYS_SHUTDOWN                       = 134
+       SYS_SOCKETPAIR                     = 135
+       SYS_MKDIR                          = 136
+       SYS_RMDIR                          = 137
+       SYS_UTIMES                         = 138
+       SYS_FUTIMES                        = 139
+       SYS_ADJTIME                        = 140
+       SYS_GETHOSTUUID                    = 142
+       SYS_SETSID                         = 147
+       SYS_GETPGID                        = 151
+       SYS_SETPRIVEXEC                    = 152
+       SYS_PREAD                          = 153
+       SYS_PWRITE                         = 154
+       SYS_NFSSVC                         = 155
+       SYS_STATFS                         = 157
+       SYS_FSTATFS                        = 158
+       SYS_UNMOUNT                        = 159
+       SYS_GETFH                          = 161
+       SYS_QUOTACTL                       = 165
+       SYS_MOUNT                          = 167
+       SYS_CSOPS                          = 169
+       SYS_CSOPS_AUDITTOKEN               = 170
+       SYS_WAITID                         = 173
+       SYS_KDEBUG_TRACE64                 = 179
+       SYS_KDEBUG_TRACE                   = 180
+       SYS_SETGID                         = 181
+       SYS_SETEGID                        = 182
+       SYS_SETEUID                        = 183
+       SYS_SIGRETURN                      = 184
+       SYS_CHUD                           = 185
+       SYS_FDATASYNC                      = 187
+       SYS_STAT                           = 188
+       SYS_FSTAT                          = 189
+       SYS_LSTAT                          = 190
+       SYS_PATHCONF                       = 191
+       SYS_FPATHCONF                      = 192
+       SYS_GETRLIMIT                      = 194
+       SYS_SETRLIMIT                      = 195
+       SYS_GETDIRENTRIES                  = 196
+       SYS_MMAP                           = 197
+       SYS_LSEEK                          = 199
+       SYS_TRUNCATE                       = 200
+       SYS_FTRUNCATE                      = 201
+       SYS_SYSCTL                         = 202
+       SYS_MLOCK                          = 203
+       SYS_MUNLOCK                        = 204
+       SYS_UNDELETE                       = 205
+       SYS_OPEN_DPROTECTED_NP             = 216
+       SYS_GETATTRLIST                    = 220
+       SYS_SETATTRLIST                    = 221
+       SYS_GETDIRENTRIESATTR              = 222
+       SYS_EXCHANGEDATA                   = 223
+       SYS_SEARCHFS                       = 225
+       SYS_DELETE                         = 226
+       SYS_COPYFILE                       = 227
+       SYS_FGETATTRLIST                   = 228
+       SYS_FSETATTRLIST                   = 229
+       SYS_POLL                           = 230
+       SYS_WATCHEVENT                     = 231
+       SYS_WAITEVENT                      = 232
+       SYS_MODWATCH                       = 233
+       SYS_GETXATTR                       = 234
+       SYS_FGETXATTR                      = 235
+       SYS_SETXATTR                       = 236
+       SYS_FSETXATTR                      = 237
+       SYS_REMOVEXATTR                    = 238
+       SYS_FREMOVEXATTR                   = 239
+       SYS_LISTXATTR                      = 240
+       SYS_FLISTXATTR                     = 241
+       SYS_FSCTL                          = 242
+       SYS_INITGROUPS                     = 243
+       SYS_POSIX_SPAWN                    = 244
+       SYS_FFSCTL                         = 245
+       SYS_NFSCLNT                        = 247
+       SYS_FHOPEN                         = 248
+       SYS_MINHERIT                       = 250
+       SYS_SEMSYS                         = 251
+       SYS_MSGSYS                         = 252
+       SYS_SHMSYS                         = 253
+       SYS_SEMCTL                         = 254
+       SYS_SEMGET                         = 255
+       SYS_SEMOP                          = 256
+       SYS_MSGCTL                         = 258
+       SYS_MSGGET                         = 259
+       SYS_MSGSND                         = 260
+       SYS_MSGRCV                         = 261
+       SYS_SHMAT                          = 262
+       SYS_SHMCTL                         = 263
+       SYS_SHMDT                          = 264
+       SYS_SHMGET                         = 265
+       SYS_SHM_OPEN                       = 266
+       SYS_SHM_UNLINK                     = 267
+       SYS_SEM_OPEN                       = 268
+       SYS_SEM_CLOSE                      = 269
+       SYS_SEM_UNLINK                     = 270
+       SYS_SEM_WAIT                       = 271
+       SYS_SEM_TRYWAIT                    = 272
+       SYS_SEM_POST                       = 273
+       SYS_SYSCTLBYNAME                   = 274
+       SYS_OPEN_EXTENDED                  = 277
+       SYS_UMASK_EXTENDED                 = 278
+       SYS_STAT_EXTENDED                  = 279
+       SYS_LSTAT_EXTENDED                 = 280
+       SYS_FSTAT_EXTENDED                 = 281
+       SYS_CHMOD_EXTENDED                 = 282
+       SYS_FCHMOD_EXTENDED                = 283
+       SYS_ACCESS_EXTENDED                = 284
+       SYS_SETTID                         = 285
+       SYS_GETTID                         = 286
+       SYS_SETSGROUPS                     = 287
+       SYS_GETSGROUPS                     = 288
+       SYS_SETWGROUPS                     = 289
+       SYS_GETWGROUPS                     = 290
+       SYS_MKFIFO_EXTENDED                = 291
+       SYS_MKDIR_EXTENDED                 = 292
+       SYS_IDENTITYSVC                    = 293
+       SYS_SHARED_REGION_CHECK_NP         = 294
+       SYS_VM_PRESSURE_MONITOR            = 296
+       SYS_PSYNCH_RW_LONGRDLOCK           = 297
+       SYS_PSYNCH_RW_YIELDWRLOCK          = 298
+       SYS_PSYNCH_RW_DOWNGRADE            = 299
+       SYS_PSYNCH_RW_UPGRADE              = 300
+       SYS_PSYNCH_MUTEXWAIT               = 301
+       SYS_PSYNCH_MUTEXDROP               = 302
+       SYS_PSYNCH_CVBROAD                 = 303
+       SYS_PSYNCH_CVSIGNAL                = 304
+       SYS_PSYNCH_CVWAIT                  = 305
+       SYS_PSYNCH_RW_RDLOCK               = 306
+       SYS_PSYNCH_RW_WRLOCK               = 307
+       SYS_PSYNCH_RW_UNLOCK               = 308
+       SYS_PSYNCH_RW_UNLOCK2              = 309
+       SYS_GETSID                         = 310
+       SYS_SETTID_WITH_PID                = 311
+       SYS_PSYNCH_CVCLRPREPOST            = 312
+       SYS_AIO_FSYNC                      = 313
+       SYS_AIO_RETURN                     = 314
+       SYS_AIO_SUSPEND                    = 315
+       SYS_AIO_CANCEL                     = 316
+       SYS_AIO_ERROR                      = 317
+       SYS_AIO_READ                       = 318
+       SYS_AIO_WRITE                      = 319
+       SYS_LIO_LISTIO                     = 320
+       SYS_IOPOLICYSYS                    = 322
+       SYS_PROCESS_POLICY                 = 323
+       SYS_MLOCKALL                       = 324
+       SYS_MUNLOCKALL                     = 325
+       SYS_ISSETUGID                      = 327
+       SYS___PTHREAD_KILL                 = 328
+       SYS___PTHREAD_SIGMASK              = 329
+       SYS___SIGWAIT                      = 330
+       SYS___DISABLE_THREADSIGNAL         = 331
+       SYS___PTHREAD_MARKCANCEL           = 332
+       SYS___PTHREAD_CANCELED             = 333
+       SYS___SEMWAIT_SIGNAL               = 334
+       SYS_PROC_INFO                      = 336
+       SYS_SENDFILE                       = 337
+       SYS_STAT64                         = 338
+       SYS_FSTAT64                        = 339
+       SYS_LSTAT64                        = 340
+       SYS_STAT64_EXTENDED                = 341
+       SYS_LSTAT64_EXTENDED               = 342
+       SYS_FSTAT64_EXTENDED               = 343
+       SYS_GETDIRENTRIES64                = 344
+       SYS_STATFS64                       = 345
+       SYS_FSTATFS64                      = 346
+       SYS_GETFSSTAT64                    = 347
+       SYS___PTHREAD_CHDIR                = 348
+       SYS___PTHREAD_FCHDIR               = 349
+       SYS_AUDIT                          = 350
+       SYS_AUDITON                        = 351
+       SYS_GETAUID                        = 353
+       SYS_SETAUID                        = 354
+       SYS_GETAUDIT_ADDR                  = 357
+       SYS_SETAUDIT_ADDR                  = 358
+       SYS_AUDITCTL                       = 359
+       SYS_BSDTHREAD_CREATE               = 360
+       SYS_BSDTHREAD_TERMINATE            = 361
+       SYS_KQUEUE                         = 362
+       SYS_KEVENT                         = 363
+       SYS_LCHOWN                         = 364
+       SYS_STACK_SNAPSHOT                 = 365
+       SYS_BSDTHREAD_REGISTER             = 366
+       SYS_WORKQ_OPEN                     = 367
+       SYS_WORKQ_KERNRETURN               = 368
+       SYS_KEVENT64                       = 369
+       SYS___OLD_SEMWAIT_SIGNAL           = 370
+       SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL  = 371
+       SYS_THREAD_SELFID                  = 372
+       SYS_LEDGER                         = 373
+       SYS___MAC_EXECVE                   = 380
+       SYS___MAC_SYSCALL                  = 381
+       SYS___MAC_GET_FILE                 = 382
+       SYS___MAC_SET_FILE                 = 383
+       SYS___MAC_GET_LINK                 = 384
+       SYS___MAC_SET_LINK                 = 385
+       SYS___MAC_GET_PROC                 = 386
+       SYS___MAC_SET_PROC                 = 387
+       SYS___MAC_GET_FD                   = 388
+       SYS___MAC_SET_FD                   = 389
+       SYS___MAC_GET_PID                  = 390
+       SYS___MAC_GET_LCID                 = 391
+       SYS___MAC_GET_LCTX                 = 392
+       SYS___MAC_SET_LCTX                 = 393
+       SYS_SETLCID                        = 394
+       SYS_GETLCID                        = 395
+       SYS_READ_NOCANCEL                  = 396
+       SYS_WRITE_NOCANCEL                 = 397
+       SYS_OPEN_NOCANCEL                  = 398
+       SYS_CLOSE_NOCANCEL                 = 399
+       SYS_WAIT4_NOCANCEL                 = 400
+       SYS_RECVMSG_NOCANCEL               = 401
+       SYS_SENDMSG_NOCANCEL               = 402
+       SYS_RECVFROM_NOCANCEL              = 403
+       SYS_ACCEPT_NOCANCEL                = 404
+       SYS_MSYNC_NOCANCEL                 = 405
+       SYS_FCNTL_NOCANCEL                 = 406
+       SYS_SELECT_NOCANCEL                = 407
+       SYS_FSYNC_NOCANCEL                 = 408
+       SYS_CONNECT_NOCANCEL               = 409
+       SYS_SIGSUSPEND_NOCANCEL            = 410
+       SYS_READV_NOCANCEL                 = 411
+       SYS_WRITEV_NOCANCEL                = 412
+       SYS_SENDTO_NOCANCEL                = 413
+       SYS_PREAD_NOCANCEL                 = 414
+       SYS_PWRITE_NOCANCEL                = 415
+       SYS_WAITID_NOCANCEL                = 416
+       SYS_POLL_NOCANCEL                  = 417
+       SYS_MSGSND_NOCANCEL                = 418
+       SYS_MSGRCV_NOCANCEL                = 419
+       SYS_SEM_WAIT_NOCANCEL              = 420
+       SYS_AIO_SUSPEND_NOCANCEL           = 421
+       SYS___SIGWAIT_NOCANCEL             = 422
+       SYS___SEMWAIT_SIGNAL_NOCANCEL      = 423
+       SYS___MAC_MOUNT                    = 424
+       SYS___MAC_GET_MOUNT                = 425
+       SYS___MAC_GETFSSTAT                = 426
+       SYS_FSGETPATH                      = 427
+       SYS_AUDIT_SESSION_SELF             = 428
+       SYS_AUDIT_SESSION_JOIN             = 429
+       SYS_FILEPORT_MAKEPORT              = 430
+       SYS_FILEPORT_MAKEFD                = 431
+       SYS_AUDIT_SESSION_PORT             = 432
+       SYS_PID_SUSPEND                    = 433
+       SYS_PID_RESUME                     = 434
+       SYS_PID_HIBERNATE                  = 435
+       SYS_PID_SHUTDOWN_SOCKETS           = 436
+       SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438
+       SYS_KAS_INFO                       = 439
+       SYS_MEMORYSTATUS_CONTROL           = 440
+       SYS_GUARDED_OPEN_NP                = 441
+       SYS_GUARDED_CLOSE_NP               = 442
+       SYS_GUARDED_KQUEUE_NP              = 443
+       SYS_CHANGE_FDGUARD_NP              = 444
+       SYS_PROC_RLIMIT_CONTROL            = 446
+       SYS_CONNECTX                       = 447
+       SYS_DISCONNECTX                    = 448
+       SYS_PEELOFF                        = 449
+       SYS_SOCKET_DELEGATE                = 450
+       SYS_TELEMETRY                      = 451
+       SYS_PROC_UUID_POLICY               = 452
+       SYS_MEMORYSTATUS_GET_LEVEL         = 453
+       SYS_SYSTEM_OVERRIDE                = 454
+       SYS_VFS_PURGE                      = 455
+       SYS_SFI_CTL                        = 456
+       SYS_SFI_PIDCTL                     = 457
+       SYS_COALITION                      = 458
+       SYS_COALITION_INFO                 = 459
+       SYS_NECP_MATCH_POLICY              = 460
+       SYS_GETATTRLISTBULK                = 461
+       SYS_OPENAT                         = 463
+       SYS_OPENAT_NOCANCEL                = 464
+       SYS_RENAMEAT                       = 465
+       SYS_FACCESSAT                      = 466
+       SYS_FCHMODAT                       = 467
+       SYS_FCHOWNAT                       = 468
+       SYS_FSTATAT                        = 469
+       SYS_FSTATAT64                      = 470
+       SYS_LINKAT                         = 471
+       SYS_UNLINKAT                       = 472
+       SYS_READLINKAT                     = 473
+       SYS_SYMLINKAT                      = 474
+       SYS_MKDIRAT                        = 475
+       SYS_GETATTRLISTAT                  = 476
+       SYS_PROC_TRACE_LOG                 = 477
+       SYS_BSDTHREAD_CTL                  = 478
+       SYS_OPENBYID_NP                    = 479
+       SYS_RECVMSG_X                      = 480
+       SYS_SENDMSG_X                      = 481
+       SYS_THREAD_SELFUSAGE               = 482
+       SYS_CSRCTL                         = 483
+       SYS_GUARDED_OPEN_DPROTECTED_NP     = 484
+       SYS_GUARDED_WRITE_NP               = 485
+       SYS_GUARDED_PWRITE_NP              = 486
+       SYS_GUARDED_WRITEV_NP              = 487
+       SYS_RENAME_EXT                     = 488
+       SYS_MREMAP_ENCRYPTED               = 489
+       SYS_MAXSYSCALL                     = 490
+)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go
new file mode 100644 (file)
index 0000000..b8c9aea
--- /dev/null
@@ -0,0 +1,358 @@
+// mksysnum_darwin.pl /usr/include/sys/syscall.h
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build arm,darwin
+
+package unix
+
+const (
+       SYS_SYSCALL                        = 0
+       SYS_EXIT                           = 1
+       SYS_FORK                           = 2
+       SYS_READ                           = 3
+       SYS_WRITE                          = 4
+       SYS_OPEN                           = 5
+       SYS_CLOSE                          = 6
+       SYS_WAIT4                          = 7
+       SYS_LINK                           = 9
+       SYS_UNLINK                         = 10
+       SYS_CHDIR                          = 12
+       SYS_FCHDIR                         = 13
+       SYS_MKNOD                          = 14
+       SYS_CHMOD                          = 15
+       SYS_CHOWN                          = 16
+       SYS_GETFSSTAT                      = 18
+       SYS_GETPID                         = 20
+       SYS_SETUID                         = 23
+       SYS_GETUID                         = 24
+       SYS_GETEUID                        = 25
+       SYS_PTRACE                         = 26
+       SYS_RECVMSG                        = 27
+       SYS_SENDMSG                        = 28
+       SYS_RECVFROM                       = 29
+       SYS_ACCEPT                         = 30
+       SYS_GETPEERNAME                    = 31
+       SYS_GETSOCKNAME                    = 32
+       SYS_ACCESS                         = 33
+       SYS_CHFLAGS                        = 34
+       SYS_FCHFLAGS                       = 35
+       SYS_SYNC                           = 36
+       SYS_KILL                           = 37
+       SYS_GETPPID                        = 39
+       SYS_DUP                            = 41
+       SYS_PIPE                           = 42
+       SYS_GETEGID                        = 43
+       SYS_SIGACTION                      = 46
+       SYS_GETGID                         = 47
+       SYS_SIGPROCMASK                    = 48
+       SYS_GETLOGIN                       = 49
+       SYS_SETLOGIN                       = 50
+       SYS_ACCT                           = 51
+       SYS_SIGPENDING                     = 52
+       SYS_SIGALTSTACK                    = 53
+       SYS_IOCTL                          = 54
+       SYS_REBOOT                         = 55
+       SYS_REVOKE                         = 56
+       SYS_SYMLINK                        = 57
+       SYS_READLINK                       = 58
+       SYS_EXECVE                         = 59
+       SYS_UMASK                          = 60
+       SYS_CHROOT                         = 61
+       SYS_MSYNC                          = 65
+       SYS_VFORK                          = 66
+       SYS_MUNMAP                         = 73
+       SYS_MPROTECT                       = 74
+       SYS_MADVISE                        = 75
+       SYS_MINCORE                        = 78
+       SYS_GETGROUPS                      = 79
+       SYS_SETGROUPS                      = 80
+       SYS_GETPGRP                        = 81
+       SYS_SETPGID                        = 82
+       SYS_SETITIMER                      = 83
+       SYS_SWAPON                         = 85
+       SYS_GETITIMER                      = 86
+       SYS_GETDTABLESIZE                  = 89
+       SYS_DUP2                           = 90
+       SYS_FCNTL                          = 92
+       SYS_SELECT                         = 93
+       SYS_FSYNC                          = 95
+       SYS_SETPRIORITY                    = 96
+       SYS_SOCKET                         = 97
+       SYS_CONNECT                        = 98
+       SYS_GETPRIORITY                    = 100
+       SYS_BIND                           = 104
+       SYS_SETSOCKOPT                     = 105
+       SYS_LISTEN                         = 106
+       SYS_SIGSUSPEND                     = 111
+       SYS_GETTIMEOFDAY                   = 116
+       SYS_GETRUSAGE                      = 117
+       SYS_GETSOCKOPT                     = 118
+       SYS_READV                          = 120
+       SYS_WRITEV                         = 121
+       SYS_SETTIMEOFDAY                   = 122
+       SYS_FCHOWN                         = 123
+       SYS_FCHMOD                         = 124
+       SYS_SETREUID                       = 126
+       SYS_SETREGID                       = 127
+       SYS_RENAME                         = 128
+       SYS_FLOCK                          = 131
+       SYS_MKFIFO                         = 132
+       SYS_SENDTO                         = 133
+       SYS_SHUTDOWN                       = 134
+       SYS_SOCKETPAIR                     = 135
+       SYS_MKDIR                          = 136
+       SYS_RMDIR                          = 137
+       SYS_UTIMES                         = 138
+       SYS_FUTIMES                        = 139
+       SYS_ADJTIME                        = 140
+       SYS_GETHOSTUUID                    = 142
+       SYS_SETSID                         = 147
+       SYS_GETPGID                        = 151
+       SYS_SETPRIVEXEC                    = 152
+       SYS_PREAD                          = 153
+       SYS_PWRITE                         = 154
+       SYS_NFSSVC                         = 155
+       SYS_STATFS                         = 157
+       SYS_FSTATFS                        = 158
+       SYS_UNMOUNT                        = 159
+       SYS_GETFH                          = 161
+       SYS_QUOTACTL                       = 165
+       SYS_MOUNT                          = 167
+       SYS_CSOPS                          = 169
+       SYS_CSOPS_AUDITTOKEN               = 170
+       SYS_WAITID                         = 173
+       SYS_KDEBUG_TRACE                   = 180
+       SYS_SETGID                         = 181
+       SYS_SETEGID                        = 182
+       SYS_SETEUID                        = 183
+       SYS_SIGRETURN                      = 184
+       SYS_CHUD                           = 185
+       SYS_FDATASYNC                      = 187
+       SYS_STAT                           = 188
+       SYS_FSTAT                          = 189
+       SYS_LSTAT                          = 190
+       SYS_PATHCONF                       = 191
+       SYS_FPATHCONF                      = 192
+       SYS_GETRLIMIT                      = 194
+       SYS_SETRLIMIT                      = 195
+       SYS_GETDIRENTRIES                  = 196
+       SYS_MMAP                           = 197
+       SYS_LSEEK                          = 199
+       SYS_TRUNCATE                       = 200
+       SYS_FTRUNCATE                      = 201
+       SYS___SYSCTL                       = 202
+       SYS_MLOCK                          = 203
+       SYS_MUNLOCK                        = 204
+       SYS_UNDELETE                       = 205
+       SYS_ATSOCKET                       = 206
+       SYS_ATGETMSG                       = 207
+       SYS_ATPUTMSG                       = 208
+       SYS_ATPSNDREQ                      = 209
+       SYS_ATPSNDRSP                      = 210
+       SYS_ATPGETREQ                      = 211
+       SYS_ATPGETRSP                      = 212
+       SYS_OPEN_DPROTECTED_NP             = 216
+       SYS_GETATTRLIST                    = 220
+       SYS_SETATTRLIST                    = 221
+       SYS_GETDIRENTRIESATTR              = 222
+       SYS_EXCHANGEDATA                   = 223
+       SYS_SEARCHFS                       = 225
+       SYS_DELETE                         = 226
+       SYS_COPYFILE                       = 227
+       SYS_FGETATTRLIST                   = 228
+       SYS_FSETATTRLIST                   = 229
+       SYS_POLL                           = 230
+       SYS_WATCHEVENT                     = 231
+       SYS_WAITEVENT                      = 232
+       SYS_MODWATCH                       = 233
+       SYS_GETXATTR                       = 234
+       SYS_FGETXATTR                      = 235
+       SYS_SETXATTR                       = 236
+       SYS_FSETXATTR                      = 237
+       SYS_REMOVEXATTR                    = 238
+       SYS_FREMOVEXATTR                   = 239
+       SYS_LISTXATTR                      = 240
+       SYS_FLISTXATTR                     = 241
+       SYS_FSCTL                          = 242
+       SYS_INITGROUPS                     = 243
+       SYS_POSIX_SPAWN                    = 244
+       SYS_FFSCTL                         = 245
+       SYS_NFSCLNT                        = 247
+       SYS_FHOPEN                         = 248
+       SYS_MINHERIT                       = 250
+       SYS_SEMSYS                         = 251
+       SYS_MSGSYS                         = 252
+       SYS_SHMSYS                         = 253
+       SYS_SEMCTL                         = 254
+       SYS_SEMGET                         = 255
+       SYS_SEMOP                          = 256
+       SYS_MSGCTL                         = 258
+       SYS_MSGGET                         = 259
+       SYS_MSGSND                         = 260
+       SYS_MSGRCV                         = 261
+       SYS_SHMAT                          = 262
+       SYS_SHMCTL                         = 263
+       SYS_SHMDT                          = 264
+       SYS_SHMGET                         = 265
+       SYS_SHM_OPEN                       = 266
+       SYS_SHM_UNLINK                     = 267
+       SYS_SEM_OPEN                       = 268
+       SYS_SEM_CLOSE                      = 269
+       SYS_SEM_UNLINK                     = 270
+       SYS_SEM_WAIT                       = 271
+       SYS_SEM_TRYWAIT                    = 272
+       SYS_SEM_POST                       = 273
+       SYS_SEM_GETVALUE                   = 274
+       SYS_SEM_INIT                       = 275
+       SYS_SEM_DESTROY                    = 276
+       SYS_OPEN_EXTENDED                  = 277
+       SYS_UMASK_EXTENDED                 = 278
+       SYS_STAT_EXTENDED                  = 279
+       SYS_LSTAT_EXTENDED                 = 280
+       SYS_FSTAT_EXTENDED                 = 281
+       SYS_CHMOD_EXTENDED                 = 282
+       SYS_FCHMOD_EXTENDED                = 283
+       SYS_ACCESS_EXTENDED                = 284
+       SYS_SETTID                         = 285
+       SYS_GETTID                         = 286
+       SYS_SETSGROUPS                     = 287
+       SYS_GETSGROUPS                     = 288
+       SYS_SETWGROUPS                     = 289
+       SYS_GETWGROUPS                     = 290
+       SYS_MKFIFO_EXTENDED                = 291
+       SYS_MKDIR_EXTENDED                 = 292
+       SYS_IDENTITYSVC                    = 293
+       SYS_SHARED_REGION_CHECK_NP         = 294
+       SYS_VM_PRESSURE_MONITOR            = 296
+       SYS_PSYNCH_RW_LONGRDLOCK           = 297
+       SYS_PSYNCH_RW_YIELDWRLOCK          = 298
+       SYS_PSYNCH_RW_DOWNGRADE            = 299
+       SYS_PSYNCH_RW_UPGRADE              = 300
+       SYS_PSYNCH_MUTEXWAIT               = 301
+       SYS_PSYNCH_MUTEXDROP               = 302
+       SYS_PSYNCH_CVBROAD                 = 303
+       SYS_PSYNCH_CVSIGNAL                = 304
+       SYS_PSYNCH_CVWAIT                  = 305
+       SYS_PSYNCH_RW_RDLOCK               = 306
+       SYS_PSYNCH_RW_WRLOCK               = 307
+       SYS_PSYNCH_RW_UNLOCK               = 308
+       SYS_PSYNCH_RW_UNLOCK2              = 309
+       SYS_GETSID                         = 310
+       SYS_SETTID_WITH_PID                = 311
+       SYS_PSYNCH_CVCLRPREPOST            = 312
+       SYS_AIO_FSYNC                      = 313
+       SYS_AIO_RETURN                     = 314
+       SYS_AIO_SUSPEND                    = 315
+       SYS_AIO_CANCEL                     = 316
+       SYS_AIO_ERROR                      = 317
+       SYS_AIO_READ                       = 318
+       SYS_AIO_WRITE                      = 319
+       SYS_LIO_LISTIO                     = 320
+       SYS_IOPOLICYSYS                    = 322
+       SYS_PROCESS_POLICY                 = 323
+       SYS_MLOCKALL                       = 324
+       SYS_MUNLOCKALL                     = 325
+       SYS_ISSETUGID                      = 327
+       SYS___PTHREAD_KILL                 = 328
+       SYS___PTHREAD_SIGMASK              = 329
+       SYS___SIGWAIT                      = 330
+       SYS___DISABLE_THREADSIGNAL         = 331
+       SYS___PTHREAD_MARKCANCEL           = 332
+       SYS___PTHREAD_CANCELED             = 333
+       SYS___SEMWAIT_SIGNAL               = 334
+       SYS_PROC_INFO                      = 336
+       SYS_SENDFILE                       = 337
+       SYS_STAT64                         = 338
+       SYS_FSTAT64                        = 339
+       SYS_LSTAT64                        = 340
+       SYS_STAT64_EXTENDED                = 341
+       SYS_LSTAT64_EXTENDED               = 342
+       SYS_FSTAT64_EXTENDED               = 343
+       SYS_GETDIRENTRIES64                = 344
+       SYS_STATFS64                       = 345
+       SYS_FSTATFS64                      = 346
+       SYS_GETFSSTAT64                    = 347
+       SYS___PTHREAD_CHDIR                = 348
+       SYS___PTHREAD_FCHDIR               = 349
+       SYS_AUDIT                          = 350
+       SYS_AUDITON                        = 351
+       SYS_GETAUID                        = 353
+       SYS_SETAUID                        = 354
+       SYS_GETAUDIT_ADDR                  = 357
+       SYS_SETAUDIT_ADDR                  = 358
+       SYS_AUDITCTL                       = 359
+       SYS_BSDTHREAD_CREATE               = 360
+       SYS_BSDTHREAD_TERMINATE            = 361
+       SYS_KQUEUE                         = 362
+       SYS_KEVENT                         = 363
+       SYS_LCHOWN                         = 364
+       SYS_STACK_SNAPSHOT                 = 365
+       SYS_BSDTHREAD_REGISTER             = 366
+       SYS_WORKQ_OPEN                     = 367
+       SYS_WORKQ_KERNRETURN               = 368
+       SYS_KEVENT64                       = 369
+       SYS___OLD_SEMWAIT_SIGNAL           = 370
+       SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL  = 371
+       SYS_THREAD_SELFID                  = 372
+       SYS_LEDGER                         = 373
+       SYS___MAC_EXECVE                   = 380
+       SYS___MAC_SYSCALL                  = 381
+       SYS___MAC_GET_FILE                 = 382
+       SYS___MAC_SET_FILE                 = 383
+       SYS___MAC_GET_LINK                 = 384
+       SYS___MAC_SET_LINK                 = 385
+       SYS___MAC_GET_PROC                 = 386
+       SYS___MAC_SET_PROC                 = 387
+       SYS___MAC_GET_FD                   = 388
+       SYS___MAC_SET_FD                   = 389
+       SYS___MAC_GET_PID                  = 390
+       SYS___MAC_GET_LCID                 = 391
+       SYS___MAC_GET_LCTX                 = 392
+       SYS___MAC_SET_LCTX                 = 393
+       SYS_SETLCID                        = 394
+       SYS_GETLCID                        = 395
+       SYS_READ_NOCANCEL                  = 396
+       SYS_WRITE_NOCANCEL                 = 397
+       SYS_OPEN_NOCANCEL                  = 398
+       SYS_CLOSE_NOCANCEL                 = 399
+       SYS_WAIT4_NOCANCEL                 = 400
+       SYS_RECVMSG_NOCANCEL               = 401
+       SYS_SENDMSG_NOCANCEL               = 402
+       SYS_RECVFROM_NOCANCEL              = 403
+       SYS_ACCEPT_NOCANCEL                = 404
+       SYS_MSYNC_NOCANCEL                 = 405
+       SYS_FCNTL_NOCANCEL                 = 406
+       SYS_SELECT_NOCANCEL                = 407
+       SYS_FSYNC_NOCANCEL                 = 408
+       SYS_CONNECT_NOCANCEL               = 409
+       SYS_SIGSUSPEND_NOCANCEL            = 410
+       SYS_READV_NOCANCEL                 = 411
+       SYS_WRITEV_NOCANCEL                = 412
+       SYS_SENDTO_NOCANCEL                = 413
+       SYS_PREAD_NOCANCEL                 = 414
+       SYS_PWRITE_NOCANCEL                = 415
+       SYS_WAITID_NOCANCEL                = 416
+       SYS_POLL_NOCANCEL                  = 417
+       SYS_MSGSND_NOCANCEL                = 418
+       SYS_MSGRCV_NOCANCEL                = 419
+       SYS_SEM_WAIT_NOCANCEL              = 420
+       SYS_AIO_SUSPEND_NOCANCEL           = 421
+       SYS___SIGWAIT_NOCANCEL             = 422
+       SYS___SEMWAIT_SIGNAL_NOCANCEL      = 423
+       SYS___MAC_MOUNT                    = 424
+       SYS___MAC_GET_MOUNT                = 425
+       SYS___MAC_GETFSSTAT                = 426
+       SYS_FSGETPATH                      = 427
+       SYS_AUDIT_SESSION_SELF             = 428
+       SYS_AUDIT_SESSION_JOIN             = 429
+       SYS_FILEPORT_MAKEPORT              = 430
+       SYS_FILEPORT_MAKEFD                = 431
+       SYS_AUDIT_SESSION_PORT             = 432
+       SYS_PID_SUSPEND                    = 433
+       SYS_PID_RESUME                     = 434
+       SYS_PID_HIBERNATE                  = 435
+       SYS_PID_SHUTDOWN_SOCKETS           = 436
+       SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438
+       SYS_KAS_INFO                       = 439
+       SYS_MAXSYSCALL                     = 440
+)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go
new file mode 100644 (file)
index 0000000..26677eb
--- /dev/null
@@ -0,0 +1,398 @@
+// mksysnum_darwin.pl /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.4.sdk/usr/include/sys/syscall.h
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build arm64,darwin
+
+package unix
+
+const (
+       SYS_SYSCALL                        = 0
+       SYS_EXIT                           = 1
+       SYS_FORK                           = 2
+       SYS_READ                           = 3
+       SYS_WRITE                          = 4
+       SYS_OPEN                           = 5
+       SYS_CLOSE                          = 6
+       SYS_WAIT4                          = 7
+       SYS_LINK                           = 9
+       SYS_UNLINK                         = 10
+       SYS_CHDIR                          = 12
+       SYS_FCHDIR                         = 13
+       SYS_MKNOD                          = 14
+       SYS_CHMOD                          = 15
+       SYS_CHOWN                          = 16
+       SYS_GETFSSTAT                      = 18
+       SYS_GETPID                         = 20
+       SYS_SETUID                         = 23
+       SYS_GETUID                         = 24
+       SYS_GETEUID                        = 25
+       SYS_PTRACE                         = 26
+       SYS_RECVMSG                        = 27
+       SYS_SENDMSG                        = 28
+       SYS_RECVFROM                       = 29
+       SYS_ACCEPT                         = 30
+       SYS_GETPEERNAME                    = 31
+       SYS_GETSOCKNAME                    = 32
+       SYS_ACCESS                         = 33
+       SYS_CHFLAGS                        = 34
+       SYS_FCHFLAGS                       = 35
+       SYS_SYNC                           = 36
+       SYS_KILL                           = 37
+       SYS_GETPPID                        = 39
+       SYS_DUP                            = 41
+       SYS_PIPE                           = 42
+       SYS_GETEGID                        = 43
+       SYS_SIGACTION                      = 46
+       SYS_GETGID                         = 47
+       SYS_SIGPROCMASK                    = 48
+       SYS_GETLOGIN                       = 49
+       SYS_SETLOGIN                       = 50
+       SYS_ACCT                           = 51
+       SYS_SIGPENDING                     = 52
+       SYS_SIGALTSTACK                    = 53
+       SYS_IOCTL                          = 54
+       SYS_REBOOT                         = 55
+       SYS_REVOKE                         = 56
+       SYS_SYMLINK                        = 57
+       SYS_READLINK                       = 58
+       SYS_EXECVE                         = 59
+       SYS_UMASK                          = 60
+       SYS_CHROOT                         = 61
+       SYS_MSYNC                          = 65
+       SYS_VFORK                          = 66
+       SYS_MUNMAP                         = 73
+       SYS_MPROTECT                       = 74
+       SYS_MADVISE                        = 75
+       SYS_MINCORE                        = 78
+       SYS_GETGROUPS                      = 79
+       SYS_SETGROUPS                      = 80
+       SYS_GETPGRP                        = 81
+       SYS_SETPGID                        = 82
+       SYS_SETITIMER                      = 83
+       SYS_SWAPON                         = 85
+       SYS_GETITIMER                      = 86
+       SYS_GETDTABLESIZE                  = 89
+       SYS_DUP2                           = 90
+       SYS_FCNTL                          = 92
+       SYS_SELECT                         = 93
+       SYS_FSYNC                          = 95
+       SYS_SETPRIORITY                    = 96
+       SYS_SOCKET                         = 97
+       SYS_CONNECT                        = 98
+       SYS_GETPRIORITY                    = 100
+       SYS_BIND                           = 104
+       SYS_SETSOCKOPT                     = 105
+       SYS_LISTEN                         = 106
+       SYS_SIGSUSPEND                     = 111
+       SYS_GETTIMEOFDAY                   = 116
+       SYS_GETRUSAGE                      = 117
+       SYS_GETSOCKOPT                     = 118
+       SYS_READV                          = 120
+       SYS_WRITEV                         = 121
+       SYS_SETTIMEOFDAY                   = 122
+       SYS_FCHOWN                         = 123
+       SYS_FCHMOD                         = 124
+       SYS_SETREUID                       = 126
+       SYS_SETREGID                       = 127
+       SYS_RENAME                         = 128
+       SYS_FLOCK                          = 131
+       SYS_MKFIFO                         = 132
+       SYS_SENDTO                         = 133
+       SYS_SHUTDOWN                       = 134
+       SYS_SOCKETPAIR                     = 135
+       SYS_MKDIR                          = 136
+       SYS_RMDIR                          = 137
+       SYS_UTIMES                         = 138
+       SYS_FUTIMES                        = 139
+       SYS_ADJTIME                        = 140
+       SYS_GETHOSTUUID                    = 142
+       SYS_SETSID                         = 147
+       SYS_GETPGID                        = 151
+       SYS_SETPRIVEXEC                    = 152
+       SYS_PREAD                          = 153
+       SYS_PWRITE                         = 154
+       SYS_NFSSVC                         = 155
+       SYS_STATFS                         = 157
+       SYS_FSTATFS                        = 158
+       SYS_UNMOUNT                        = 159
+       SYS_GETFH                          = 161
+       SYS_QUOTACTL                       = 165
+       SYS_MOUNT                          = 167
+       SYS_CSOPS                          = 169
+       SYS_CSOPS_AUDITTOKEN               = 170
+       SYS_WAITID                         = 173
+       SYS_KDEBUG_TRACE64                 = 179
+       SYS_KDEBUG_TRACE                   = 180
+       SYS_SETGID                         = 181
+       SYS_SETEGID                        = 182
+       SYS_SETEUID                        = 183
+       SYS_SIGRETURN                      = 184
+       SYS_CHUD                           = 185
+       SYS_FDATASYNC                      = 187
+       SYS_STAT                           = 188
+       SYS_FSTAT                          = 189
+       SYS_LSTAT                          = 190
+       SYS_PATHCONF                       = 191
+       SYS_FPATHCONF                      = 192
+       SYS_GETRLIMIT                      = 194
+       SYS_SETRLIMIT                      = 195
+       SYS_GETDIRENTRIES                  = 196
+       SYS_MMAP                           = 197
+       SYS_LSEEK                          = 199
+       SYS_TRUNCATE                       = 200
+       SYS_FTRUNCATE                      = 201
+       SYS_SYSCTL                         = 202
+       SYS_MLOCK                          = 203
+       SYS_MUNLOCK                        = 204
+       SYS_UNDELETE                       = 205
+       SYS_OPEN_DPROTECTED_NP             = 216
+       SYS_GETATTRLIST                    = 220
+       SYS_SETATTRLIST                    = 221
+       SYS_GETDIRENTRIESATTR              = 222
+       SYS_EXCHANGEDATA                   = 223
+       SYS_SEARCHFS                       = 225
+       SYS_DELETE                         = 226
+       SYS_COPYFILE                       = 227
+       SYS_FGETATTRLIST                   = 228
+       SYS_FSETATTRLIST                   = 229
+       SYS_POLL                           = 230
+       SYS_WATCHEVENT                     = 231
+       SYS_WAITEVENT                      = 232
+       SYS_MODWATCH                       = 233
+       SYS_GETXATTR                       = 234
+       SYS_FGETXATTR                      = 235
+       SYS_SETXATTR                       = 236
+       SYS_FSETXATTR                      = 237
+       SYS_REMOVEXATTR                    = 238
+       SYS_FREMOVEXATTR                   = 239
+       SYS_LISTXATTR                      = 240
+       SYS_FLISTXATTR                     = 241
+       SYS_FSCTL                          = 242
+       SYS_INITGROUPS                     = 243
+       SYS_POSIX_SPAWN                    = 244
+       SYS_FFSCTL                         = 245
+       SYS_NFSCLNT                        = 247
+       SYS_FHOPEN                         = 248
+       SYS_MINHERIT                       = 250
+       SYS_SEMSYS                         = 251
+       SYS_MSGSYS                         = 252
+       SYS_SHMSYS                         = 253
+       SYS_SEMCTL                         = 254
+       SYS_SEMGET                         = 255
+       SYS_SEMOP                          = 256
+       SYS_MSGCTL                         = 258
+       SYS_MSGGET                         = 259
+       SYS_MSGSND                         = 260
+       SYS_MSGRCV                         = 261
+       SYS_SHMAT                          = 262
+       SYS_SHMCTL                         = 263
+       SYS_SHMDT                          = 264
+       SYS_SHMGET                         = 265
+       SYS_SHM_OPEN                       = 266
+       SYS_SHM_UNLINK                     = 267
+       SYS_SEM_OPEN                       = 268
+       SYS_SEM_CLOSE                      = 269
+       SYS_SEM_UNLINK                     = 270
+       SYS_SEM_WAIT                       = 271
+       SYS_SEM_TRYWAIT                    = 272
+       SYS_SEM_POST                       = 273
+       SYS_SYSCTLBYNAME                   = 274
+       SYS_OPEN_EXTENDED                  = 277
+       SYS_UMASK_EXTENDED                 = 278
+       SYS_STAT_EXTENDED                  = 279
+       SYS_LSTAT_EXTENDED                 = 280
+       SYS_FSTAT_EXTENDED                 = 281
+       SYS_CHMOD_EXTENDED                 = 282
+       SYS_FCHMOD_EXTENDED                = 283
+       SYS_ACCESS_EXTENDED                = 284
+       SYS_SETTID                         = 285
+       SYS_GETTID                         = 286
+       SYS_SETSGROUPS                     = 287
+       SYS_GETSGROUPS                     = 288
+       SYS_SETWGROUPS                     = 289
+       SYS_GETWGROUPS                     = 290
+       SYS_MKFIFO_EXTENDED                = 291
+       SYS_MKDIR_EXTENDED                 = 292
+       SYS_IDENTITYSVC                    = 293
+       SYS_SHARED_REGION_CHECK_NP         = 294
+       SYS_VM_PRESSURE_MONITOR            = 296
+       SYS_PSYNCH_RW_LONGRDLOCK           = 297
+       SYS_PSYNCH_RW_YIELDWRLOCK          = 298
+       SYS_PSYNCH_RW_DOWNGRADE            = 299
+       SYS_PSYNCH_RW_UPGRADE              = 300
+       SYS_PSYNCH_MUTEXWAIT               = 301
+       SYS_PSYNCH_MUTEXDROP               = 302
+       SYS_PSYNCH_CVBROAD                 = 303
+       SYS_PSYNCH_CVSIGNAL                = 304
+       SYS_PSYNCH_CVWAIT                  = 305
+       SYS_PSYNCH_RW_RDLOCK               = 306
+       SYS_PSYNCH_RW_WRLOCK               = 307
+       SYS_PSYNCH_RW_UNLOCK               = 308
+       SYS_PSYNCH_RW_UNLOCK2              = 309
+       SYS_GETSID                         = 310
+       SYS_SETTID_WITH_PID                = 311
+       SYS_PSYNCH_CVCLRPREPOST            = 312
+       SYS_AIO_FSYNC                      = 313
+       SYS_AIO_RETURN                     = 314
+       SYS_AIO_SUSPEND                    = 315
+       SYS_AIO_CANCEL                     = 316
+       SYS_AIO_ERROR                      = 317
+       SYS_AIO_READ                       = 318
+       SYS_AIO_WRITE                      = 319
+       SYS_LIO_LISTIO                     = 320
+       SYS_IOPOLICYSYS                    = 322
+       SYS_PROCESS_POLICY                 = 323
+       SYS_MLOCKALL                       = 324
+       SYS_MUNLOCKALL                     = 325
+       SYS_ISSETUGID                      = 327
+       SYS___PTHREAD_KILL                 = 328
+       SYS___PTHREAD_SIGMASK              = 329
+       SYS___SIGWAIT                      = 330
+       SYS___DISABLE_THREADSIGNAL         = 331
+       SYS___PTHREAD_MARKCANCEL           = 332
+       SYS___PTHREAD_CANCELED             = 333
+       SYS___SEMWAIT_SIGNAL               = 334
+       SYS_PROC_INFO                      = 336
+       SYS_SENDFILE                       = 337
+       SYS_STAT64                         = 338
+       SYS_FSTAT64                        = 339
+       SYS_LSTAT64                        = 340
+       SYS_STAT64_EXTENDED                = 341
+       SYS_LSTAT64_EXTENDED               = 342
+       SYS_FSTAT64_EXTENDED               = 343
+       SYS_GETDIRENTRIES64                = 344
+       SYS_STATFS64                       = 345
+       SYS_FSTATFS64                      = 346
+       SYS_GETFSSTAT64                    = 347
+       SYS___PTHREAD_CHDIR                = 348
+       SYS___PTHREAD_FCHDIR               = 349
+       SYS_AUDIT                          = 350
+       SYS_AUDITON                        = 351
+       SYS_GETAUID                        = 353
+       SYS_SETAUID                        = 354
+       SYS_GETAUDIT_ADDR                  = 357
+       SYS_SETAUDIT_ADDR                  = 358
+       SYS_AUDITCTL                       = 359
+       SYS_BSDTHREAD_CREATE               = 360
+       SYS_BSDTHREAD_TERMINATE            = 361
+       SYS_KQUEUE                         = 362
+       SYS_KEVENT                         = 363
+       SYS_LCHOWN                         = 364
+       SYS_STACK_SNAPSHOT                 = 365
+       SYS_BSDTHREAD_REGISTER             = 366
+       SYS_WORKQ_OPEN                     = 367
+       SYS_WORKQ_KERNRETURN               = 368
+       SYS_KEVENT64                       = 369
+       SYS___OLD_SEMWAIT_SIGNAL           = 370
+       SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL  = 371
+       SYS_THREAD_SELFID                  = 372
+       SYS_LEDGER                         = 373
+       SYS___MAC_EXECVE                   = 380
+       SYS___MAC_SYSCALL                  = 381
+       SYS___MAC_GET_FILE                 = 382
+       SYS___MAC_SET_FILE                 = 383
+       SYS___MAC_GET_LINK                 = 384
+       SYS___MAC_SET_LINK                 = 385
+       SYS___MAC_GET_PROC                 = 386
+       SYS___MAC_SET_PROC                 = 387
+       SYS___MAC_GET_FD                   = 388
+       SYS___MAC_SET_FD                   = 389
+       SYS___MAC_GET_PID                  = 390
+       SYS___MAC_GET_LCID                 = 391
+       SYS___MAC_GET_LCTX                 = 392
+       SYS___MAC_SET_LCTX                 = 393
+       SYS_SETLCID                        = 394
+       SYS_GETLCID                        = 395
+       SYS_READ_NOCANCEL                  = 396
+       SYS_WRITE_NOCANCEL                 = 397
+       SYS_OPEN_NOCANCEL                  = 398
+       SYS_CLOSE_NOCANCEL                 = 399
+       SYS_WAIT4_NOCANCEL                 = 400
+       SYS_RECVMSG_NOCANCEL               = 401
+       SYS_SENDMSG_NOCANCEL               = 402
+       SYS_RECVFROM_NOCANCEL              = 403
+       SYS_ACCEPT_NOCANCEL                = 404
+       SYS_MSYNC_NOCANCEL                 = 405
+       SYS_FCNTL_NOCANCEL                 = 406
+       SYS_SELECT_NOCANCEL                = 407
+       SYS_FSYNC_NOCANCEL                 = 408
+       SYS_CONNECT_NOCANCEL               = 409
+       SYS_SIGSUSPEND_NOCANCEL            = 410
+       SYS_READV_NOCANCEL                 = 411
+       SYS_WRITEV_NOCANCEL                = 412
+       SYS_SENDTO_NOCANCEL                = 413
+       SYS_PREAD_NOCANCEL                 = 414
+       SYS_PWRITE_NOCANCEL                = 415
+       SYS_WAITID_NOCANCEL                = 416
+       SYS_POLL_NOCANCEL                  = 417
+       SYS_MSGSND_NOCANCEL                = 418
+       SYS_MSGRCV_NOCANCEL                = 419
+       SYS_SEM_WAIT_NOCANCEL              = 420
+       SYS_AIO_SUSPEND_NOCANCEL           = 421
+       SYS___SIGWAIT_NOCANCEL             = 422
+       SYS___SEMWAIT_SIGNAL_NOCANCEL      = 423
+       SYS___MAC_MOUNT                    = 424
+       SYS___MAC_GET_MOUNT                = 425
+       SYS___MAC_GETFSSTAT                = 426
+       SYS_FSGETPATH                      = 427
+       SYS_AUDIT_SESSION_SELF             = 428
+       SYS_AUDIT_SESSION_JOIN             = 429
+       SYS_FILEPORT_MAKEPORT              = 430
+       SYS_FILEPORT_MAKEFD                = 431
+       SYS_AUDIT_SESSION_PORT             = 432
+       SYS_PID_SUSPEND                    = 433
+       SYS_PID_RESUME                     = 434
+       SYS_PID_HIBERNATE                  = 435
+       SYS_PID_SHUTDOWN_SOCKETS           = 436
+       SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438
+       SYS_KAS_INFO                       = 439
+       SYS_MEMORYSTATUS_CONTROL           = 440
+       SYS_GUARDED_OPEN_NP                = 441
+       SYS_GUARDED_CLOSE_NP               = 442
+       SYS_GUARDED_KQUEUE_NP              = 443
+       SYS_CHANGE_FDGUARD_NP              = 444
+       SYS_PROC_RLIMIT_CONTROL            = 446
+       SYS_CONNECTX                       = 447
+       SYS_DISCONNECTX                    = 448
+       SYS_PEELOFF                        = 449
+       SYS_SOCKET_DELEGATE                = 450
+       SYS_TELEMETRY                      = 451
+       SYS_PROC_UUID_POLICY               = 452
+       SYS_MEMORYSTATUS_GET_LEVEL         = 453
+       SYS_SYSTEM_OVERRIDE                = 454
+       SYS_VFS_PURGE                      = 455
+       SYS_SFI_CTL                        = 456
+       SYS_SFI_PIDCTL                     = 457
+       SYS_COALITION                      = 458
+       SYS_COALITION_INFO                 = 459
+       SYS_NECP_MATCH_POLICY              = 460
+       SYS_GETATTRLISTBULK                = 461
+       SYS_OPENAT                         = 463
+       SYS_OPENAT_NOCANCEL                = 464
+       SYS_RENAMEAT                       = 465
+       SYS_FACCESSAT                      = 466
+       SYS_FCHMODAT                       = 467
+       SYS_FCHOWNAT                       = 468
+       SYS_FSTATAT                        = 469
+       SYS_FSTATAT64                      = 470
+       SYS_LINKAT                         = 471
+       SYS_UNLINKAT                       = 472
+       SYS_READLINKAT                     = 473
+       SYS_SYMLINKAT                      = 474
+       SYS_MKDIRAT                        = 475
+       SYS_GETATTRLISTAT                  = 476
+       SYS_PROC_TRACE_LOG                 = 477
+       SYS_BSDTHREAD_CTL                  = 478
+       SYS_OPENBYID_NP                    = 479
+       SYS_RECVMSG_X                      = 480
+       SYS_SENDMSG_X                      = 481
+       SYS_THREAD_SELFUSAGE               = 482
+       SYS_CSRCTL                         = 483
+       SYS_GUARDED_OPEN_DPROTECTED_NP     = 484
+       SYS_GUARDED_WRITE_NP               = 485
+       SYS_GUARDED_PWRITE_NP              = 486
+       SYS_GUARDED_WRITEV_NP              = 487
+       SYS_RENAME_EXT                     = 488
+       SYS_MREMAP_ENCRYPTED               = 489
+       SYS_MAXSYSCALL                     = 490
+)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_386.go b/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_386.go
new file mode 100644 (file)
index 0000000..785240a
--- /dev/null
@@ -0,0 +1,304 @@
+// mksysnum_dragonfly.pl
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build 386,dragonfly
+
+package unix
+
+const (
+       // SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int
+       SYS_EXIT          = 1   // { void exit(int rval); }
+       SYS_FORK          = 2   // { int fork(void); }
+       SYS_READ          = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }
+       SYS_WRITE         = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }
+       SYS_OPEN          = 5   // { int open(char *path, int flags, int mode); }
+       SYS_CLOSE         = 6   // { int close(int fd); }
+       SYS_WAIT4         = 7   // { int wait4(int pid, int *status, int options, \
+       SYS_LINK          = 9   // { int link(char *path, char *link); }
+       SYS_UNLINK        = 10  // { int unlink(char *path); }
+       SYS_CHDIR         = 12  // { int chdir(char *path); }
+       SYS_FCHDIR        = 13  // { int fchdir(int fd); }
+       SYS_MKNOD         = 14  // { int mknod(char *path, int mode, int dev); }
+       SYS_CHMOD         = 15  // { int chmod(char *path, int mode); }
+       SYS_CHOWN         = 16  // { int chown(char *path, int uid, int gid); }
+       SYS_OBREAK        = 17  // { int obreak(char *nsize); } break obreak_args int
+       SYS_GETFSSTAT     = 18  // { int getfsstat(struct statfs *buf, long bufsize, \
+       SYS_GETPID        = 20  // { pid_t getpid(void); }
+       SYS_MOUNT         = 21  // { int mount(char *type, char *path, int flags, \
+       SYS_UNMOUNT       = 22  // { int unmount(char *path, int flags); }
+       SYS_SETUID        = 23  // { int setuid(uid_t uid); }
+       SYS_GETUID        = 24  // { uid_t getuid(void); }
+       SYS_GETEUID       = 25  // { uid_t geteuid(void); }
+       SYS_PTRACE        = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, \
+       SYS_RECVMSG       = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }
+       SYS_SENDMSG       = 28  // { int sendmsg(int s, caddr_t msg, int flags); }
+       SYS_RECVFROM      = 29  // { int recvfrom(int s, caddr_t buf, size_t len, \
+       SYS_ACCEPT        = 30  // { int accept(int s, caddr_t name, int *anamelen); }
+       SYS_GETPEERNAME   = 31  // { int getpeername(int fdes, caddr_t asa, int *alen); }
+       SYS_GETSOCKNAME   = 32  // { int getsockname(int fdes, caddr_t asa, int *alen); }
+       SYS_ACCESS        = 33  // { int access(char *path, int flags); }
+       SYS_CHFLAGS       = 34  // { int chflags(char *path, int flags); }
+       SYS_FCHFLAGS      = 35  // { int fchflags(int fd, int flags); }
+       SYS_SYNC          = 36  // { int sync(void); }
+       SYS_KILL          = 37  // { int kill(int pid, int signum); }
+       SYS_GETPPID       = 39  // { pid_t getppid(void); }
+       SYS_DUP           = 41  // { int dup(u_int fd); }
+       SYS_PIPE          = 42  // { int pipe(void); }
+       SYS_GETEGID       = 43  // { gid_t getegid(void); }
+       SYS_PROFIL        = 44  // { int profil(caddr_t samples, size_t size, \
+       SYS_KTRACE        = 45  // { int ktrace(const char *fname, int ops, int facs, \
+       SYS_GETGID        = 47  // { gid_t getgid(void); }
+       SYS_GETLOGIN      = 49  // { int getlogin(char *namebuf, u_int namelen); }
+       SYS_SETLOGIN      = 50  // { int setlogin(char *namebuf); }
+       SYS_ACCT          = 51  // { int acct(char *path); }
+       SYS_SIGALTSTACK   = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }
+       SYS_IOCTL         = 54  // { int ioctl(int fd, u_long com, caddr_t data); }
+       SYS_REBOOT        = 55  // { int reboot(int opt); }
+       SYS_REVOKE        = 56  // { int revoke(char *path); }
+       SYS_SYMLINK       = 57  // { int symlink(char *path, char *link); }
+       SYS_READLINK      = 58  // { int readlink(char *path, char *buf, int count); }
+       SYS_EXECVE        = 59  // { int execve(char *fname, char **argv, char **envv); }
+       SYS_UMASK         = 60  // { int umask(int newmask); } umask umask_args int
+       SYS_CHROOT        = 61  // { int chroot(char *path); }
+       SYS_MSYNC         = 65  // { int msync(void *addr, size_t len, int flags); }
+       SYS_VFORK         = 66  // { pid_t vfork(void); }
+       SYS_SBRK          = 69  // { int sbrk(int incr); }
+       SYS_SSTK          = 70  // { int sstk(int incr); }
+       SYS_MUNMAP        = 73  // { int munmap(void *addr, size_t len); }
+       SYS_MPROTECT      = 74  // { int mprotect(void *addr, size_t len, int prot); }
+       SYS_MADVISE       = 75  // { int madvise(void *addr, size_t len, int behav); }
+       SYS_MINCORE       = 78  // { int mincore(const void *addr, size_t len, \
+       SYS_GETGROUPS     = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }
+       SYS_SETGROUPS     = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }
+       SYS_GETPGRP       = 81  // { int getpgrp(void); }
+       SYS_SETPGID       = 82  // { int setpgid(int pid, int pgid); }
+       SYS_SETITIMER     = 83  // { int setitimer(u_int which, struct itimerval *itv, \
+       SYS_SWAPON        = 85  // { int swapon(char *name); }
+       SYS_GETITIMER     = 86  // { int getitimer(u_int which, struct itimerval *itv); }
+       SYS_GETDTABLESIZE = 89  // { int getdtablesize(void); }
+       SYS_DUP2          = 90  // { int dup2(u_int from, u_int to); }
+       SYS_FCNTL         = 92  // { int fcntl(int fd, int cmd, long arg); }
+       SYS_SELECT        = 93  // { int select(int nd, fd_set *in, fd_set *ou, \
+       SYS_FSYNC         = 95  // { int fsync(int fd); }
+       SYS_SETPRIORITY   = 96  // { int setpriority(int which, int who, int prio); }
+       SYS_SOCKET        = 97  // { int socket(int domain, int type, int protocol); }
+       SYS_CONNECT       = 98  // { int connect(int s, caddr_t name, int namelen); }
+       SYS_GETPRIORITY   = 100 // { int getpriority(int which, int who); }
+       SYS_BIND          = 104 // { int bind(int s, caddr_t name, int namelen); }
+       SYS_SETSOCKOPT    = 105 // { int setsockopt(int s, int level, int name, \
+       SYS_LISTEN        = 106 // { int listen(int s, int backlog); }
+       SYS_GETTIMEOFDAY  = 116 // { int gettimeofday(struct timeval *tp, \
+       SYS_GETRUSAGE     = 117 // { int getrusage(int who, struct rusage *rusage); }
+       SYS_GETSOCKOPT    = 118 // { int getsockopt(int s, int level, int name, \
+       SYS_READV         = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }
+       SYS_WRITEV        = 121 // { int writev(int fd, struct iovec *iovp, \
+       SYS_SETTIMEOFDAY  = 122 // { int settimeofday(struct timeval *tv, \
+       SYS_FCHOWN        = 123 // { int fchown(int fd, int uid, int gid); }
+       SYS_FCHMOD        = 124 // { int fchmod(int fd, int mode); }
+       SYS_SETREUID      = 126 // { int setreuid(int ruid, int euid); }
+       SYS_SETREGID      = 127 // { int setregid(int rgid, int egid); }
+       SYS_RENAME        = 128 // { int rename(char *from, char *to); }
+       SYS_FLOCK         = 131 // { int flock(int fd, int how); }
+       SYS_MKFIFO        = 132 // { int mkfifo(char *path, int mode); }
+       SYS_SENDTO        = 133 // { int sendto(int s, caddr_t buf, size_t len, \
+       SYS_SHUTDOWN      = 134 // { int shutdown(int s, int how); }
+       SYS_SOCKETPAIR    = 135 // { int socketpair(int domain, int type, int protocol, \
+       SYS_MKDIR         = 136 // { int mkdir(char *path, int mode); }
+       SYS_RMDIR         = 137 // { int rmdir(char *path); }
+       SYS_UTIMES        = 138 // { int utimes(char *path, struct timeval *tptr); }
+       SYS_ADJTIME       = 140 // { int adjtime(struct timeval *delta, \
+       SYS_SETSID        = 147 // { int setsid(void); }
+       SYS_QUOTACTL      = 148 // { int quotactl(char *path, int cmd, int uid, \
+       SYS_STATFS        = 157 // { int statfs(char *path, struct statfs *buf); }
+       SYS_FSTATFS       = 158 // { int fstatfs(int fd, struct statfs *buf); }
+       SYS_GETFH         = 161 // { int getfh(char *fname, struct fhandle *fhp); }
+       SYS_GETDOMAINNAME = 162 // { int getdomainname(char *domainname, int len); }
+       SYS_SETDOMAINNAME = 163 // { int setdomainname(char *domainname, int len); }
+       SYS_UNAME         = 164 // { int uname(struct utsname *name); }
+       SYS_SYSARCH       = 165 // { int sysarch(int op, char *parms); }
+       SYS_RTPRIO        = 166 // { int rtprio(int function, pid_t pid, \
+       SYS_EXTPREAD      = 173 // { ssize_t extpread(int fd, void *buf, \
+       SYS_EXTPWRITE     = 174 // { ssize_t extpwrite(int fd, const void *buf, \
+       SYS_NTP_ADJTIME   = 176 // { int ntp_adjtime(struct timex *tp); }
+       SYS_SETGID        = 181 // { int setgid(gid_t gid); }
+       SYS_SETEGID       = 182 // { int setegid(gid_t egid); }
+       SYS_SETEUID       = 183 // { int seteuid(uid_t euid); }
+       SYS_PATHCONF      = 191 // { int pathconf(char *path, int name); }
+       SYS_FPATHCONF     = 192 // { int fpathconf(int fd, int name); }
+       SYS_GETRLIMIT     = 194 // { int getrlimit(u_int which, \
+       SYS_SETRLIMIT     = 195 // { int setrlimit(u_int which, \
+       SYS_MMAP          = 197 // { caddr_t mmap(caddr_t addr, size_t len, int prot, \
+       // SYS_NOSYS = 198;  // { int nosys(void); } __syscall __syscall_args int
+       SYS_LSEEK                  = 199 // { off_t lseek(int fd, int pad, off_t offset, \
+       SYS_TRUNCATE               = 200 // { int truncate(char *path, int pad, off_t length); }
+       SYS_FTRUNCATE              = 201 // { int ftruncate(int fd, int pad, off_t length); }
+       SYS___SYSCTL               = 202 // { int __sysctl(int *name, u_int namelen, void *old, \
+       SYS_MLOCK                  = 203 // { int mlock(const void *addr, size_t len); }
+       SYS_MUNLOCK                = 204 // { int munlock(const void *addr, size_t len); }
+       SYS_UNDELETE               = 205 // { int undelete(char *path); }
+       SYS_FUTIMES                = 206 // { int futimes(int fd, struct timeval *tptr); }
+       SYS_GETPGID                = 207 // { int getpgid(pid_t pid); }
+       SYS_POLL                   = 209 // { int poll(struct pollfd *fds, u_int nfds, \
+       SYS___SEMCTL               = 220 // { int __semctl(int semid, int semnum, int cmd, \
+       SYS_SEMGET                 = 221 // { int semget(key_t key, int nsems, int semflg); }
+       SYS_SEMOP                  = 222 // { int semop(int semid, struct sembuf *sops, \
+       SYS_MSGCTL                 = 224 // { int msgctl(int msqid, int cmd, \
+       SYS_MSGGET                 = 225 // { int msgget(key_t key, int msgflg); }
+       SYS_MSGSND                 = 226 // { int msgsnd(int msqid, void *msgp, size_t msgsz, \
+       SYS_MSGRCV                 = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, \
+       SYS_SHMAT                  = 228 // { caddr_t shmat(int shmid, const void *shmaddr, \
+       SYS_SHMCTL                 = 229 // { int shmctl(int shmid, int cmd, \
+       SYS_SHMDT                  = 230 // { int shmdt(const void *shmaddr); }
+       SYS_SHMGET                 = 231 // { int shmget(key_t key, size_t size, int shmflg); }
+       SYS_CLOCK_GETTIME          = 232 // { int clock_gettime(clockid_t clock_id, \
+       SYS_CLOCK_SETTIME          = 233 // { int clock_settime(clockid_t clock_id, \
+       SYS_CLOCK_GETRES           = 234 // { int clock_getres(clockid_t clock_id, \
+       SYS_NANOSLEEP              = 240 // { int nanosleep(const struct timespec *rqtp, \
+       SYS_MINHERIT               = 250 // { int minherit(void *addr, size_t len, int inherit); }
+       SYS_RFORK                  = 251 // { int rfork(int flags); }
+       SYS_OPENBSD_POLL           = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, \
+       SYS_ISSETUGID              = 253 // { int issetugid(void); }
+       SYS_LCHOWN                 = 254 // { int lchown(char *path, int uid, int gid); }
+       SYS_LCHMOD                 = 274 // { int lchmod(char *path, mode_t mode); }
+       SYS_LUTIMES                = 276 // { int lutimes(char *path, struct timeval *tptr); }
+       SYS_EXTPREADV              = 289 // { ssize_t extpreadv(int fd, struct iovec *iovp, \
+       SYS_EXTPWRITEV             = 290 // { ssize_t extpwritev(int fd, struct iovec *iovp,\
+       SYS_FHSTATFS               = 297 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }
+       SYS_FHOPEN                 = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }
+       SYS_MODNEXT                = 300 // { int modnext(int modid); }
+       SYS_MODSTAT                = 301 // { int modstat(int modid, struct module_stat* stat); }
+       SYS_MODFNEXT               = 302 // { int modfnext(int modid); }
+       SYS_MODFIND                = 303 // { int modfind(const char *name); }
+       SYS_KLDLOAD                = 304 // { int kldload(const char *file); }
+       SYS_KLDUNLOAD              = 305 // { int kldunload(int fileid); }
+       SYS_KLDFIND                = 306 // { int kldfind(const char *file); }
+       SYS_KLDNEXT                = 307 // { int kldnext(int fileid); }
+       SYS_KLDSTAT                = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); }
+       SYS_KLDFIRSTMOD            = 309 // { int kldfirstmod(int fileid); }
+       SYS_GETSID                 = 310 // { int getsid(pid_t pid); }
+       SYS_SETRESUID              = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }
+       SYS_SETRESGID              = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }
+       SYS_AIO_RETURN             = 314 // { int aio_return(struct aiocb *aiocbp); }
+       SYS_AIO_SUSPEND            = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }
+       SYS_AIO_CANCEL             = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }
+       SYS_AIO_ERROR              = 317 // { int aio_error(struct aiocb *aiocbp); }
+       SYS_AIO_READ               = 318 // { int aio_read(struct aiocb *aiocbp); }
+       SYS_AIO_WRITE              = 319 // { int aio_write(struct aiocb *aiocbp); }
+       SYS_LIO_LISTIO             = 320 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); }
+       SYS_YIELD                  = 321 // { int yield(void); }
+       SYS_MLOCKALL               = 324 // { int mlockall(int how); }
+       SYS_MUNLOCKALL             = 325 // { int munlockall(void); }
+       SYS___GETCWD               = 326 // { int __getcwd(u_char *buf, u_int buflen); }
+       SYS_SCHED_SETPARAM         = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }
+       SYS_SCHED_GETPARAM         = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }
+       SYS_SCHED_SETSCHEDULER     = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }
+       SYS_SCHED_GETSCHEDULER     = 330 // { int sched_getscheduler (pid_t pid); }
+       SYS_SCHED_YIELD            = 331 // { int sched_yield (void); }
+       SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); }
+       SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); }
+       SYS_SCHED_RR_GET_INTERVAL  = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }
+       SYS_UTRACE                 = 335 // { int utrace(const void *addr, size_t len); }
+       SYS_KLDSYM                 = 337 // { int kldsym(int fileid, int cmd, void *data); }
+       SYS_JAIL                   = 338 // { int jail(struct jail *jail); }
+       SYS_SIGPROCMASK            = 340 // { int sigprocmask(int how, const sigset_t *set, \
+       SYS_SIGSUSPEND             = 341 // { int sigsuspend(const sigset_t *sigmask); }
+       SYS_SIGACTION              = 342 // { int sigaction(int sig, const struct sigaction *act, \
+       SYS_SIGPENDING             = 343 // { int sigpending(sigset_t *set); }
+       SYS_SIGRETURN              = 344 // { int sigreturn(ucontext_t *sigcntxp); }
+       SYS_SIGTIMEDWAIT           = 345 // { int sigtimedwait(const sigset_t *set,\
+       SYS_SIGWAITINFO            = 346 // { int sigwaitinfo(const sigset_t *set,\
+       SYS___ACL_GET_FILE         = 347 // { int __acl_get_file(const char *path, \
+       SYS___ACL_SET_FILE         = 348 // { int __acl_set_file(const char *path, \
+       SYS___ACL_GET_FD           = 349 // { int __acl_get_fd(int filedes, acl_type_t type, \
+       SYS___ACL_SET_FD           = 350 // { int __acl_set_fd(int filedes, acl_type_t type, \
+       SYS___ACL_DELETE_FILE      = 351 // { int __acl_delete_file(const char *path, \
+       SYS___ACL_DELETE_FD        = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }
+       SYS___ACL_ACLCHECK_FILE    = 353 // { int __acl_aclcheck_file(const char *path, \
+       SYS___ACL_ACLCHECK_FD      = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, \
+       SYS_EXTATTRCTL             = 355 // { int extattrctl(const char *path, int cmd, \
+       SYS_EXTATTR_SET_FILE       = 356 // { int extattr_set_file(const char *path, \
+       SYS_EXTATTR_GET_FILE       = 357 // { int extattr_get_file(const char *path, \
+       SYS_EXTATTR_DELETE_FILE    = 358 // { int extattr_delete_file(const char *path, \
+       SYS_AIO_WAITCOMPLETE       = 359 // { int aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }
+       SYS_GETRESUID              = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }
+       SYS_GETRESGID              = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }
+       SYS_KQUEUE                 = 362 // { int kqueue(void); }
+       SYS_KEVENT                 = 363 // { int kevent(int fd, \
+       SYS_SCTP_PEELOFF           = 364 // { int sctp_peeloff(int sd, caddr_t name ); }
+       SYS_LCHFLAGS               = 391 // { int lchflags(char *path, int flags); }
+       SYS_UUIDGEN                = 392 // { int uuidgen(struct uuid *store, int count); }
+       SYS_SENDFILE               = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, \
+       SYS_VARSYM_SET             = 450 // { int varsym_set(int level, const char *name, const char *data); }
+       SYS_VARSYM_GET             = 451 // { int varsym_get(int mask, const char *wild, char *buf, int bufsize); }
+       SYS_VARSYM_LIST            = 452 // { int varsym_list(int level, char *buf, int maxsize, int *marker); }
+       SYS_EXEC_SYS_REGISTER      = 465 // { int exec_sys_register(void *entry); }
+       SYS_EXEC_SYS_UNREGISTER    = 466 // { int exec_sys_unregister(int id); }
+       SYS_SYS_CHECKPOINT         = 467 // { int sys_checkpoint(int type, int fd, pid_t pid, int retval); }
+       SYS_MOUNTCTL               = 468 // { int mountctl(const char *path, int op, int fd, const void *ctl, int ctllen, void *buf, int buflen); }
+       SYS_UMTX_SLEEP             = 469 // { int umtx_sleep(volatile const int *ptr, int value, int timeout); }
+       SYS_UMTX_WAKEUP            = 470 // { int umtx_wakeup(volatile const int *ptr, int count); }
+       SYS_JAIL_ATTACH            = 471 // { int jail_attach(int jid); }
+       SYS_SET_TLS_AREA           = 472 // { int set_tls_area(int which, struct tls_info *info, size_t infosize); }
+       SYS_GET_TLS_AREA           = 473 // { int get_tls_area(int which, struct tls_info *info, size_t infosize); }
+       SYS_CLOSEFROM              = 474 // { int closefrom(int fd); }
+       SYS_STAT                   = 475 // { int stat(const char *path, struct stat *ub); }
+       SYS_FSTAT                  = 476 // { int fstat(int fd, struct stat *sb); }
+       SYS_LSTAT                  = 477 // { int lstat(const char *path, struct stat *ub); }
+       SYS_FHSTAT                 = 478 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }
+       SYS_GETDIRENTRIES          = 479 // { int getdirentries(int fd, char *buf, u_int count, \
+       SYS_GETDENTS               = 480 // { int getdents(int fd, char *buf, size_t count); }
+       SYS_USCHED_SET             = 481 // { int usched_set(pid_t pid, int cmd, void *data, \
+       SYS_EXTACCEPT              = 482 // { int extaccept(int s, int flags, caddr_t name, int *anamelen); }
+       SYS_EXTCONNECT             = 483 // { int extconnect(int s, int flags, caddr_t name, int namelen); }
+       SYS_MCONTROL               = 485 // { int mcontrol(void *addr, size_t len, int behav, off_t value); }
+       SYS_VMSPACE_CREATE         = 486 // { int vmspace_create(void *id, int type, void *data); }
+       SYS_VMSPACE_DESTROY        = 487 // { int vmspace_destroy(void *id); }
+       SYS_VMSPACE_CTL            = 488 // { int vmspace_ctl(void *id, int cmd,                \
+       SYS_VMSPACE_MMAP           = 489 // { int vmspace_mmap(void *id, void *addr, size_t len, \
+       SYS_VMSPACE_MUNMAP         = 490 // { int vmspace_munmap(void *id, void *addr,  \
+       SYS_VMSPACE_MCONTROL       = 491 // { int vmspace_mcontrol(void *id, void *addr,        \
+       SYS_VMSPACE_PREAD          = 492 // { ssize_t vmspace_pread(void *id, void *buf, \
+       SYS_VMSPACE_PWRITE         = 493 // { ssize_t vmspace_pwrite(void *id, const void *buf, \
+       SYS_EXTEXIT                = 494 // { void extexit(int how, int status, void *addr); }
+       SYS_LWP_CREATE             = 495 // { int lwp_create(struct lwp_params *params); }
+       SYS_LWP_GETTID             = 496 // { lwpid_t lwp_gettid(void); }
+       SYS_LWP_KILL               = 497 // { int lwp_kill(pid_t pid, lwpid_t tid, int signum); }
+       SYS_LWP_RTPRIO             = 498 // { int lwp_rtprio(int function, pid_t pid, lwpid_t tid, struct rtprio *rtp); }
+       SYS_PSELECT                = 499 // { int pselect(int nd, fd_set *in, fd_set *ou, \
+       SYS_STATVFS                = 500 // { int statvfs(const char *path, struct statvfs *buf); }
+       SYS_FSTATVFS               = 501 // { int fstatvfs(int fd, struct statvfs *buf); }
+       SYS_FHSTATVFS              = 502 // { int fhstatvfs(const struct fhandle *u_fhp, struct statvfs *buf); }
+       SYS_GETVFSSTAT             = 503 // { int getvfsstat(struct statfs *buf,          \
+       SYS_OPENAT                 = 504 // { int openat(int fd, char *path, int flags, int mode); }
+       SYS_FSTATAT                = 505 // { int fstatat(int fd, char *path,   \
+       SYS_FCHMODAT               = 506 // { int fchmodat(int fd, char *path, int mode, \
+       SYS_FCHOWNAT               = 507 // { int fchownat(int fd, char *path, int uid, int gid, \
+       SYS_UNLINKAT               = 508 // { int unlinkat(int fd, char *path, int flags); }
+       SYS_FACCESSAT              = 509 // { int faccessat(int fd, char *path, int amode, \
+       SYS_MQ_OPEN                = 510 // { mqd_t mq_open(const char * name, int oflag, \
+       SYS_MQ_CLOSE               = 511 // { int mq_close(mqd_t mqdes); }
+       SYS_MQ_UNLINK              = 512 // { int mq_unlink(const char *name); }
+       SYS_MQ_GETATTR             = 513 // { int mq_getattr(mqd_t mqdes, \
+       SYS_MQ_SETATTR             = 514 // { int mq_setattr(mqd_t mqdes, \
+       SYS_MQ_NOTIFY              = 515 // { int mq_notify(mqd_t mqdes, \
+       SYS_MQ_SEND                = 516 // { int mq_send(mqd_t mqdes, const char *msg_ptr, \
+       SYS_MQ_RECEIVE             = 517 // { ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, \
+       SYS_MQ_TIMEDSEND           = 518 // { int mq_timedsend(mqd_t mqdes, \
+       SYS_MQ_TIMEDRECEIVE        = 519 // { ssize_t mq_timedreceive(mqd_t mqdes, \
+       SYS_IOPRIO_SET             = 520 // { int ioprio_set(int which, int who, int prio); }
+       SYS_IOPRIO_GET             = 521 // { int ioprio_get(int which, int who); }
+       SYS_CHROOT_KERNEL          = 522 // { int chroot_kernel(char *path); }
+       SYS_RENAMEAT               = 523 // { int renameat(int oldfd, char *old, int newfd, \
+       SYS_MKDIRAT                = 524 // { int mkdirat(int fd, char *path, mode_t mode); }
+       SYS_MKFIFOAT               = 525 // { int mkfifoat(int fd, char *path, mode_t mode); }
+       SYS_MKNODAT                = 526 // { int mknodat(int fd, char *path, mode_t mode, \
+       SYS_READLINKAT             = 527 // { int readlinkat(int fd, char *path, char *buf, \
+       SYS_SYMLINKAT              = 528 // { int symlinkat(char *path1, int fd, char *path2); }
+       SYS_SWAPOFF                = 529 // { int swapoff(char *name); }
+       SYS_VQUOTACTL              = 530 // { int vquotactl(const char *path, \
+       SYS_LINKAT                 = 531 // { int linkat(int fd1, char *path1, int fd2, \
+       SYS_EACCESS                = 532 // { int eaccess(char *path, int flags); }
+       SYS_LPATHCONF              = 533 // { int lpathconf(char *path, int name); }
+       SYS_VMM_GUEST_CTL          = 534 // { int vmm_guest_ctl(int op, struct vmm_guest_options *options); }
+       SYS_VMM_GUEST_SYNC_ADDR    = 535 // { int vmm_guest_sync_addr(long *dstaddr, long *srcaddr); }
+)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go
new file mode 100644 (file)
index 0000000..d6038fa
--- /dev/null
@@ -0,0 +1,304 @@
+// mksysnum_dragonfly.pl
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build amd64,dragonfly
+
+package unix
+
+const (
+       // SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int
+       SYS_EXIT          = 1   // { void exit(int rval); }
+       SYS_FORK          = 2   // { int fork(void); }
+       SYS_READ          = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }
+       SYS_WRITE         = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }
+       SYS_OPEN          = 5   // { int open(char *path, int flags, int mode); }
+       SYS_CLOSE         = 6   // { int close(int fd); }
+       SYS_WAIT4         = 7   // { int wait4(int pid, int *status, int options, \
+       SYS_LINK          = 9   // { int link(char *path, char *link); }
+       SYS_UNLINK        = 10  // { int unlink(char *path); }
+       SYS_CHDIR         = 12  // { int chdir(char *path); }
+       SYS_FCHDIR        = 13  // { int fchdir(int fd); }
+       SYS_MKNOD         = 14  // { int mknod(char *path, int mode, int dev); }
+       SYS_CHMOD         = 15  // { int chmod(char *path, int mode); }
+       SYS_CHOWN         = 16  // { int chown(char *path, int uid, int gid); }
+       SYS_OBREAK        = 17  // { int obreak(char *nsize); } break obreak_args int
+       SYS_GETFSSTAT     = 18  // { int getfsstat(struct statfs *buf, long bufsize, \
+       SYS_GETPID        = 20  // { pid_t getpid(void); }
+       SYS_MOUNT         = 21  // { int mount(char *type, char *path, int flags, \
+       SYS_UNMOUNT       = 22  // { int unmount(char *path, int flags); }
+       SYS_SETUID        = 23  // { int setuid(uid_t uid); }
+       SYS_GETUID        = 24  // { uid_t getuid(void); }
+       SYS_GETEUID       = 25  // { uid_t geteuid(void); }
+       SYS_PTRACE        = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, \
+       SYS_RECVMSG       = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }
+       SYS_SENDMSG       = 28  // { int sendmsg(int s, caddr_t msg, int flags); }
+       SYS_RECVFROM      = 29  // { int recvfrom(int s, caddr_t buf, size_t len, \
+       SYS_ACCEPT        = 30  // { int accept(int s, caddr_t name, int *anamelen); }
+       SYS_GETPEERNAME   = 31  // { int getpeername(int fdes, caddr_t asa, int *alen); }
+       SYS_GETSOCKNAME   = 32  // { int getsockname(int fdes, caddr_t asa, int *alen); }
+       SYS_ACCESS        = 33  // { int access(char *path, int flags); }
+       SYS_CHFLAGS       = 34  // { int chflags(char *path, int flags); }
+       SYS_FCHFLAGS      = 35  // { int fchflags(int fd, int flags); }
+       SYS_SYNC          = 36  // { int sync(void); }
+       SYS_KILL          = 37  // { int kill(int pid, int signum); }
+       SYS_GETPPID       = 39  // { pid_t getppid(void); }
+       SYS_DUP           = 41  // { int dup(u_int fd); }
+       SYS_PIPE          = 42  // { int pipe(void); }
+       SYS_GETEGID       = 43  // { gid_t getegid(void); }
+       SYS_PROFIL        = 44  // { int profil(caddr_t samples, size_t size, \
+       SYS_KTRACE        = 45  // { int ktrace(const char *fname, int ops, int facs, \
+       SYS_GETGID        = 47  // { gid_t getgid(void); }
+       SYS_GETLOGIN      = 49  // { int getlogin(char *namebuf, u_int namelen); }
+       SYS_SETLOGIN      = 50  // { int setlogin(char *namebuf); }
+       SYS_ACCT          = 51  // { int acct(char *path); }
+       SYS_SIGALTSTACK   = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }
+       SYS_IOCTL         = 54  // { int ioctl(int fd, u_long com, caddr_t data); }
+       SYS_REBOOT        = 55  // { int reboot(int opt); }
+       SYS_REVOKE        = 56  // { int revoke(char *path); }
+       SYS_SYMLINK       = 57  // { int symlink(char *path, char *link); }
+       SYS_READLINK      = 58  // { int readlink(char *path, char *buf, int count); }
+       SYS_EXECVE        = 59  // { int execve(char *fname, char **argv, char **envv); }
+       SYS_UMASK         = 60  // { int umask(int newmask); } umask umask_args int
+       SYS_CHROOT        = 61  // { int chroot(char *path); }
+       SYS_MSYNC         = 65  // { int msync(void *addr, size_t len, int flags); }
+       SYS_VFORK         = 66  // { pid_t vfork(void); }
+       SYS_SBRK          = 69  // { int sbrk(int incr); }
+       SYS_SSTK          = 70  // { int sstk(int incr); }
+       SYS_MUNMAP        = 73  // { int munmap(void *addr, size_t len); }
+       SYS_MPROTECT      = 74  // { int mprotect(void *addr, size_t len, int prot); }
+       SYS_MADVISE       = 75  // { int madvise(void *addr, size_t len, int behav); }
+       SYS_MINCORE       = 78  // { int mincore(const void *addr, size_t len, \
+       SYS_GETGROUPS     = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }
+       SYS_SETGROUPS     = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }
+       SYS_GETPGRP       = 81  // { int getpgrp(void); }
+       SYS_SETPGID       = 82  // { int setpgid(int pid, int pgid); }
+       SYS_SETITIMER     = 83  // { int setitimer(u_int which, struct itimerval *itv, \
+       SYS_SWAPON        = 85  // { int swapon(char *name); }
+       SYS_GETITIMER     = 86  // { int getitimer(u_int which, struct itimerval *itv); }
+       SYS_GETDTABLESIZE = 89  // { int getdtablesize(void); }
+       SYS_DUP2          = 90  // { int dup2(u_int from, u_int to); }
+       SYS_FCNTL         = 92  // { int fcntl(int fd, int cmd, long arg); }
+       SYS_SELECT        = 93  // { int select(int nd, fd_set *in, fd_set *ou, \
+       SYS_FSYNC         = 95  // { int fsync(int fd); }
+       SYS_SETPRIORITY   = 96  // { int setpriority(int which, int who, int prio); }
+       SYS_SOCKET        = 97  // { int socket(int domain, int type, int protocol); }
+       SYS_CONNECT       = 98  // { int connect(int s, caddr_t name, int namelen); }
+       SYS_GETPRIORITY   = 100 // { int getpriority(int which, int who); }
+       SYS_BIND          = 104 // { int bind(int s, caddr_t name, int namelen); }
+       SYS_SETSOCKOPT    = 105 // { int setsockopt(int s, int level, int name, \
+       SYS_LISTEN        = 106 // { int listen(int s, int backlog); }
+       SYS_GETTIMEOFDAY  = 116 // { int gettimeofday(struct timeval *tp, \
+       SYS_GETRUSAGE     = 117 // { int getrusage(int who, struct rusage *rusage); }
+       SYS_GETSOCKOPT    = 118 // { int getsockopt(int s, int level, int name, \
+       SYS_READV         = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }
+       SYS_WRITEV        = 121 // { int writev(int fd, struct iovec *iovp, \
+       SYS_SETTIMEOFDAY  = 122 // { int settimeofday(struct timeval *tv, \
+       SYS_FCHOWN        = 123 // { int fchown(int fd, int uid, int gid); }
+       SYS_FCHMOD        = 124 // { int fchmod(int fd, int mode); }
+       SYS_SETREUID      = 126 // { int setreuid(int ruid, int euid); }
+       SYS_SETREGID      = 127 // { int setregid(int rgid, int egid); }
+       SYS_RENAME        = 128 // { int rename(char *from, char *to); }
+       SYS_FLOCK         = 131 // { int flock(int fd, int how); }
+       SYS_MKFIFO        = 132 // { int mkfifo(char *path, int mode); }
+       SYS_SENDTO        = 133 // { int sendto(int s, caddr_t buf, size_t len, \
+       SYS_SHUTDOWN      = 134 // { int shutdown(int s, int how); }
+       SYS_SOCKETPAIR    = 135 // { int socketpair(int domain, int type, int protocol, \
+       SYS_MKDIR         = 136 // { int mkdir(char *path, int mode); }
+       SYS_RMDIR         = 137 // { int rmdir(char *path); }
+       SYS_UTIMES        = 138 // { int utimes(char *path, struct timeval *tptr); }
+       SYS_ADJTIME       = 140 // { int adjtime(struct timeval *delta, \
+       SYS_SETSID        = 147 // { int setsid(void); }
+       SYS_QUOTACTL      = 148 // { int quotactl(char *path, int cmd, int uid, \
+       SYS_STATFS        = 157 // { int statfs(char *path, struct statfs *buf); }
+       SYS_FSTATFS       = 158 // { int fstatfs(int fd, struct statfs *buf); }
+       SYS_GETFH         = 161 // { int getfh(char *fname, struct fhandle *fhp); }
+       SYS_GETDOMAINNAME = 162 // { int getdomainname(char *domainname, int len); }
+       SYS_SETDOMAINNAME = 163 // { int setdomainname(char *domainname, int len); }
+       SYS_UNAME         = 164 // { int uname(struct utsname *name); }
+       SYS_SYSARCH       = 165 // { int sysarch(int op, char *parms); }
+       SYS_RTPRIO        = 166 // { int rtprio(int function, pid_t pid, \
+       SYS_EXTPREAD      = 173 // { ssize_t extpread(int fd, void *buf, \
+       SYS_EXTPWRITE     = 174 // { ssize_t extpwrite(int fd, const void *buf, \
+       SYS_NTP_ADJTIME   = 176 // { int ntp_adjtime(struct timex *tp); }
+       SYS_SETGID        = 181 // { int setgid(gid_t gid); }
+       SYS_SETEGID       = 182 // { int setegid(gid_t egid); }
+       SYS_SETEUID       = 183 // { int seteuid(uid_t euid); }
+       SYS_PATHCONF      = 191 // { int pathconf(char *path, int name); }
+       SYS_FPATHCONF     = 192 // { int fpathconf(int fd, int name); }
+       SYS_GETRLIMIT     = 194 // { int getrlimit(u_int which, \
+       SYS_SETRLIMIT     = 195 // { int setrlimit(u_int which, \
+       SYS_MMAP          = 197 // { caddr_t mmap(caddr_t addr, size_t len, int prot, \
+       // SYS_NOSYS = 198;  // { int nosys(void); } __syscall __syscall_args int
+       SYS_LSEEK                  = 199 // { off_t lseek(int fd, int pad, off_t offset, \
+       SYS_TRUNCATE               = 200 // { int truncate(char *path, int pad, off_t length); }
+       SYS_FTRUNCATE              = 201 // { int ftruncate(int fd, int pad, off_t length); }
+       SYS___SYSCTL               = 202 // { int __sysctl(int *name, u_int namelen, void *old, \
+       SYS_MLOCK                  = 203 // { int mlock(const void *addr, size_t len); }
+       SYS_MUNLOCK                = 204 // { int munlock(const void *addr, size_t len); }
+       SYS_UNDELETE               = 205 // { int undelete(char *path); }
+       SYS_FUTIMES                = 206 // { int futimes(int fd, struct timeval *tptr); }
+       SYS_GETPGID                = 207 // { int getpgid(pid_t pid); }
+       SYS_POLL                   = 209 // { int poll(struct pollfd *fds, u_int nfds, \
+       SYS___SEMCTL               = 220 // { int __semctl(int semid, int semnum, int cmd, \
+       SYS_SEMGET                 = 221 // { int semget(key_t key, int nsems, int semflg); }
+       SYS_SEMOP                  = 222 // { int semop(int semid, struct sembuf *sops, \
+       SYS_MSGCTL                 = 224 // { int msgctl(int msqid, int cmd, \
+       SYS_MSGGET                 = 225 // { int msgget(key_t key, int msgflg); }
+       SYS_MSGSND                 = 226 // { int msgsnd(int msqid, void *msgp, size_t msgsz, \
+       SYS_MSGRCV                 = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, \
+       SYS_SHMAT                  = 228 // { caddr_t shmat(int shmid, const void *shmaddr, \
+       SYS_SHMCTL                 = 229 // { int shmctl(int shmid, int cmd, \
+       SYS_SHMDT                  = 230 // { int shmdt(const void *shmaddr); }
+       SYS_SHMGET                 = 231 // { int shmget(key_t key, size_t size, int shmflg); }
+       SYS_CLOCK_GETTIME          = 232 // { int clock_gettime(clockid_t clock_id, \
+       SYS_CLOCK_SETTIME          = 233 // { int clock_settime(clockid_t clock_id, \
+       SYS_CLOCK_GETRES           = 234 // { int clock_getres(clockid_t clock_id, \
+       SYS_NANOSLEEP              = 240 // { int nanosleep(const struct timespec *rqtp, \
+       SYS_MINHERIT               = 250 // { int minherit(void *addr, size_t len, int inherit); }
+       SYS_RFORK                  = 251 // { int rfork(int flags); }
+       SYS_OPENBSD_POLL           = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, \
+       SYS_ISSETUGID              = 253 // { int issetugid(void); }
+       SYS_LCHOWN                 = 254 // { int lchown(char *path, int uid, int gid); }
+       SYS_LCHMOD                 = 274 // { int lchmod(char *path, mode_t mode); }
+       SYS_LUTIMES                = 276 // { int lutimes(char *path, struct timeval *tptr); }
+       SYS_EXTPREADV              = 289 // { ssize_t extpreadv(int fd, struct iovec *iovp, \
+       SYS_EXTPWRITEV             = 290 // { ssize_t extpwritev(int fd, struct iovec *iovp,\
+       SYS_FHSTATFS               = 297 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }
+       SYS_FHOPEN                 = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }
+       SYS_MODNEXT                = 300 // { int modnext(int modid); }
+       SYS_MODSTAT                = 301 // { int modstat(int modid, struct module_stat* stat); }
+       SYS_MODFNEXT               = 302 // { int modfnext(int modid); }
+       SYS_MODFIND                = 303 // { int modfind(const char *name); }
+       SYS_KLDLOAD                = 304 // { int kldload(const char *file); }
+       SYS_KLDUNLOAD              = 305 // { int kldunload(int fileid); }
+       SYS_KLDFIND                = 306 // { int kldfind(const char *file); }
+       SYS_KLDNEXT                = 307 // { int kldnext(int fileid); }
+       SYS_KLDSTAT                = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); }
+       SYS_KLDFIRSTMOD            = 309 // { int kldfirstmod(int fileid); }
+       SYS_GETSID                 = 310 // { int getsid(pid_t pid); }
+       SYS_SETRESUID              = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }
+       SYS_SETRESGID              = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }
+       SYS_AIO_RETURN             = 314 // { int aio_return(struct aiocb *aiocbp); }
+       SYS_AIO_SUSPEND            = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }
+       SYS_AIO_CANCEL             = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }
+       SYS_AIO_ERROR              = 317 // { int aio_error(struct aiocb *aiocbp); }
+       SYS_AIO_READ               = 318 // { int aio_read(struct aiocb *aiocbp); }
+       SYS_AIO_WRITE              = 319 // { int aio_write(struct aiocb *aiocbp); }
+       SYS_LIO_LISTIO             = 320 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); }
+       SYS_YIELD                  = 321 // { int yield(void); }
+       SYS_MLOCKALL               = 324 // { int mlockall(int how); }
+       SYS_MUNLOCKALL             = 325 // { int munlockall(void); }
+       SYS___GETCWD               = 326 // { int __getcwd(u_char *buf, u_int buflen); }
+       SYS_SCHED_SETPARAM         = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }
+       SYS_SCHED_GETPARAM         = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }
+       SYS_SCHED_SETSCHEDULER     = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }
+       SYS_SCHED_GETSCHEDULER     = 330 // { int sched_getscheduler (pid_t pid); }
+       SYS_SCHED_YIELD            = 331 // { int sched_yield (void); }
+       SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); }
+       SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); }
+       SYS_SCHED_RR_GET_INTERVAL  = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }
+       SYS_UTRACE                 = 335 // { int utrace(const void *addr, size_t len); }
+       SYS_KLDSYM                 = 337 // { int kldsym(int fileid, int cmd, void *data); }
+       SYS_JAIL                   = 338 // { int jail(struct jail *jail); }
+       SYS_SIGPROCMASK            = 340 // { int sigprocmask(int how, const sigset_t *set, \
+       SYS_SIGSUSPEND             = 341 // { int sigsuspend(const sigset_t *sigmask); }
+       SYS_SIGACTION              = 342 // { int sigaction(int sig, const struct sigaction *act, \
+       SYS_SIGPENDING             = 343 // { int sigpending(sigset_t *set); }
+       SYS_SIGRETURN              = 344 // { int sigreturn(ucontext_t *sigcntxp); }
+       SYS_SIGTIMEDWAIT           = 345 // { int sigtimedwait(const sigset_t *set,\
+       SYS_SIGWAITINFO            = 346 // { int sigwaitinfo(const sigset_t *set,\
+       SYS___ACL_GET_FILE         = 347 // { int __acl_get_file(const char *path, \
+       SYS___ACL_SET_FILE         = 348 // { int __acl_set_file(const char *path, \
+       SYS___ACL_GET_FD           = 349 // { int __acl_get_fd(int filedes, acl_type_t type, \
+       SYS___ACL_SET_FD           = 350 // { int __acl_set_fd(int filedes, acl_type_t type, \
+       SYS___ACL_DELETE_FILE      = 351 // { int __acl_delete_file(const char *path, \
+       SYS___ACL_DELETE_FD        = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }
+       SYS___ACL_ACLCHECK_FILE    = 353 // { int __acl_aclcheck_file(const char *path, \
+       SYS___ACL_ACLCHECK_FD      = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, \
+       SYS_EXTATTRCTL             = 355 // { int extattrctl(const char *path, int cmd, \
+       SYS_EXTATTR_SET_FILE       = 356 // { int extattr_set_file(const char *path, \
+       SYS_EXTATTR_GET_FILE       = 357 // { int extattr_get_file(const char *path, \
+       SYS_EXTATTR_DELETE_FILE    = 358 // { int extattr_delete_file(const char *path, \
+       SYS_AIO_WAITCOMPLETE       = 359 // { int aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }
+       SYS_GETRESUID              = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }
+       SYS_GETRESGID              = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }
+       SYS_KQUEUE                 = 362 // { int kqueue(void); }
+       SYS_KEVENT                 = 363 // { int kevent(int fd, \
+       SYS_SCTP_PEELOFF           = 364 // { int sctp_peeloff(int sd, caddr_t name ); }
+       SYS_LCHFLAGS               = 391 // { int lchflags(char *path, int flags); }
+       SYS_UUIDGEN                = 392 // { int uuidgen(struct uuid *store, int count); }
+       SYS_SENDFILE               = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, \
+       SYS_VARSYM_SET             = 450 // { int varsym_set(int level, const char *name, const char *data); }
+       SYS_VARSYM_GET             = 451 // { int varsym_get(int mask, const char *wild, char *buf, int bufsize); }
+       SYS_VARSYM_LIST            = 452 // { int varsym_list(int level, char *buf, int maxsize, int *marker); }
+       SYS_EXEC_SYS_REGISTER      = 465 // { int exec_sys_register(void *entry); }
+       SYS_EXEC_SYS_UNREGISTER    = 466 // { int exec_sys_unregister(int id); }
+       SYS_SYS_CHECKPOINT         = 467 // { int sys_checkpoint(int type, int fd, pid_t pid, int retval); }
+       SYS_MOUNTCTL               = 468 // { int mountctl(const char *path, int op, int fd, const void *ctl, int ctllen, void *buf, int buflen); }
+       SYS_UMTX_SLEEP             = 469 // { int umtx_sleep(volatile const int *ptr, int value, int timeout); }
+       SYS_UMTX_WAKEUP            = 470 // { int umtx_wakeup(volatile const int *ptr, int count); }
+       SYS_JAIL_ATTACH            = 471 // { int jail_attach(int jid); }
+       SYS_SET_TLS_AREA           = 472 // { int set_tls_area(int which, struct tls_info *info, size_t infosize); }
+       SYS_GET_TLS_AREA           = 473 // { int get_tls_area(int which, struct tls_info *info, size_t infosize); }
+       SYS_CLOSEFROM              = 474 // { int closefrom(int fd); }
+       SYS_STAT                   = 475 // { int stat(const char *path, struct stat *ub); }
+       SYS_FSTAT                  = 476 // { int fstat(int fd, struct stat *sb); }
+       SYS_LSTAT                  = 477 // { int lstat(const char *path, struct stat *ub); }
+       SYS_FHSTAT                 = 478 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }
+       SYS_GETDIRENTRIES          = 479 // { int getdirentries(int fd, char *buf, u_int count, \
+       SYS_GETDENTS               = 480 // { int getdents(int fd, char *buf, size_t count); }
+       SYS_USCHED_SET             = 481 // { int usched_set(pid_t pid, int cmd, void *data, \
+       SYS_EXTACCEPT              = 482 // { int extaccept(int s, int flags, caddr_t name, int *anamelen); }
+       SYS_EXTCONNECT             = 483 // { int extconnect(int s, int flags, caddr_t name, int namelen); }
+       SYS_MCONTROL               = 485 // { int mcontrol(void *addr, size_t len, int behav, off_t value); }
+       SYS_VMSPACE_CREATE         = 486 // { int vmspace_create(void *id, int type, void *data); }
+       SYS_VMSPACE_DESTROY        = 487 // { int vmspace_destroy(void *id); }
+       SYS_VMSPACE_CTL            = 488 // { int vmspace_ctl(void *id, int cmd,                \
+       SYS_VMSPACE_MMAP           = 489 // { int vmspace_mmap(void *id, void *addr, size_t len, \
+       SYS_VMSPACE_MUNMAP         = 490 // { int vmspace_munmap(void *id, void *addr,  \
+       SYS_VMSPACE_MCONTROL       = 491 // { int vmspace_mcontrol(void *id, void *addr,        \
+       SYS_VMSPACE_PREAD          = 492 // { ssize_t vmspace_pread(void *id, void *buf, \
+       SYS_VMSPACE_PWRITE         = 493 // { ssize_t vmspace_pwrite(void *id, const void *buf, \
+       SYS_EXTEXIT                = 494 // { void extexit(int how, int status, void *addr); }
+       SYS_LWP_CREATE             = 495 // { int lwp_create(struct lwp_params *params); }
+       SYS_LWP_GETTID             = 496 // { lwpid_t lwp_gettid(void); }
+       SYS_LWP_KILL               = 497 // { int lwp_kill(pid_t pid, lwpid_t tid, int signum); }
+       SYS_LWP_RTPRIO             = 498 // { int lwp_rtprio(int function, pid_t pid, lwpid_t tid, struct rtprio *rtp); }
+       SYS_PSELECT                = 499 // { int pselect(int nd, fd_set *in, fd_set *ou, \
+       SYS_STATVFS                = 500 // { int statvfs(const char *path, struct statvfs *buf); }
+       SYS_FSTATVFS               = 501 // { int fstatvfs(int fd, struct statvfs *buf); }
+       SYS_FHSTATVFS              = 502 // { int fhstatvfs(const struct fhandle *u_fhp, struct statvfs *buf); }
+       SYS_GETVFSSTAT             = 503 // { int getvfsstat(struct statfs *buf,          \
+       SYS_OPENAT                 = 504 // { int openat(int fd, char *path, int flags, int mode); }
+       SYS_FSTATAT                = 505 // { int fstatat(int fd, char *path,   \
+       SYS_FCHMODAT               = 506 // { int fchmodat(int fd, char *path, int mode, \
+       SYS_FCHOWNAT               = 507 // { int fchownat(int fd, char *path, int uid, int gid, \
+       SYS_UNLINKAT               = 508 // { int unlinkat(int fd, char *path, int flags); }
+       SYS_FACCESSAT              = 509 // { int faccessat(int fd, char *path, int amode, \
+       SYS_MQ_OPEN                = 510 // { mqd_t mq_open(const char * name, int oflag, \
+       SYS_MQ_CLOSE               = 511 // { int mq_close(mqd_t mqdes); }
+       SYS_MQ_UNLINK              = 512 // { int mq_unlink(const char *name); }
+       SYS_MQ_GETATTR             = 513 // { int mq_getattr(mqd_t mqdes, \
+       SYS_MQ_SETATTR             = 514 // { int mq_setattr(mqd_t mqdes, \
+       SYS_MQ_NOTIFY              = 515 // { int mq_notify(mqd_t mqdes, \
+       SYS_MQ_SEND                = 516 // { int mq_send(mqd_t mqdes, const char *msg_ptr, \
+       SYS_MQ_RECEIVE             = 517 // { ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, \
+       SYS_MQ_TIMEDSEND           = 518 // { int mq_timedsend(mqd_t mqdes, \
+       SYS_MQ_TIMEDRECEIVE        = 519 // { ssize_t mq_timedreceive(mqd_t mqdes, \
+       SYS_IOPRIO_SET             = 520 // { int ioprio_set(int which, int who, int prio); }
+       SYS_IOPRIO_GET             = 521 // { int ioprio_get(int which, int who); }
+       SYS_CHROOT_KERNEL          = 522 // { int chroot_kernel(char *path); }
+       SYS_RENAMEAT               = 523 // { int renameat(int oldfd, char *old, int newfd, \
+       SYS_MKDIRAT                = 524 // { int mkdirat(int fd, char *path, mode_t mode); }
+       SYS_MKFIFOAT               = 525 // { int mkfifoat(int fd, char *path, mode_t mode); }
+       SYS_MKNODAT                = 526 // { int mknodat(int fd, char *path, mode_t mode, \
+       SYS_READLINKAT             = 527 // { int readlinkat(int fd, char *path, char *buf, \
+       SYS_SYMLINKAT              = 528 // { int symlinkat(char *path1, int fd, char *path2); }
+       SYS_SWAPOFF                = 529 // { int swapoff(char *name); }
+       SYS_VQUOTACTL              = 530 // { int vquotactl(const char *path, \
+       SYS_LINKAT                 = 531 // { int linkat(int fd1, char *path1, int fd2, \
+       SYS_EACCESS                = 532 // { int eaccess(char *path, int flags); }
+       SYS_LPATHCONF              = 533 // { int lpathconf(char *path, int name); }
+       SYS_VMM_GUEST_CTL          = 534 // { int vmm_guest_ctl(int op, struct vmm_guest_options *options); }
+       SYS_VMM_GUEST_SYNC_ADDR    = 535 // { int vmm_guest_sync_addr(long *dstaddr, long *srcaddr); }
+)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go
new file mode 100644 (file)
index 0000000..262a845
--- /dev/null
@@ -0,0 +1,351 @@
+// mksysnum_freebsd.pl
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build 386,freebsd
+
+package unix
+
+const (
+       // SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int
+       SYS_EXIT                     = 1   // { void sys_exit(int rval); } exit \
+       SYS_FORK                     = 2   // { int fork(void); }
+       SYS_READ                     = 3   // { ssize_t read(int fd, void *buf, \
+       SYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, \
+       SYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }
+       SYS_CLOSE                    = 6   // { int close(int fd); }
+       SYS_WAIT4                    = 7   // { int wait4(int pid, int *status, \
+       SYS_LINK                     = 9   // { int link(char *path, char *link); }
+       SYS_UNLINK                   = 10  // { int unlink(char *path); }
+       SYS_CHDIR                    = 12  // { int chdir(char *path); }
+       SYS_FCHDIR                   = 13  // { int fchdir(int fd); }
+       SYS_MKNOD                    = 14  // { int mknod(char *path, int mode, int dev); }
+       SYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }
+       SYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }
+       SYS_OBREAK                   = 17  // { int obreak(char *nsize); } break \
+       SYS_GETPID                   = 20  // { pid_t getpid(void); }
+       SYS_MOUNT                    = 21  // { int mount(char *type, char *path, \
+       SYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }
+       SYS_SETUID                   = 23  // { int setuid(uid_t uid); }
+       SYS_GETUID                   = 24  // { uid_t getuid(void); }
+       SYS_GETEUID                  = 25  // { uid_t geteuid(void); }
+       SYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, \
+       SYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, \
+       SYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, \
+       SYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, \
+       SYS_ACCEPT                   = 30  // { int accept(int s, \
+       SYS_GETPEERNAME              = 31  // { int getpeername(int fdes, \
+       SYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, \
+       SYS_ACCESS                   = 33  // { int access(char *path, int amode); }
+       SYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }
+       SYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }
+       SYS_SYNC                     = 36  // { int sync(void); }
+       SYS_KILL                     = 37  // { int kill(int pid, int signum); }
+       SYS_GETPPID                  = 39  // { pid_t getppid(void); }
+       SYS_DUP                      = 41  // { int dup(u_int fd); }
+       SYS_PIPE                     = 42  // { int pipe(void); }
+       SYS_GETEGID                  = 43  // { gid_t getegid(void); }
+       SYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, \
+       SYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, \
+       SYS_GETGID                   = 47  // { gid_t getgid(void); }
+       SYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int \
+       SYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }
+       SYS_ACCT                     = 51  // { int acct(char *path); }
+       SYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, \
+       SYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, \
+       SYS_REBOOT                   = 55  // { int reboot(int opt); }
+       SYS_REVOKE                   = 56  // { int revoke(char *path); }
+       SYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }
+       SYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, \
+       SYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, \
+       SYS_UMASK                    = 60  // { int umask(int newmask); } umask umask_args \
+       SYS_CHROOT                   = 61  // { int chroot(char *path); }
+       SYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, \
+       SYS_VFORK                    = 66  // { int vfork(void); }
+       SYS_SBRK                     = 69  // { int sbrk(int incr); }
+       SYS_SSTK                     = 70  // { int sstk(int incr); }
+       SYS_OVADVISE                 = 72  // { int ovadvise(int anom); } vadvise \
+       SYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }
+       SYS_MPROTECT                 = 74  // { int mprotect(const void *addr, size_t len, \
+       SYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, \
+       SYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, \
+       SYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, \
+       SYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, \
+       SYS_GETPGRP                  = 81  // { int getpgrp(void); }
+       SYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }
+       SYS_SETITIMER                = 83  // { int setitimer(u_int which, struct \
+       SYS_SWAPON                   = 85  // { int swapon(char *name); }
+       SYS_GETITIMER                = 86  // { int getitimer(u_int which, \
+       SYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }
+       SYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }
+       SYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }
+       SYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, \
+       SYS_FSYNC                    = 95  // { int fsync(int fd); }
+       SYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, \
+       SYS_SOCKET                   = 97  // { int socket(int domain, int type, \
+       SYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, \
+       SYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }
+       SYS_BIND                     = 104 // { int bind(int s, caddr_t name, \
+       SYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, \
+       SYS_LISTEN                   = 106 // { int listen(int s, int backlog); }
+       SYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, \
+       SYS_GETRUSAGE                = 117 // { int getrusage(int who, \
+       SYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, \
+       SYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, \
+       SYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, \
+       SYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, \
+       SYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }
+       SYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }
+       SYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }
+       SYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }
+       SYS_RENAME                   = 128 // { int rename(char *from, char *to); }
+       SYS_FLOCK                    = 131 // { int flock(int fd, int how); }
+       SYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }
+       SYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, \
+       SYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }
+       SYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, \
+       SYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }
+       SYS_RMDIR                    = 137 // { int rmdir(char *path); }
+       SYS_UTIMES                   = 138 // { int utimes(char *path, \
+       SYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, \
+       SYS_SETSID                   = 147 // { int setsid(void); }
+       SYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, \
+       SYS_LGETFH                   = 160 // { int lgetfh(char *fname, \
+       SYS_GETFH                    = 161 // { int getfh(char *fname, \
+       SYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }
+       SYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, \
+       SYS_FREEBSD6_PREAD           = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \
+       SYS_FREEBSD6_PWRITE          = 174 // { ssize_t freebsd6_pwrite(int fd, \
+       SYS_SETFIB                   = 175 // { int setfib(int fibnum); }
+       SYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }
+       SYS_SETGID                   = 181 // { int setgid(gid_t gid); }
+       SYS_SETEGID                  = 182 // { int setegid(gid_t egid); }
+       SYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }
+       SYS_STAT                     = 188 // { int stat(char *path, struct stat *ub); }
+       SYS_FSTAT                    = 189 // { int fstat(int fd, struct stat *sb); }
+       SYS_LSTAT                    = 190 // { int lstat(char *path, struct stat *ub); }
+       SYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }
+       SYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }
+       SYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, \
+       SYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, \
+       SYS_GETDIRENTRIES            = 196 // { int getdirentries(int fd, char *buf, \
+       SYS_FREEBSD6_MMAP            = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \
+       SYS_FREEBSD6_LSEEK           = 199 // { off_t freebsd6_lseek(int fd, int pad, \
+       SYS_FREEBSD6_TRUNCATE        = 200 // { int freebsd6_truncate(char *path, int pad, \
+       SYS_FREEBSD6_FTRUNCATE       = 201 // { int freebsd6_ftruncate(int fd, int pad, \
+       SYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, \
+       SYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }
+       SYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }
+       SYS_UNDELETE                 = 205 // { int undelete(char *path); }
+       SYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }
+       SYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }
+       SYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, \
+       SYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, \
+       SYS_CLOCK_SETTIME            = 233 // { int clock_settime( \
+       SYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, \
+       SYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, \
+       SYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }
+       SYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, \
+       SYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct \
+       SYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }
+       SYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, \
+       SYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }
+       SYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate( \
+       SYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate( \
+       SYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id,\
+       SYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }
+       SYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, \
+       SYS_RFORK                    = 251 // { int rfork(int flags); }
+       SYS_OPENBSD_POLL             = 252 // { int openbsd_poll(struct pollfd *fds, \
+       SYS_ISSETUGID                = 253 // { int issetugid(void); }
+       SYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }
+       SYS_GETDENTS                 = 272 // { int getdents(int fd, char *buf, \
+       SYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }
+       SYS_LUTIMES                  = 276 // { int lutimes(char *path, \
+       SYS_NSTAT                    = 278 // { int nstat(char *path, struct nstat *ub); }
+       SYS_NFSTAT                   = 279 // { int nfstat(int fd, struct nstat *sb); }
+       SYS_NLSTAT                   = 280 // { int nlstat(char *path, struct nstat *ub); }
+       SYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \
+       SYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \
+       SYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, \
+       SYS_FHSTAT                   = 299 // { int fhstat(const struct fhandle *u_fhp, \
+       SYS_MODNEXT                  = 300 // { int modnext(int modid); }
+       SYS_MODSTAT                  = 301 // { int modstat(int modid, \
+       SYS_MODFNEXT                 = 302 // { int modfnext(int modid); }
+       SYS_MODFIND                  = 303 // { int modfind(const char *name); }
+       SYS_KLDLOAD                  = 304 // { int kldload(const char *file); }
+       SYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }
+       SYS_KLDFIND                  = 306 // { int kldfind(const char *file); }
+       SYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }
+       SYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct \
+       SYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }
+       SYS_GETSID                   = 310 // { int getsid(pid_t pid); }
+       SYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, \
+       SYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, \
+       SYS_YIELD                    = 321 // { int yield(void); }
+       SYS_MLOCKALL                 = 324 // { int mlockall(int how); }
+       SYS_MUNLOCKALL               = 325 // { int munlockall(void); }
+       SYS___GETCWD                 = 326 // { int __getcwd(char *buf, u_int buflen); }
+       SYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, \
+       SYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct \
+       SYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int \
+       SYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }
+       SYS_SCHED_YIELD              = 331 // { int sched_yield (void); }
+       SYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }
+       SYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }
+       SYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, \
+       SYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }
+       SYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, \
+       SYS_JAIL                     = 338 // { int jail(struct jail *jail); }
+       SYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, \
+       SYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }
+       SYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }
+       SYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, \
+       SYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, \
+       SYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, \
+       SYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, \
+       SYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, \
+       SYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, \
+       SYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, \
+       SYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, \
+       SYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, \
+       SYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, \
+       SYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, \
+       SYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file( \
+       SYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file( \
+       SYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, \
+       SYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \
+       SYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \
+       SYS_KQUEUE                   = 362 // { int kqueue(void); }
+       SYS_KEVENT                   = 363 // { int kevent(int fd, \
+       SYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, \
+       SYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, \
+       SYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, \
+       SYS___SETUGID                = 374 // { int __setugid(int flag); }
+       SYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }
+       SYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, \
+       SYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }
+       SYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }
+       SYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, \
+       SYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, \
+       SYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, \
+       SYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, \
+       SYS_KENV                     = 390 // { int kenv(int what, const char *name, \
+       SYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, \
+       SYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, \
+       SYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, \
+       SYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, \
+       SYS_GETFSSTAT                = 395 // { int getfsstat(struct statfs *buf, \
+       SYS_STATFS                   = 396 // { int statfs(char *path, \
+       SYS_FSTATFS                  = 397 // { int fstatfs(int fd, struct statfs *buf); }
+       SYS_FHSTATFS                 = 398 // { int fhstatfs(const struct fhandle *u_fhp, \
+       SYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, \
+       SYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, \
+       SYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, \
+       SYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link( \
+       SYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link( \
+       SYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link( \
+       SYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, \
+       SYS_SIGACTION                = 416 // { int sigaction(int sig, \
+       SYS_SIGRETURN                = 417 // { int sigreturn( \
+       SYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }
+       SYS_SETCONTEXT               = 422 // { int setcontext( \
+       SYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, \
+       SYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }
+       SYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, \
+       SYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, \
+       SYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, \
+       SYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, \
+       SYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, \
+       SYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, \
+       SYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }
+       SYS_THR_SELF                 = 432 // { int thr_self(long *id); }
+       SYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }
+       SYS__UMTX_LOCK               = 434 // { int _umtx_lock(struct umtx *umtx); }
+       SYS__UMTX_UNLOCK             = 435 // { int _umtx_unlock(struct umtx *umtx); }
+       SYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }
+       SYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, \
+       SYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file( \
+       SYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link( \
+       SYS_THR_SUSPEND              = 442 // { int thr_suspend( \
+       SYS_THR_WAKE                 = 443 // { int thr_wake(long id); }
+       SYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }
+       SYS_AUDIT                    = 445 // { int audit(const void *record, \
+       SYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, \
+       SYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }
+       SYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }
+       SYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }
+       SYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }
+       SYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr( \
+       SYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr( \
+       SYS_AUDITCTL                 = 453 // { int auditctl(char *path); }
+       SYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, \
+       SYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, \
+       SYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }
+       SYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }
+       SYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }
+       SYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, \
+       SYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }
+       SYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, \
+       SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, \
+       SYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, \
+       SYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, \
+       SYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, \
+       SYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, \
+       SYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, \
+       SYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }
+       SYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }
+       SYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }
+       SYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, \
+       SYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }
+       SYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }
+       SYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \
+       SYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, \
+       SYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, \
+       SYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, \
+       SYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, \
+       SYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, \
+       SYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, \
+       SYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, \
+       SYS_FSTATAT                  = 493 // { int fstatat(int fd, char *path, \
+       SYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, \
+       SYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, \
+       SYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }
+       SYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }
+       SYS_MKNODAT                  = 498 // { int mknodat(int fd, char *path, mode_t mode, \
+       SYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, \
+       SYS_READLINKAT               = 500 // { int readlinkat(int fd, char *path, char *buf, \
+       SYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, \
+       SYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, \
+       SYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }
+       SYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }
+       SYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, \
+       SYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, \
+       SYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }
+       SYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }
+       SYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }
+       SYS_CAP_NEW                  = 514 // { int cap_new(int fd, uint64_t rights); }
+       SYS_CAP_GETRIGHTS            = 515 // { int cap_getrights(int fd, \
+       SYS_CAP_ENTER                = 516 // { int cap_enter(void); }
+       SYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }
+       SYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }
+       SYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }
+       SYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }
+       SYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, \
+       SYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, \
+       SYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }
+       SYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, \
+       SYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, \
+       SYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, \
+       SYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, \
+       SYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, \
+       SYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, \
+       SYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, \
+       SYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, \
+       SYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, \
+       SYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, \
+       SYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, \
+       SYS_ACCEPT4                  = 541 // { int accept4(int s, \
+       SYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }
+       SYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, \
+       SYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \
+)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go
new file mode 100644 (file)
index 0000000..57a60ea
--- /dev/null
@@ -0,0 +1,351 @@
+// mksysnum_freebsd.pl
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build amd64,freebsd
+
+package unix
+
+const (
+       // SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int
+       SYS_EXIT                     = 1   // { void sys_exit(int rval); } exit \
+       SYS_FORK                     = 2   // { int fork(void); }
+       SYS_READ                     = 3   // { ssize_t read(int fd, void *buf, \
+       SYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, \
+       SYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }
+       SYS_CLOSE                    = 6   // { int close(int fd); }
+       SYS_WAIT4                    = 7   // { int wait4(int pid, int *status, \
+       SYS_LINK                     = 9   // { int link(char *path, char *link); }
+       SYS_UNLINK                   = 10  // { int unlink(char *path); }
+       SYS_CHDIR                    = 12  // { int chdir(char *path); }
+       SYS_FCHDIR                   = 13  // { int fchdir(int fd); }
+       SYS_MKNOD                    = 14  // { int mknod(char *path, int mode, int dev); }
+       SYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }
+       SYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }
+       SYS_OBREAK                   = 17  // { int obreak(char *nsize); } break \
+       SYS_GETPID                   = 20  // { pid_t getpid(void); }
+       SYS_MOUNT                    = 21  // { int mount(char *type, char *path, \
+       SYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }
+       SYS_SETUID                   = 23  // { int setuid(uid_t uid); }
+       SYS_GETUID                   = 24  // { uid_t getuid(void); }
+       SYS_GETEUID                  = 25  // { uid_t geteuid(void); }
+       SYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, \
+       SYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, \
+       SYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, \
+       SYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, \
+       SYS_ACCEPT                   = 30  // { int accept(int s, \
+       SYS_GETPEERNAME              = 31  // { int getpeername(int fdes, \
+       SYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, \
+       SYS_ACCESS                   = 33  // { int access(char *path, int amode); }
+       SYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }
+       SYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }
+       SYS_SYNC                     = 36  // { int sync(void); }
+       SYS_KILL                     = 37  // { int kill(int pid, int signum); }
+       SYS_GETPPID                  = 39  // { pid_t getppid(void); }
+       SYS_DUP                      = 41  // { int dup(u_int fd); }
+       SYS_PIPE                     = 42  // { int pipe(void); }
+       SYS_GETEGID                  = 43  // { gid_t getegid(void); }
+       SYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, \
+       SYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, \
+       SYS_GETGID                   = 47  // { gid_t getgid(void); }
+       SYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int \
+       SYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }
+       SYS_ACCT                     = 51  // { int acct(char *path); }
+       SYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, \
+       SYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, \
+       SYS_REBOOT                   = 55  // { int reboot(int opt); }
+       SYS_REVOKE                   = 56  // { int revoke(char *path); }
+       SYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }
+       SYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, \
+       SYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, \
+       SYS_UMASK                    = 60  // { int umask(int newmask); } umask umask_args \
+       SYS_CHROOT                   = 61  // { int chroot(char *path); }
+       SYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, \
+       SYS_VFORK                    = 66  // { int vfork(void); }
+       SYS_SBRK                     = 69  // { int sbrk(int incr); }
+       SYS_SSTK                     = 70  // { int sstk(int incr); }
+       SYS_OVADVISE                 = 72  // { int ovadvise(int anom); } vadvise \
+       SYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }
+       SYS_MPROTECT                 = 74  // { int mprotect(const void *addr, size_t len, \
+       SYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, \
+       SYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, \
+       SYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, \
+       SYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, \
+       SYS_GETPGRP                  = 81  // { int getpgrp(void); }
+       SYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }
+       SYS_SETITIMER                = 83  // { int setitimer(u_int which, struct \
+       SYS_SWAPON                   = 85  // { int swapon(char *name); }
+       SYS_GETITIMER                = 86  // { int getitimer(u_int which, \
+       SYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }
+       SYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }
+       SYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }
+       SYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, \
+       SYS_FSYNC                    = 95  // { int fsync(int fd); }
+       SYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, \
+       SYS_SOCKET                   = 97  // { int socket(int domain, int type, \
+       SYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, \
+       SYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }
+       SYS_BIND                     = 104 // { int bind(int s, caddr_t name, \
+       SYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, \
+       SYS_LISTEN                   = 106 // { int listen(int s, int backlog); }
+       SYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, \
+       SYS_GETRUSAGE                = 117 // { int getrusage(int who, \
+       SYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, \
+       SYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, \
+       SYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, \
+       SYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, \
+       SYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }
+       SYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }
+       SYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }
+       SYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }
+       SYS_RENAME                   = 128 // { int rename(char *from, char *to); }
+       SYS_FLOCK                    = 131 // { int flock(int fd, int how); }
+       SYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }
+       SYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, \
+       SYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }
+       SYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, \
+       SYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }
+       SYS_RMDIR                    = 137 // { int rmdir(char *path); }
+       SYS_UTIMES                   = 138 // { int utimes(char *path, \
+       SYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, \
+       SYS_SETSID                   = 147 // { int setsid(void); }
+       SYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, \
+       SYS_LGETFH                   = 160 // { int lgetfh(char *fname, \
+       SYS_GETFH                    = 161 // { int getfh(char *fname, \
+       SYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }
+       SYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, \
+       SYS_FREEBSD6_PREAD           = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \
+       SYS_FREEBSD6_PWRITE          = 174 // { ssize_t freebsd6_pwrite(int fd, \
+       SYS_SETFIB                   = 175 // { int setfib(int fibnum); }
+       SYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }
+       SYS_SETGID                   = 181 // { int setgid(gid_t gid); }
+       SYS_SETEGID                  = 182 // { int setegid(gid_t egid); }
+       SYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }
+       SYS_STAT                     = 188 // { int stat(char *path, struct stat *ub); }
+       SYS_FSTAT                    = 189 // { int fstat(int fd, struct stat *sb); }
+       SYS_LSTAT                    = 190 // { int lstat(char *path, struct stat *ub); }
+       SYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }
+       SYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }
+       SYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, \
+       SYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, \
+       SYS_GETDIRENTRIES            = 196 // { int getdirentries(int fd, char *buf, \
+       SYS_FREEBSD6_MMAP            = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \
+       SYS_FREEBSD6_LSEEK           = 199 // { off_t freebsd6_lseek(int fd, int pad, \
+       SYS_FREEBSD6_TRUNCATE        = 200 // { int freebsd6_truncate(char *path, int pad, \
+       SYS_FREEBSD6_FTRUNCATE       = 201 // { int freebsd6_ftruncate(int fd, int pad, \
+       SYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, \
+       SYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }
+       SYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }
+       SYS_UNDELETE                 = 205 // { int undelete(char *path); }
+       SYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }
+       SYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }
+       SYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, \
+       SYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, \
+       SYS_CLOCK_SETTIME            = 233 // { int clock_settime( \
+       SYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, \
+       SYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, \
+       SYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }
+       SYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, \
+       SYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct \
+       SYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }
+       SYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, \
+       SYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }
+       SYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate( \
+       SYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate( \
+       SYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id,\
+       SYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }
+       SYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, \
+       SYS_RFORK                    = 251 // { int rfork(int flags); }
+       SYS_OPENBSD_POLL             = 252 // { int openbsd_poll(struct pollfd *fds, \
+       SYS_ISSETUGID                = 253 // { int issetugid(void); }
+       SYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }
+       SYS_GETDENTS                 = 272 // { int getdents(int fd, char *buf, \
+       SYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }
+       SYS_LUTIMES                  = 276 // { int lutimes(char *path, \
+       SYS_NSTAT                    = 278 // { int nstat(char *path, struct nstat *ub); }
+       SYS_NFSTAT                   = 279 // { int nfstat(int fd, struct nstat *sb); }
+       SYS_NLSTAT                   = 280 // { int nlstat(char *path, struct nstat *ub); }
+       SYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \
+       SYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \
+       SYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, \
+       SYS_FHSTAT                   = 299 // { int fhstat(const struct fhandle *u_fhp, \
+       SYS_MODNEXT                  = 300 // { int modnext(int modid); }
+       SYS_MODSTAT                  = 301 // { int modstat(int modid, \
+       SYS_MODFNEXT                 = 302 // { int modfnext(int modid); }
+       SYS_MODFIND                  = 303 // { int modfind(const char *name); }
+       SYS_KLDLOAD                  = 304 // { int kldload(const char *file); }
+       SYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }
+       SYS_KLDFIND                  = 306 // { int kldfind(const char *file); }
+       SYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }
+       SYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct \
+       SYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }
+       SYS_GETSID                   = 310 // { int getsid(pid_t pid); }
+       SYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, \
+       SYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, \
+       SYS_YIELD                    = 321 // { int yield(void); }
+       SYS_MLOCKALL                 = 324 // { int mlockall(int how); }
+       SYS_MUNLOCKALL               = 325 // { int munlockall(void); }
+       SYS___GETCWD                 = 326 // { int __getcwd(char *buf, u_int buflen); }
+       SYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, \
+       SYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct \
+       SYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int \
+       SYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }
+       SYS_SCHED_YIELD              = 331 // { int sched_yield (void); }
+       SYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }
+       SYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }
+       SYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, \
+       SYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }
+       SYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, \
+       SYS_JAIL                     = 338 // { int jail(struct jail *jail); }
+       SYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, \
+       SYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }
+       SYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }
+       SYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, \
+       SYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, \
+       SYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, \
+       SYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, \
+       SYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, \
+       SYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, \
+       SYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, \
+       SYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, \
+       SYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, \
+       SYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, \
+       SYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, \
+       SYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file( \
+       SYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file( \
+       SYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, \
+       SYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \
+       SYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \
+       SYS_KQUEUE                   = 362 // { int kqueue(void); }
+       SYS_KEVENT                   = 363 // { int kevent(int fd, \
+       SYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, \
+       SYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, \
+       SYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, \
+       SYS___SETUGID                = 374 // { int __setugid(int flag); }
+       SYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }
+       SYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, \
+       SYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }
+       SYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }
+       SYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, \
+       SYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, \
+       SYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, \
+       SYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, \
+       SYS_KENV                     = 390 // { int kenv(int what, const char *name, \
+       SYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, \
+       SYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, \
+       SYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, \
+       SYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, \
+       SYS_GETFSSTAT                = 395 // { int getfsstat(struct statfs *buf, \
+       SYS_STATFS                   = 396 // { int statfs(char *path, \
+       SYS_FSTATFS                  = 397 // { int fstatfs(int fd, struct statfs *buf); }
+       SYS_FHSTATFS                 = 398 // { int fhstatfs(const struct fhandle *u_fhp, \
+       SYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, \
+       SYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, \
+       SYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, \
+       SYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link( \
+       SYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link( \
+       SYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link( \
+       SYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, \
+       SYS_SIGACTION                = 416 // { int sigaction(int sig, \
+       SYS_SIGRETURN                = 417 // { int sigreturn( \
+       SYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }
+       SYS_SETCONTEXT               = 422 // { int setcontext( \
+       SYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, \
+       SYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }
+       SYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, \
+       SYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, \
+       SYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, \
+       SYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, \
+       SYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, \
+       SYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, \
+       SYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }
+       SYS_THR_SELF                 = 432 // { int thr_self(long *id); }
+       SYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }
+       SYS__UMTX_LOCK               = 434 // { int _umtx_lock(struct umtx *umtx); }
+       SYS__UMTX_UNLOCK             = 435 // { int _umtx_unlock(struct umtx *umtx); }
+       SYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }
+       SYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, \
+       SYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file( \
+       SYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link( \
+       SYS_THR_SUSPEND              = 442 // { int thr_suspend( \
+       SYS_THR_WAKE                 = 443 // { int thr_wake(long id); }
+       SYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }
+       SYS_AUDIT                    = 445 // { int audit(const void *record, \
+       SYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, \
+       SYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }
+       SYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }
+       SYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }
+       SYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }
+       SYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr( \
+       SYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr( \
+       SYS_AUDITCTL                 = 453 // { int auditctl(char *path); }
+       SYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, \
+       SYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, \
+       SYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }
+       SYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }
+       SYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }
+       SYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, \
+       SYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }
+       SYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, \
+       SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, \
+       SYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, \
+       SYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, \
+       SYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, \
+       SYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, \
+       SYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, \
+       SYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }
+       SYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }
+       SYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }
+       SYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, \
+       SYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }
+       SYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }
+       SYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \
+       SYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, \
+       SYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, \
+       SYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, \
+       SYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, \
+       SYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, \
+       SYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, \
+       SYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, \
+       SYS_FSTATAT                  = 493 // { int fstatat(int fd, char *path, \
+       SYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, \
+       SYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, \
+       SYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }
+       SYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }
+       SYS_MKNODAT                  = 498 // { int mknodat(int fd, char *path, mode_t mode, \
+       SYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, \
+       SYS_READLINKAT               = 500 // { int readlinkat(int fd, char *path, char *buf, \
+       SYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, \
+       SYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, \
+       SYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }
+       SYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }
+       SYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, \
+       SYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, \
+       SYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }
+       SYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }
+       SYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }
+       SYS_CAP_NEW                  = 514 // { int cap_new(int fd, uint64_t rights); }
+       SYS_CAP_GETRIGHTS            = 515 // { int cap_getrights(int fd, \
+       SYS_CAP_ENTER                = 516 // { int cap_enter(void); }
+       SYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }
+       SYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }
+       SYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }
+       SYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }
+       SYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, \
+       SYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, \
+       SYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }
+       SYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, \
+       SYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, \
+       SYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, \
+       SYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, \
+       SYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, \
+       SYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, \
+       SYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, \
+       SYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, \
+       SYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, \
+       SYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, \
+       SYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, \
+       SYS_ACCEPT4                  = 541 // { int accept4(int s, \
+       SYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }
+       SYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, \
+       SYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \
+)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go
new file mode 100644 (file)
index 0000000..206b9f6
--- /dev/null
@@ -0,0 +1,351 @@
+// mksysnum_freebsd.pl
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build arm,freebsd
+
+package unix
+
+const (
+       // SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int
+       SYS_EXIT                     = 1   // { void sys_exit(int rval); } exit \
+       SYS_FORK                     = 2   // { int fork(void); }
+       SYS_READ                     = 3   // { ssize_t read(int fd, void *buf, \
+       SYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, \
+       SYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }
+       SYS_CLOSE                    = 6   // { int close(int fd); }
+       SYS_WAIT4                    = 7   // { int wait4(int pid, int *status, \
+       SYS_LINK                     = 9   // { int link(char *path, char *link); }
+       SYS_UNLINK                   = 10  // { int unlink(char *path); }
+       SYS_CHDIR                    = 12  // { int chdir(char *path); }
+       SYS_FCHDIR                   = 13  // { int fchdir(int fd); }
+       SYS_MKNOD                    = 14  // { int mknod(char *path, int mode, int dev); }
+       SYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }
+       SYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }
+       SYS_OBREAK                   = 17  // { int obreak(char *nsize); } break \
+       SYS_GETPID                   = 20  // { pid_t getpid(void); }
+       SYS_MOUNT                    = 21  // { int mount(char *type, char *path, \
+       SYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }
+       SYS_SETUID                   = 23  // { int setuid(uid_t uid); }
+       SYS_GETUID                   = 24  // { uid_t getuid(void); }
+       SYS_GETEUID                  = 25  // { uid_t geteuid(void); }
+       SYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, \
+       SYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, \
+       SYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, \
+       SYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, \
+       SYS_ACCEPT                   = 30  // { int accept(int s, \
+       SYS_GETPEERNAME              = 31  // { int getpeername(int fdes, \
+       SYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, \
+       SYS_ACCESS                   = 33  // { int access(char *path, int amode); }
+       SYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }
+       SYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }
+       SYS_SYNC                     = 36  // { int sync(void); }
+       SYS_KILL                     = 37  // { int kill(int pid, int signum); }
+       SYS_GETPPID                  = 39  // { pid_t getppid(void); }
+       SYS_DUP                      = 41  // { int dup(u_int fd); }
+       SYS_PIPE                     = 42  // { int pipe(void); }
+       SYS_GETEGID                  = 43  // { gid_t getegid(void); }
+       SYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, \
+       SYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, \
+       SYS_GETGID                   = 47  // { gid_t getgid(void); }
+       SYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int \
+       SYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }
+       SYS_ACCT                     = 51  // { int acct(char *path); }
+       SYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, \
+       SYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, \
+       SYS_REBOOT                   = 55  // { int reboot(int opt); }
+       SYS_REVOKE                   = 56  // { int revoke(char *path); }
+       SYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }
+       SYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, \
+       SYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, \
+       SYS_UMASK                    = 60  // { int umask(int newmask); } umask umask_args \
+       SYS_CHROOT                   = 61  // { int chroot(char *path); }
+       SYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, \
+       SYS_VFORK                    = 66  // { int vfork(void); }
+       SYS_SBRK                     = 69  // { int sbrk(int incr); }
+       SYS_SSTK                     = 70  // { int sstk(int incr); }
+       SYS_OVADVISE                 = 72  // { int ovadvise(int anom); } vadvise \
+       SYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }
+       SYS_MPROTECT                 = 74  // { int mprotect(const void *addr, size_t len, \
+       SYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, \
+       SYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, \
+       SYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, \
+       SYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, \
+       SYS_GETPGRP                  = 81  // { int getpgrp(void); }
+       SYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }
+       SYS_SETITIMER                = 83  // { int setitimer(u_int which, struct \
+       SYS_SWAPON                   = 85  // { int swapon(char *name); }
+       SYS_GETITIMER                = 86  // { int getitimer(u_int which, \
+       SYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }
+       SYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }
+       SYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }
+       SYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, \
+       SYS_FSYNC                    = 95  // { int fsync(int fd); }
+       SYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, \
+       SYS_SOCKET                   = 97  // { int socket(int domain, int type, \
+       SYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, \
+       SYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }
+       SYS_BIND                     = 104 // { int bind(int s, caddr_t name, \
+       SYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, \
+       SYS_LISTEN                   = 106 // { int listen(int s, int backlog); }
+       SYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, \
+       SYS_GETRUSAGE                = 117 // { int getrusage(int who, \
+       SYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, \
+       SYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, \
+       SYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, \
+       SYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, \
+       SYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }
+       SYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }
+       SYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }
+       SYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }
+       SYS_RENAME                   = 128 // { int rename(char *from, char *to); }
+       SYS_FLOCK                    = 131 // { int flock(int fd, int how); }
+       SYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }
+       SYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, \
+       SYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }
+       SYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, \
+       SYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }
+       SYS_RMDIR                    = 137 // { int rmdir(char *path); }
+       SYS_UTIMES                   = 138 // { int utimes(char *path, \
+       SYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, \
+       SYS_SETSID                   = 147 // { int setsid(void); }
+       SYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, \
+       SYS_LGETFH                   = 160 // { int lgetfh(char *fname, \
+       SYS_GETFH                    = 161 // { int getfh(char *fname, \
+       SYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }
+       SYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, \
+       SYS_FREEBSD6_PREAD           = 173 // { ssize_t freebsd6_pread(int fd, void *buf, \
+       SYS_FREEBSD6_PWRITE          = 174 // { ssize_t freebsd6_pwrite(int fd, \
+       SYS_SETFIB                   = 175 // { int setfib(int fibnum); }
+       SYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }
+       SYS_SETGID                   = 181 // { int setgid(gid_t gid); }
+       SYS_SETEGID                  = 182 // { int setegid(gid_t egid); }
+       SYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }
+       SYS_STAT                     = 188 // { int stat(char *path, struct stat *ub); }
+       SYS_FSTAT                    = 189 // { int fstat(int fd, struct stat *sb); }
+       SYS_LSTAT                    = 190 // { int lstat(char *path, struct stat *ub); }
+       SYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }
+       SYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }
+       SYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, \
+       SYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, \
+       SYS_GETDIRENTRIES            = 196 // { int getdirentries(int fd, char *buf, \
+       SYS_FREEBSD6_MMAP            = 197 // { caddr_t freebsd6_mmap(caddr_t addr, \
+       SYS_FREEBSD6_LSEEK           = 199 // { off_t freebsd6_lseek(int fd, int pad, \
+       SYS_FREEBSD6_TRUNCATE        = 200 // { int freebsd6_truncate(char *path, int pad, \
+       SYS_FREEBSD6_FTRUNCATE       = 201 // { int freebsd6_ftruncate(int fd, int pad, \
+       SYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, \
+       SYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }
+       SYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }
+       SYS_UNDELETE                 = 205 // { int undelete(char *path); }
+       SYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }
+       SYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }
+       SYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, \
+       SYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, \
+       SYS_CLOCK_SETTIME            = 233 // { int clock_settime( \
+       SYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, \
+       SYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, \
+       SYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }
+       SYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, \
+       SYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct \
+       SYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }
+       SYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, \
+       SYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }
+       SYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate( \
+       SYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate( \
+       SYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id,\
+       SYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }
+       SYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, \
+       SYS_RFORK                    = 251 // { int rfork(int flags); }
+       SYS_OPENBSD_POLL             = 252 // { int openbsd_poll(struct pollfd *fds, \
+       SYS_ISSETUGID                = 253 // { int issetugid(void); }
+       SYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }
+       SYS_GETDENTS                 = 272 // { int getdents(int fd, char *buf, \
+       SYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }
+       SYS_LUTIMES                  = 276 // { int lutimes(char *path, \
+       SYS_NSTAT                    = 278 // { int nstat(char *path, struct nstat *ub); }
+       SYS_NFSTAT                   = 279 // { int nfstat(int fd, struct nstat *sb); }
+       SYS_NLSTAT                   = 280 // { int nlstat(char *path, struct nstat *ub); }
+       SYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \
+       SYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \
+       SYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, \
+       SYS_FHSTAT                   = 299 // { int fhstat(const struct fhandle *u_fhp, \
+       SYS_MODNEXT                  = 300 // { int modnext(int modid); }
+       SYS_MODSTAT                  = 301 // { int modstat(int modid, \
+       SYS_MODFNEXT                 = 302 // { int modfnext(int modid); }
+       SYS_MODFIND                  = 303 // { int modfind(const char *name); }
+       SYS_KLDLOAD                  = 304 // { int kldload(const char *file); }
+       SYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }
+       SYS_KLDFIND                  = 306 // { int kldfind(const char *file); }
+       SYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }
+       SYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct \
+       SYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }
+       SYS_GETSID                   = 310 // { int getsid(pid_t pid); }
+       SYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, \
+       SYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, \
+       SYS_YIELD                    = 321 // { int yield(void); }
+       SYS_MLOCKALL                 = 324 // { int mlockall(int how); }
+       SYS_MUNLOCKALL               = 325 // { int munlockall(void); }
+       SYS___GETCWD                 = 326 // { int __getcwd(char *buf, u_int buflen); }
+       SYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, \
+       SYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct \
+       SYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int \
+       SYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }
+       SYS_SCHED_YIELD              = 331 // { int sched_yield (void); }
+       SYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }
+       SYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }
+       SYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, \
+       SYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }
+       SYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, \
+       SYS_JAIL                     = 338 // { int jail(struct jail *jail); }
+       SYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, \
+       SYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }
+       SYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }
+       SYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, \
+       SYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, \
+       SYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, \
+       SYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, \
+       SYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, \
+       SYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, \
+       SYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, \
+       SYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, \
+       SYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, \
+       SYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, \
+       SYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, \
+       SYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file( \
+       SYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file( \
+       SYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, \
+       SYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \
+       SYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \
+       SYS_KQUEUE                   = 362 // { int kqueue(void); }
+       SYS_KEVENT                   = 363 // { int kevent(int fd, \
+       SYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, \
+       SYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, \
+       SYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, \
+       SYS___SETUGID                = 374 // { int __setugid(int flag); }
+       SYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }
+       SYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, \
+       SYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }
+       SYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }
+       SYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, \
+       SYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, \
+       SYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, \
+       SYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, \
+       SYS_KENV                     = 390 // { int kenv(int what, const char *name, \
+       SYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, \
+       SYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, \
+       SYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, \
+       SYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, \
+       SYS_GETFSSTAT                = 395 // { int getfsstat(struct statfs *buf, \
+       SYS_STATFS                   = 396 // { int statfs(char *path, \
+       SYS_FSTATFS                  = 397 // { int fstatfs(int fd, struct statfs *buf); }
+       SYS_FHSTATFS                 = 398 // { int fhstatfs(const struct fhandle *u_fhp, \
+       SYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, \
+       SYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, \
+       SYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, \
+       SYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link( \
+       SYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link( \
+       SYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link( \
+       SYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, \
+       SYS_SIGACTION                = 416 // { int sigaction(int sig, \
+       SYS_SIGRETURN                = 417 // { int sigreturn( \
+       SYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }
+       SYS_SETCONTEXT               = 422 // { int setcontext( \
+       SYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, \
+       SYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }
+       SYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, \
+       SYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, \
+       SYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, \
+       SYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, \
+       SYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, \
+       SYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, \
+       SYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }
+       SYS_THR_SELF                 = 432 // { int thr_self(long *id); }
+       SYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }
+       SYS__UMTX_LOCK               = 434 // { int _umtx_lock(struct umtx *umtx); }
+       SYS__UMTX_UNLOCK             = 435 // { int _umtx_unlock(struct umtx *umtx); }
+       SYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }
+       SYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, \
+       SYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file( \
+       SYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link( \
+       SYS_THR_SUSPEND              = 442 // { int thr_suspend( \
+       SYS_THR_WAKE                 = 443 // { int thr_wake(long id); }
+       SYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }
+       SYS_AUDIT                    = 445 // { int audit(const void *record, \
+       SYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, \
+       SYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }
+       SYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }
+       SYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }
+       SYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }
+       SYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr( \
+       SYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr( \
+       SYS_AUDITCTL                 = 453 // { int auditctl(char *path); }
+       SYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, \
+       SYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, \
+       SYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }
+       SYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }
+       SYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }
+       SYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, \
+       SYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }
+       SYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, \
+       SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, \
+       SYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, \
+       SYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, \
+       SYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, \
+       SYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, \
+       SYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, \
+       SYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }
+       SYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }
+       SYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }
+       SYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, \
+       SYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }
+       SYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }
+       SYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \
+       SYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, \
+       SYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, \
+       SYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, \
+       SYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, \
+       SYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, \
+       SYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, \
+       SYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, \
+       SYS_FSTATAT                  = 493 // { int fstatat(int fd, char *path, \
+       SYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, \
+       SYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, \
+       SYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }
+       SYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }
+       SYS_MKNODAT                  = 498 // { int mknodat(int fd, char *path, mode_t mode, \
+       SYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, \
+       SYS_READLINKAT               = 500 // { int readlinkat(int fd, char *path, char *buf, \
+       SYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, \
+       SYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, \
+       SYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }
+       SYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }
+       SYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, \
+       SYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, \
+       SYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }
+       SYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }
+       SYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }
+       SYS_CAP_NEW                  = 514 // { int cap_new(int fd, uint64_t rights); }
+       SYS_CAP_GETRIGHTS            = 515 // { int cap_getrights(int fd, \
+       SYS_CAP_ENTER                = 516 // { int cap_enter(void); }
+       SYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }
+       SYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }
+       SYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }
+       SYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }
+       SYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, \
+       SYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, \
+       SYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }
+       SYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, \
+       SYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, \
+       SYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, \
+       SYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, \
+       SYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, \
+       SYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, \
+       SYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, \
+       SYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, \
+       SYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, \
+       SYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, \
+       SYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, \
+       SYS_ACCEPT4                  = 541 // { int accept4(int s, \
+       SYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }
+       SYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, \
+       SYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \
+)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go
new file mode 100644 (file)
index 0000000..ba952c6
--- /dev/null
@@ -0,0 +1,355 @@
+// mksysnum_linux.pl /usr/include/asm/unistd_32.h
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build 386,linux
+
+package unix
+
+const (
+       SYS_RESTART_SYSCALL        = 0
+       SYS_EXIT                   = 1
+       SYS_FORK                   = 2
+       SYS_READ                   = 3
+       SYS_WRITE                  = 4
+       SYS_OPEN                   = 5
+       SYS_CLOSE                  = 6
+       SYS_WAITPID                = 7
+       SYS_CREAT                  = 8
+       SYS_LINK                   = 9
+       SYS_UNLINK                 = 10
+       SYS_EXECVE                 = 11
+       SYS_CHDIR                  = 12
+       SYS_TIME                   = 13
+       SYS_MKNOD                  = 14
+       SYS_CHMOD                  = 15
+       SYS_LCHOWN                 = 16
+       SYS_BREAK                  = 17
+       SYS_OLDSTAT                = 18
+       SYS_LSEEK                  = 19
+       SYS_GETPID                 = 20
+       SYS_MOUNT                  = 21
+       SYS_UMOUNT                 = 22
+       SYS_SETUID                 = 23
+       SYS_GETUID                 = 24
+       SYS_STIME                  = 25
+       SYS_PTRACE                 = 26
+       SYS_ALARM                  = 27
+       SYS_OLDFSTAT               = 28
+       SYS_PAUSE                  = 29
+       SYS_UTIME                  = 30
+       SYS_STTY                   = 31
+       SYS_GTTY                   = 32
+       SYS_ACCESS                 = 33
+       SYS_NICE                   = 34
+       SYS_FTIME                  = 35
+       SYS_SYNC                   = 36
+       SYS_KILL                   = 37
+       SYS_RENAME                 = 38
+       SYS_MKDIR                  = 39
+       SYS_RMDIR                  = 40
+       SYS_DUP                    = 41
+       SYS_PIPE                   = 42
+       SYS_TIMES                  = 43
+       SYS_PROF                   = 44
+       SYS_BRK                    = 45
+       SYS_SETGID                 = 46
+       SYS_GETGID                 = 47
+       SYS_SIGNAL                 = 48
+       SYS_GETEUID                = 49
+       SYS_GETEGID                = 50
+       SYS_ACCT                   = 51
+       SYS_UMOUNT2                = 52
+       SYS_LOCK                   = 53
+       SYS_IOCTL                  = 54
+       SYS_FCNTL                  = 55
+       SYS_MPX                    = 56
+       SYS_SETPGID                = 57
+       SYS_ULIMIT                 = 58
+       SYS_OLDOLDUNAME            = 59
+       SYS_UMASK                  = 60
+       SYS_CHROOT                 = 61
+       SYS_USTAT                  = 62
+       SYS_DUP2                   = 63
+       SYS_GETPPID                = 64
+       SYS_GETPGRP                = 65
+       SYS_SETSID                 = 66
+       SYS_SIGACTION              = 67
+       SYS_SGETMASK               = 68
+       SYS_SSETMASK               = 69
+       SYS_SETREUID               = 70
+       SYS_SETREGID               = 71
+       SYS_SIGSUSPEND             = 72
+       SYS_SIGPENDING             = 73
+       SYS_SETHOSTNAME            = 74
+       SYS_SETRLIMIT              = 75
+       SYS_GETRLIMIT              = 76
+       SYS_GETRUSAGE              = 77
+       SYS_GETTIMEOFDAY           = 78
+       SYS_SETTIMEOFDAY           = 79
+       SYS_GETGROUPS              = 80
+       SYS_SETGROUPS              = 81
+       SYS_SELECT                 = 82
+       SYS_SYMLINK                = 83
+       SYS_OLDLSTAT               = 84
+       SYS_READLINK               = 85
+       SYS_USELIB                 = 86
+       SYS_SWAPON                 = 87
+       SYS_REBOOT                 = 88
+       SYS_READDIR                = 89
+       SYS_MMAP                   = 90
+       SYS_MUNMAP                 = 91
+       SYS_TRUNCATE               = 92
+       SYS_FTRUNCATE              = 93
+       SYS_FCHMOD                 = 94
+       SYS_FCHOWN                 = 95
+       SYS_GETPRIORITY            = 96
+       SYS_SETPRIORITY            = 97
+       SYS_PROFIL                 = 98
+       SYS_STATFS                 = 99
+       SYS_FSTATFS                = 100
+       SYS_IOPERM                 = 101
+       SYS_SOCKETCALL             = 102
+       SYS_SYSLOG                 = 103
+       SYS_SETITIMER              = 104
+       SYS_GETITIMER              = 105
+       SYS_STAT                   = 106
+       SYS_LSTAT                  = 107
+       SYS_FSTAT                  = 108
+       SYS_OLDUNAME               = 109
+       SYS_IOPL                   = 110
+       SYS_VHANGUP                = 111
+       SYS_IDLE                   = 112
+       SYS_VM86OLD                = 113
+       SYS_WAIT4                  = 114
+       SYS_SWAPOFF                = 115
+       SYS_SYSINFO                = 116
+       SYS_IPC                    = 117
+       SYS_FSYNC                  = 118
+       SYS_SIGRETURN              = 119
+       SYS_CLONE                  = 120
+       SYS_SETDOMAINNAME          = 121
+       SYS_UNAME                  = 122
+       SYS_MODIFY_LDT             = 123
+       SYS_ADJTIMEX               = 124
+       SYS_MPROTECT               = 125
+       SYS_SIGPROCMASK            = 126
+       SYS_CREATE_MODULE          = 127
+       SYS_INIT_MODULE            = 128
+       SYS_DELETE_MODULE          = 129
+       SYS_GET_KERNEL_SYMS        = 130
+       SYS_QUOTACTL               = 131
+       SYS_GETPGID                = 132
+       SYS_FCHDIR                 = 133
+       SYS_BDFLUSH                = 134
+       SYS_SYSFS                  = 135
+       SYS_PERSONALITY            = 136
+       SYS_AFS_SYSCALL            = 137
+       SYS_SETFSUID               = 138
+       SYS_SETFSGID               = 139
+       SYS__LLSEEK                = 140
+       SYS_GETDENTS               = 141
+       SYS__NEWSELECT             = 142
+       SYS_FLOCK                  = 143
+       SYS_MSYNC                  = 144
+       SYS_READV                  = 145
+       SYS_WRITEV                 = 146
+       SYS_GETSID                 = 147
+       SYS_FDATASYNC              = 148
+       SYS__SYSCTL                = 149
+       SYS_MLOCK                  = 150
+       SYS_MUNLOCK                = 151
+       SYS_MLOCKALL               = 152
+       SYS_MUNLOCKALL             = 153
+       SYS_SCHED_SETPARAM         = 154
+       SYS_SCHED_GETPARAM         = 155
+       SYS_SCHED_SETSCHEDULER     = 156
+       SYS_SCHED_GETSCHEDULER     = 157
+       SYS_SCHED_YIELD            = 158
+       SYS_SCHED_GET_PRIORITY_MAX = 159
+       SYS_SCHED_GET_PRIORITY_MIN = 160
+       SYS_SCHED_RR_GET_INTERVAL  = 161
+       SYS_NANOSLEEP              = 162
+       SYS_MREMAP                 = 163
+       SYS_SETRESUID              = 164
+       SYS_GETRESUID              = 165
+       SYS_VM86                   = 166
+       SYS_QUERY_MODULE           = 167
+       SYS_POLL                   = 168
+       SYS_NFSSERVCTL             = 169
+       SYS_SETRESGID              = 170
+       SYS_GETRESGID              = 171
+       SYS_PRCTL                  = 172
+       SYS_RT_SIGRETURN           = 173
+       SYS_RT_SIGACTION           = 174
+       SYS_RT_SIGPROCMASK         = 175
+       SYS_RT_SIGPENDING          = 176
+       SYS_RT_SIGTIMEDWAIT        = 177
+       SYS_RT_SIGQUEUEINFO        = 178
+       SYS_RT_SIGSUSPEND          = 179
+       SYS_PREAD64                = 180
+       SYS_PWRITE64               = 181
+       SYS_CHOWN                  = 182
+       SYS_GETCWD                 = 183
+       SYS_CAPGET                 = 184
+       SYS_CAPSET                 = 185
+       SYS_SIGALTSTACK            = 186
+       SYS_SENDFILE               = 187
+       SYS_GETPMSG                = 188
+       SYS_PUTPMSG                = 189
+       SYS_VFORK                  = 190
+       SYS_UGETRLIMIT             = 191
+       SYS_MMAP2                  = 192
+       SYS_TRUNCATE64             = 193
+       SYS_FTRUNCATE64            = 194
+       SYS_STAT64                 = 195
+       SYS_LSTAT64                = 196
+       SYS_FSTAT64                = 197
+       SYS_LCHOWN32               = 198
+       SYS_GETUID32               = 199
+       SYS_GETGID32               = 200
+       SYS_GETEUID32              = 201
+       SYS_GETEGID32              = 202
+       SYS_SETREUID32             = 203
+       SYS_SETREGID32             = 204
+       SYS_GETGROUPS32            = 205
+       SYS_SETGROUPS32            = 206
+       SYS_FCHOWN32               = 207
+       SYS_SETRESUID32            = 208
+       SYS_GETRESUID32            = 209
+       SYS_SETRESGID32            = 210
+       SYS_GETRESGID32            = 211
+       SYS_CHOWN32                = 212
+       SYS_SETUID32               = 213
+       SYS_SETGID32               = 214
+       SYS_SETFSUID32             = 215
+       SYS_SETFSGID32             = 216
+       SYS_PIVOT_ROOT             = 217
+       SYS_MINCORE                = 218
+       SYS_MADVISE                = 219
+       SYS_MADVISE1               = 219
+       SYS_GETDENTS64             = 220
+       SYS_FCNTL64                = 221
+       SYS_GETTID                 = 224
+       SYS_READAHEAD              = 225
+       SYS_SETXATTR               = 226
+       SYS_LSETXATTR              = 227
+       SYS_FSETXATTR              = 228
+       SYS_GETXATTR               = 229
+       SYS_LGETXATTR              = 230
+       SYS_FGETXATTR              = 231
+       SYS_LISTXATTR              = 232
+       SYS_LLISTXATTR             = 233
+       SYS_FLISTXATTR             = 234
+       SYS_REMOVEXATTR            = 235
+       SYS_LREMOVEXATTR           = 236
+       SYS_FREMOVEXATTR           = 237
+       SYS_TKILL                  = 238
+       SYS_SENDFILE64             = 239
+       SYS_FUTEX                  = 240
+       SYS_SCHED_SETAFFINITY      = 241
+       SYS_SCHED_GETAFFINITY      = 242
+       SYS_SET_THREAD_AREA        = 243
+       SYS_GET_THREAD_AREA        = 244
+       SYS_IO_SETUP               = 245
+       SYS_IO_DESTROY             = 246
+       SYS_IO_GETEVENTS           = 247
+       SYS_IO_SUBMIT              = 248
+       SYS_IO_CANCEL              = 249
+       SYS_FADVISE64              = 250
+       SYS_EXIT_GROUP             = 252
+       SYS_LOOKUP_DCOOKIE         = 253
+       SYS_EPOLL_CREATE           = 254
+       SYS_EPOLL_CTL              = 255
+       SYS_EPOLL_WAIT             = 256
+       SYS_REMAP_FILE_PAGES       = 257
+       SYS_SET_TID_ADDRESS        = 258
+       SYS_TIMER_CREATE           = 259
+       SYS_TIMER_SETTIME          = 260
+       SYS_TIMER_GETTIME          = 261
+       SYS_TIMER_GETOVERRUN       = 262
+       SYS_TIMER_DELETE           = 263
+       SYS_CLOCK_SETTIME          = 264
+       SYS_CLOCK_GETTIME          = 265
+       SYS_CLOCK_GETRES           = 266
+       SYS_CLOCK_NANOSLEEP        = 267
+       SYS_STATFS64               = 268
+       SYS_FSTATFS64              = 269
+       SYS_TGKILL                 = 270
+       SYS_UTIMES                 = 271
+       SYS_FADVISE64_64           = 272
+       SYS_VSERVER                = 273
+       SYS_MBIND                  = 274
+       SYS_GET_MEMPOLICY          = 275
+       SYS_SET_MEMPOLICY          = 276
+       SYS_MQ_OPEN                = 277
+       SYS_MQ_UNLINK              = 278
+       SYS_MQ_TIMEDSEND           = 279
+       SYS_MQ_TIMEDRECEIVE        = 280
+       SYS_MQ_NOTIFY              = 281
+       SYS_MQ_GETSETATTR          = 282
+       SYS_KEXEC_LOAD             = 283
+       SYS_WAITID                 = 284
+       SYS_ADD_KEY                = 286
+       SYS_REQUEST_KEY            = 287
+       SYS_KEYCTL                 = 288
+       SYS_IOPRIO_SET             = 289
+       SYS_IOPRIO_GET             = 290
+       SYS_INOTIFY_INIT           = 291
+       SYS_INOTIFY_ADD_WATCH      = 292
+       SYS_INOTIFY_RM_WATCH       = 293
+       SYS_MIGRATE_PAGES          = 294
+       SYS_OPENAT                 = 295
+       SYS_MKDIRAT                = 296
+       SYS_MKNODAT                = 297
+       SYS_FCHOWNAT               = 298
+       SYS_FUTIMESAT              = 299
+       SYS_FSTATAT64              = 300
+       SYS_UNLINKAT               = 301
+       SYS_RENAMEAT               = 302
+       SYS_LINKAT                 = 303
+       SYS_SYMLINKAT              = 304
+       SYS_READLINKAT             = 305
+       SYS_FCHMODAT               = 306
+       SYS_FACCESSAT              = 307
+       SYS_PSELECT6               = 308
+       SYS_PPOLL                  = 309
+       SYS_UNSHARE                = 310
+       SYS_SET_ROBUST_LIST        = 311
+       SYS_GET_ROBUST_LIST        = 312
+       SYS_SPLICE                 = 313
+       SYS_SYNC_FILE_RANGE        = 314
+       SYS_TEE                    = 315
+       SYS_VMSPLICE               = 316
+       SYS_MOVE_PAGES             = 317
+       SYS_GETCPU                 = 318
+       SYS_EPOLL_PWAIT            = 319
+       SYS_UTIMENSAT              = 320
+       SYS_SIGNALFD               = 321
+       SYS_TIMERFD_CREATE         = 322
+       SYS_EVENTFD                = 323
+       SYS_FALLOCATE              = 324
+       SYS_TIMERFD_SETTIME        = 325
+       SYS_TIMERFD_GETTIME        = 326
+       SYS_SIGNALFD4              = 327
+       SYS_EVENTFD2               = 328
+       SYS_EPOLL_CREATE1          = 329
+       SYS_DUP3                   = 330
+       SYS_PIPE2                  = 331
+       SYS_INOTIFY_INIT1          = 332
+       SYS_PREADV                 = 333
+       SYS_PWRITEV                = 334
+       SYS_RT_TGSIGQUEUEINFO      = 335
+       SYS_PERF_EVENT_OPEN        = 336
+       SYS_RECVMMSG               = 337
+       SYS_FANOTIFY_INIT          = 338
+       SYS_FANOTIFY_MARK          = 339
+       SYS_PRLIMIT64              = 340
+       SYS_NAME_TO_HANDLE_AT      = 341
+       SYS_OPEN_BY_HANDLE_AT      = 342
+       SYS_CLOCK_ADJTIME          = 343
+       SYS_SYNCFS                 = 344
+       SYS_SENDMMSG               = 345
+       SYS_SETNS                  = 346
+       SYS_PROCESS_VM_READV       = 347
+       SYS_PROCESS_VM_WRITEV      = 348
+)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go
new file mode 100644 (file)
index 0000000..ddac31f
--- /dev/null
@@ -0,0 +1,321 @@
+// mksysnum_linux.pl /usr/include/asm/unistd_64.h
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build amd64,linux
+
+package unix
+
+const (
+       SYS_READ                   = 0
+       SYS_WRITE                  = 1
+       SYS_OPEN                   = 2
+       SYS_CLOSE                  = 3
+       SYS_STAT                   = 4
+       SYS_FSTAT                  = 5
+       SYS_LSTAT                  = 6
+       SYS_POLL                   = 7
+       SYS_LSEEK                  = 8
+       SYS_MMAP                   = 9
+       SYS_MPROTECT               = 10
+       SYS_MUNMAP                 = 11
+       SYS_BRK                    = 12
+       SYS_RT_SIGACTION           = 13
+       SYS_RT_SIGPROCMASK         = 14
+       SYS_RT_SIGRETURN           = 15
+       SYS_IOCTL                  = 16
+       SYS_PREAD64                = 17
+       SYS_PWRITE64               = 18
+       SYS_READV                  = 19
+       SYS_WRITEV                 = 20
+       SYS_ACCESS                 = 21
+       SYS_PIPE                   = 22
+       SYS_SELECT                 = 23
+       SYS_SCHED_YIELD            = 24
+       SYS_MREMAP                 = 25
+       SYS_MSYNC                  = 26
+       SYS_MINCORE                = 27
+       SYS_MADVISE                = 28
+       SYS_SHMGET                 = 29
+       SYS_SHMAT                  = 30
+       SYS_SHMCTL                 = 31
+       SYS_DUP                    = 32
+       SYS_DUP2                   = 33
+       SYS_PAUSE                  = 34
+       SYS_NANOSLEEP              = 35
+       SYS_GETITIMER              = 36
+       SYS_ALARM                  = 37
+       SYS_SETITIMER              = 38
+       SYS_GETPID                 = 39
+       SYS_SENDFILE               = 40
+       SYS_SOCKET                 = 41
+       SYS_CONNECT                = 42
+       SYS_ACCEPT                 = 43
+       SYS_SENDTO                 = 44
+       SYS_RECVFROM               = 45
+       SYS_SENDMSG                = 46
+       SYS_RECVMSG                = 47
+       SYS_SHUTDOWN               = 48
+       SYS_BIND                   = 49
+       SYS_LISTEN                 = 50
+       SYS_GETSOCKNAME            = 51
+       SYS_GETPEERNAME            = 52
+       SYS_SOCKETPAIR             = 53
+       SYS_SETSOCKOPT             = 54
+       SYS_GETSOCKOPT             = 55
+       SYS_CLONE                  = 56
+       SYS_FORK                   = 57
+       SYS_VFORK                  = 58
+       SYS_EXECVE                 = 59
+       SYS_EXIT                   = 60
+       SYS_WAIT4                  = 61
+       SYS_KILL                   = 62
+       SYS_UNAME                  = 63
+       SYS_SEMGET                 = 64
+       SYS_SEMOP                  = 65
+       SYS_SEMCTL                 = 66
+       SYS_SHMDT                  = 67
+       SYS_MSGGET                 = 68
+       SYS_MSGSND                 = 69
+       SYS_MSGRCV                 = 70
+       SYS_MSGCTL                 = 71
+       SYS_FCNTL                  = 72
+       SYS_FLOCK                  = 73
+       SYS_FSYNC                  = 74
+       SYS_FDATASYNC              = 75
+       SYS_TRUNCATE               = 76
+       SYS_FTRUNCATE              = 77
+       SYS_GETDENTS               = 78
+       SYS_GETCWD                 = 79
+       SYS_CHDIR                  = 80
+       SYS_FCHDIR                 = 81
+       SYS_RENAME                 = 82
+       SYS_MKDIR                  = 83
+       SYS_RMDIR                  = 84
+       SYS_CREAT                  = 85
+       SYS_LINK                   = 86
+       SYS_UNLINK                 = 87
+       SYS_SYMLINK                = 88
+       SYS_READLINK               = 89
+       SYS_CHMOD                  = 90
+       SYS_FCHMOD                 = 91
+       SYS_CHOWN                  = 92
+       SYS_FCHOWN                 = 93
+       SYS_LCHOWN                 = 94
+       SYS_UMASK                  = 95
+       SYS_GETTIMEOFDAY           = 96
+       SYS_GETRLIMIT              = 97
+       SYS_GETRUSAGE              = 98
+       SYS_SYSINFO                = 99
+       SYS_TIMES                  = 100
+       SYS_PTRACE                 = 101
+       SYS_GETUID                 = 102
+       SYS_SYSLOG                 = 103
+       SYS_GETGID                 = 104
+       SYS_SETUID                 = 105
+       SYS_SETGID                 = 106
+       SYS_GETEUID                = 107
+       SYS_GETEGID                = 108
+       SYS_SETPGID                = 109
+       SYS_GETPPID                = 110
+       SYS_GETPGRP                = 111
+       SYS_SETSID                 = 112
+       SYS_SETREUID               = 113
+       SYS_SETREGID               = 114
+       SYS_GETGROUPS              = 115
+       SYS_SETGROUPS              = 116
+       SYS_SETRESUID              = 117
+       SYS_GETRESUID              = 118
+       SYS_SETRESGID              = 119
+       SYS_GETRESGID              = 120
+       SYS_GETPGID                = 121
+       SYS_SETFSUID               = 122
+       SYS_SETFSGID               = 123
+       SYS_GETSID                 = 124
+       SYS_CAPGET                 = 125
+       SYS_CAPSET                 = 126
+       SYS_RT_SIGPENDING          = 127
+       SYS_RT_SIGTIMEDWAIT        = 128
+       SYS_RT_SIGQUEUEINFO        = 129
+       SYS_RT_SIGSUSPEND          = 130
+       SYS_SIGALTSTACK            = 131
+       SYS_UTIME                  = 132
+       SYS_MKNOD                  = 133
+       SYS_USELIB                 = 134
+       SYS_PERSONALITY            = 135
+       SYS_USTAT                  = 136
+       SYS_STATFS                 = 137
+       SYS_FSTATFS                = 138
+       SYS_SYSFS                  = 139
+       SYS_GETPRIORITY            = 140
+       SYS_SETPRIORITY            = 141
+       SYS_SCHED_SETPARAM         = 142
+       SYS_SCHED_GETPARAM         = 143
+       SYS_SCHED_SETSCHEDULER     = 144
+       SYS_SCHED_GETSCHEDULER     = 145
+       SYS_SCHED_GET_PRIORITY_MAX = 146
+       SYS_SCHED_GET_PRIORITY_MIN = 147
+       SYS_SCHED_RR_GET_INTERVAL  = 148
+       SYS_MLOCK                  = 149
+       SYS_MUNLOCK                = 150
+       SYS_MLOCKALL               = 151
+       SYS_MUNLOCKALL             = 152
+       SYS_VHANGUP                = 153
+       SYS_MODIFY_LDT             = 154
+       SYS_PIVOT_ROOT             = 155
+       SYS__SYSCTL                = 156
+       SYS_PRCTL                  = 157
+       SYS_ARCH_PRCTL             = 158
+       SYS_ADJTIMEX               = 159
+       SYS_SETRLIMIT              = 160
+       SYS_CHROOT                 = 161
+       SYS_SYNC                   = 162
+       SYS_ACCT                   = 163
+       SYS_SETTIMEOFDAY           = 164
+       SYS_MOUNT                  = 165
+       SYS_UMOUNT2                = 166
+       SYS_SWAPON                 = 167
+       SYS_SWAPOFF                = 168
+       SYS_REBOOT                 = 169
+       SYS_SETHOSTNAME            = 170
+       SYS_SETDOMAINNAME          = 171
+       SYS_IOPL                   = 172
+       SYS_IOPERM                 = 173
+       SYS_CREATE_MODULE          = 174
+       SYS_INIT_MODULE            = 175
+       SYS_DELETE_MODULE          = 176
+       SYS_GET_KERNEL_SYMS        = 177
+       SYS_QUERY_MODULE           = 178
+       SYS_QUOTACTL               = 179
+       SYS_NFSSERVCTL             = 180
+       SYS_GETPMSG                = 181
+       SYS_PUTPMSG                = 182
+       SYS_AFS_SYSCALL            = 183
+       SYS_TUXCALL                = 184
+       SYS_SECURITY               = 185
+       SYS_GETTID                 = 186
+       SYS_READAHEAD              = 187
+       SYS_SETXATTR               = 188
+       SYS_LSETXATTR              = 189
+       SYS_FSETXATTR              = 190
+       SYS_GETXATTR               = 191
+       SYS_LGETXATTR              = 192
+       SYS_FGETXATTR              = 193
+       SYS_LISTXATTR              = 194
+       SYS_LLISTXATTR             = 195
+       SYS_FLISTXATTR             = 196
+       SYS_REMOVEXATTR            = 197
+       SYS_LREMOVEXATTR           = 198
+       SYS_FREMOVEXATTR           = 199
+       SYS_TKILL                  = 200
+       SYS_TIME                   = 201
+       SYS_FUTEX                  = 202
+       SYS_SCHED_SETAFFINITY      = 203
+       SYS_SCHED_GETAFFINITY      = 204
+       SYS_SET_THREAD_AREA        = 205
+       SYS_IO_SETUP               = 206
+       SYS_IO_DESTROY             = 207
+       SYS_IO_GETEVENTS           = 208
+       SYS_IO_SUBMIT              = 209
+       SYS_IO_CANCEL              = 210
+       SYS_GET_THREAD_AREA        = 211
+       SYS_LOOKUP_DCOOKIE         = 212
+       SYS_EPOLL_CREATE           = 213
+       SYS_EPOLL_CTL_OLD          = 214
+       SYS_EPOLL_WAIT_OLD         = 215
+       SYS_REMAP_FILE_PAGES       = 216
+       SYS_GETDENTS64             = 217
+       SYS_SET_TID_ADDRESS        = 218
+       SYS_RESTART_SYSCALL        = 219
+       SYS_SEMTIMEDOP             = 220
+       SYS_FADVISE64              = 221
+       SYS_TIMER_CREATE           = 222
+       SYS_TIMER_SETTIME          = 223
+       SYS_TIMER_GETTIME          = 224
+       SYS_TIMER_GETOVERRUN       = 225
+       SYS_TIMER_DELETE           = 226
+       SYS_CLOCK_SETTIME          = 227
+       SYS_CLOCK_GETTIME          = 228
+       SYS_CLOCK_GETRES           = 229
+       SYS_CLOCK_NANOSLEEP        = 230
+       SYS_EXIT_GROUP             = 231
+       SYS_EPOLL_WAIT             = 232
+       SYS_EPOLL_CTL              = 233
+       SYS_TGKILL                 = 234
+       SYS_UTIMES                 = 235
+       SYS_VSERVER                = 236
+       SYS_MBIND                  = 237
+       SYS_SET_MEMPOLICY          = 238
+       SYS_GET_MEMPOLICY          = 239
+       SYS_MQ_OPEN                = 240
+       SYS_MQ_UNLINK              = 241
+       SYS_MQ_TIMEDSEND           = 242
+       SYS_MQ_TIMEDRECEIVE        = 243
+       SYS_MQ_NOTIFY              = 244
+       SYS_MQ_GETSETATTR          = 245
+       SYS_KEXEC_LOAD             = 246
+       SYS_WAITID                 = 247
+       SYS_ADD_KEY                = 248
+       SYS_REQUEST_KEY            = 249
+       SYS_KEYCTL                 = 250
+       SYS_IOPRIO_SET             = 251
+       SYS_IOPRIO_GET             = 252
+       SYS_INOTIFY_INIT           = 253
+       SYS_INOTIFY_ADD_WATCH      = 254
+       SYS_INOTIFY_RM_WATCH       = 255
+       SYS_MIGRATE_PAGES          = 256
+       SYS_OPENAT                 = 257
+       SYS_MKDIRAT                = 258
+       SYS_MKNODAT                = 259
+       SYS_FCHOWNAT               = 260
+       SYS_FUTIMESAT              = 261
+       SYS_NEWFSTATAT             = 262
+       SYS_UNLINKAT               = 263
+       SYS_RENAMEAT               = 264
+       SYS_LINKAT                 = 265
+       SYS_SYMLINKAT              = 266
+       SYS_READLINKAT             = 267
+       SYS_FCHMODAT               = 268
+       SYS_FACCESSAT              = 269
+       SYS_PSELECT6               = 270
+       SYS_PPOLL                  = 271
+       SYS_UNSHARE                = 272
+       SYS_SET_ROBUST_LIST        = 273
+       SYS_GET_ROBUST_LIST        = 274
+       SYS_SPLICE                 = 275
+       SYS_TEE                    = 276
+       SYS_SYNC_FILE_RANGE        = 277
+       SYS_VMSPLICE               = 278
+       SYS_MOVE_PAGES             = 279
+       SYS_UTIMENSAT              = 280
+       SYS_EPOLL_PWAIT            = 281
+       SYS_SIGNALFD               = 282
+       SYS_TIMERFD_CREATE         = 283
+       SYS_EVENTFD                = 284
+       SYS_FALLOCATE              = 285
+       SYS_TIMERFD_SETTIME        = 286
+       SYS_TIMERFD_GETTIME        = 287
+       SYS_ACCEPT4                = 288
+       SYS_SIGNALFD4              = 289
+       SYS_EVENTFD2               = 290
+       SYS_EPOLL_CREATE1          = 291
+       SYS_DUP3                   = 292
+       SYS_PIPE2                  = 293
+       SYS_INOTIFY_INIT1          = 294
+       SYS_PREADV                 = 295
+       SYS_PWRITEV                = 296
+       SYS_RT_TGSIGQUEUEINFO      = 297
+       SYS_PERF_EVENT_OPEN        = 298
+       SYS_RECVMMSG               = 299
+       SYS_FANOTIFY_INIT          = 300
+       SYS_FANOTIFY_MARK          = 301
+       SYS_PRLIMIT64              = 302
+       SYS_NAME_TO_HANDLE_AT      = 303
+       SYS_OPEN_BY_HANDLE_AT      = 304
+       SYS_CLOCK_ADJTIME          = 305
+       SYS_SYNCFS                 = 306
+       SYS_SENDMMSG               = 307
+       SYS_SETNS                  = 308
+       SYS_GETCPU                 = 309
+       SYS_PROCESS_VM_READV       = 310
+       SYS_PROCESS_VM_WRITEV      = 311
+)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go
new file mode 100644 (file)
index 0000000..45ced17
--- /dev/null
@@ -0,0 +1,356 @@
+// mksysnum_linux.pl
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build arm,linux
+
+package unix
+
+const (
+       SYS_OABI_SYSCALL_BASE      = 0
+       SYS_SYSCALL_BASE           = 0
+       SYS_RESTART_SYSCALL        = 0
+       SYS_EXIT                   = 1
+       SYS_FORK                   = 2
+       SYS_READ                   = 3
+       SYS_WRITE                  = 4
+       SYS_OPEN                   = 5
+       SYS_CLOSE                  = 6
+       SYS_CREAT                  = 8
+       SYS_LINK                   = 9
+       SYS_UNLINK                 = 10
+       SYS_EXECVE                 = 11
+       SYS_CHDIR                  = 12
+       SYS_TIME                   = 13
+       SYS_MKNOD                  = 14
+       SYS_CHMOD                  = 15
+       SYS_LCHOWN                 = 16
+       SYS_LSEEK                  = 19
+       SYS_GETPID                 = 20
+       SYS_MOUNT                  = 21
+       SYS_UMOUNT                 = 22
+       SYS_SETUID                 = 23
+       SYS_GETUID                 = 24
+       SYS_STIME                  = 25
+       SYS_PTRACE                 = 26
+       SYS_ALARM                  = 27
+       SYS_PAUSE                  = 29
+       SYS_UTIME                  = 30
+       SYS_ACCESS                 = 33
+       SYS_NICE                   = 34
+       SYS_SYNC                   = 36
+       SYS_KILL                   = 37
+       SYS_RENAME                 = 38
+       SYS_MKDIR                  = 39
+       SYS_RMDIR                  = 40
+       SYS_DUP                    = 41
+       SYS_PIPE                   = 42
+       SYS_TIMES                  = 43
+       SYS_BRK                    = 45
+       SYS_SETGID                 = 46
+       SYS_GETGID                 = 47
+       SYS_GETEUID                = 49
+       SYS_GETEGID                = 50
+       SYS_ACCT                   = 51
+       SYS_UMOUNT2                = 52
+       SYS_IOCTL                  = 54
+       SYS_FCNTL                  = 55
+       SYS_SETPGID                = 57
+       SYS_UMASK                  = 60
+       SYS_CHROOT                 = 61
+       SYS_USTAT                  = 62
+       SYS_DUP2                   = 63
+       SYS_GETPPID                = 64
+       SYS_GETPGRP                = 65
+       SYS_SETSID                 = 66
+       SYS_SIGACTION              = 67
+       SYS_SETREUID               = 70
+       SYS_SETREGID               = 71
+       SYS_SIGSUSPEND             = 72
+       SYS_SIGPENDING             = 73
+       SYS_SETHOSTNAME            = 74
+       SYS_SETRLIMIT              = 75
+       SYS_GETRLIMIT              = 76
+       SYS_GETRUSAGE              = 77
+       SYS_GETTIMEOFDAY           = 78
+       SYS_SETTIMEOFDAY           = 79
+       SYS_GETGROUPS              = 80
+       SYS_SETGROUPS              = 81
+       SYS_SELECT                 = 82
+       SYS_SYMLINK                = 83
+       SYS_READLINK               = 85
+       SYS_USELIB                 = 86
+       SYS_SWAPON                 = 87
+       SYS_REBOOT                 = 88
+       SYS_READDIR                = 89
+       SYS_MMAP                   = 90
+       SYS_MUNMAP                 = 91
+       SYS_TRUNCATE               = 92
+       SYS_FTRUNCATE              = 93
+       SYS_FCHMOD                 = 94
+       SYS_FCHOWN                 = 95
+       SYS_GETPRIORITY            = 96
+       SYS_SETPRIORITY            = 97
+       SYS_STATFS                 = 99
+       SYS_FSTATFS                = 100
+       SYS_SOCKETCALL             = 102
+       SYS_SYSLOG                 = 103
+       SYS_SETITIMER              = 104
+       SYS_GETITIMER              = 105
+       SYS_STAT                   = 106
+       SYS_LSTAT                  = 107
+       SYS_FSTAT                  = 108
+       SYS_VHANGUP                = 111
+       SYS_SYSCALL                = 113
+       SYS_WAIT4                  = 114
+       SYS_SWAPOFF                = 115
+       SYS_SYSINFO                = 116
+       SYS_IPC                    = 117
+       SYS_FSYNC                  = 118
+       SYS_SIGRETURN              = 119
+       SYS_CLONE                  = 120
+       SYS_SETDOMAINNAME          = 121
+       SYS_UNAME                  = 122
+       SYS_ADJTIMEX               = 124
+       SYS_MPROTECT               = 125
+       SYS_SIGPROCMASK            = 126
+       SYS_INIT_MODULE            = 128
+       SYS_DELETE_MODULE          = 129
+       SYS_QUOTACTL               = 131
+       SYS_GETPGID                = 132
+       SYS_FCHDIR                 = 133
+       SYS_BDFLUSH                = 134
+       SYS_SYSFS                  = 135
+       SYS_PERSONALITY            = 136
+       SYS_SETFSUID               = 138
+       SYS_SETFSGID               = 139
+       SYS__LLSEEK                = 140
+       SYS_GETDENTS               = 141
+       SYS__NEWSELECT             = 142
+       SYS_FLOCK                  = 143
+       SYS_MSYNC                  = 144
+       SYS_READV                  = 145
+       SYS_WRITEV                 = 146
+       SYS_GETSID                 = 147
+       SYS_FDATASYNC              = 148
+       SYS__SYSCTL                = 149
+       SYS_MLOCK                  = 150
+       SYS_MUNLOCK                = 151
+       SYS_MLOCKALL               = 152
+       SYS_MUNLOCKALL             = 153
+       SYS_SCHED_SETPARAM         = 154
+       SYS_SCHED_GETPARAM         = 155
+       SYS_SCHED_SETSCHEDULER     = 156
+       SYS_SCHED_GETSCHEDULER     = 157
+       SYS_SCHED_YIELD            = 158
+       SYS_SCHED_GET_PRIORITY_MAX = 159
+       SYS_SCHED_GET_PRIORITY_MIN = 160
+       SYS_SCHED_RR_GET_INTERVAL  = 161
+       SYS_NANOSLEEP              = 162
+       SYS_MREMAP                 = 163
+       SYS_SETRESUID              = 164
+       SYS_GETRESUID              = 165
+       SYS_POLL                   = 168
+       SYS_NFSSERVCTL             = 169
+       SYS_SETRESGID              = 170
+       SYS_GETRESGID              = 171
+       SYS_PRCTL                  = 172
+       SYS_RT_SIGRETURN           = 173
+       SYS_RT_SIGACTION           = 174
+       SYS_RT_SIGPROCMASK         = 175
+       SYS_RT_SIGPENDING          = 176
+       SYS_RT_SIGTIMEDWAIT        = 177
+       SYS_RT_SIGQUEUEINFO        = 178
+       SYS_RT_SIGSUSPEND          = 179
+       SYS_PREAD64                = 180
+       SYS_PWRITE64               = 181
+       SYS_CHOWN                  = 182
+       SYS_GETCWD                 = 183
+       SYS_CAPGET                 = 184
+       SYS_CAPSET                 = 185
+       SYS_SIGALTSTACK            = 186
+       SYS_SENDFILE               = 187
+       SYS_VFORK                  = 190
+       SYS_UGETRLIMIT             = 191
+       SYS_MMAP2                  = 192
+       SYS_TRUNCATE64             = 193
+       SYS_FTRUNCATE64            = 194
+       SYS_STAT64                 = 195
+       SYS_LSTAT64                = 196
+       SYS_FSTAT64                = 197
+       SYS_LCHOWN32               = 198
+       SYS_GETUID32               = 199
+       SYS_GETGID32               = 200
+       SYS_GETEUID32              = 201
+       SYS_GETEGID32              = 202
+       SYS_SETREUID32             = 203
+       SYS_SETREGID32             = 204
+       SYS_GETGROUPS32            = 205
+       SYS_SETGROUPS32            = 206
+       SYS_FCHOWN32               = 207
+       SYS_SETRESUID32            = 208
+       SYS_GETRESUID32            = 209
+       SYS_SETRESGID32            = 210
+       SYS_GETRESGID32            = 211
+       SYS_CHOWN32                = 212
+       SYS_SETUID32               = 213
+       SYS_SETGID32               = 214
+       SYS_SETFSUID32             = 215
+       SYS_SETFSGID32             = 216
+       SYS_GETDENTS64             = 217
+       SYS_PIVOT_ROOT             = 218
+       SYS_MINCORE                = 219
+       SYS_MADVISE                = 220
+       SYS_FCNTL64                = 221
+       SYS_GETTID                 = 224
+       SYS_READAHEAD              = 225
+       SYS_SETXATTR               = 226
+       SYS_LSETXATTR              = 227
+       SYS_FSETXATTR              = 228
+       SYS_GETXATTR               = 229
+       SYS_LGETXATTR              = 230
+       SYS_FGETXATTR              = 231
+       SYS_LISTXATTR              = 232
+       SYS_LLISTXATTR             = 233
+       SYS_FLISTXATTR             = 234
+       SYS_REMOVEXATTR            = 235
+       SYS_LREMOVEXATTR           = 236
+       SYS_FREMOVEXATTR           = 237
+       SYS_TKILL                  = 238
+       SYS_SENDFILE64             = 239
+       SYS_FUTEX                  = 240
+       SYS_SCHED_SETAFFINITY      = 241
+       SYS_SCHED_GETAFFINITY      = 242
+       SYS_IO_SETUP               = 243
+       SYS_IO_DESTROY             = 244
+       SYS_IO_GETEVENTS           = 245
+       SYS_IO_SUBMIT              = 246
+       SYS_IO_CANCEL              = 247
+       SYS_EXIT_GROUP             = 248
+       SYS_LOOKUP_DCOOKIE         = 249
+       SYS_EPOLL_CREATE           = 250
+       SYS_EPOLL_CTL              = 251
+       SYS_EPOLL_WAIT             = 252
+       SYS_REMAP_FILE_PAGES       = 253
+       SYS_SET_TID_ADDRESS        = 256
+       SYS_TIMER_CREATE           = 257
+       SYS_TIMER_SETTIME          = 258
+       SYS_TIMER_GETTIME          = 259
+       SYS_TIMER_GETOVERRUN       = 260
+       SYS_TIMER_DELETE           = 261
+       SYS_CLOCK_SETTIME          = 262
+       SYS_CLOCK_GETTIME          = 263
+       SYS_CLOCK_GETRES           = 264
+       SYS_CLOCK_NANOSLEEP        = 265
+       SYS_STATFS64               = 266
+       SYS_FSTATFS64              = 267
+       SYS_TGKILL                 = 268
+       SYS_UTIMES                 = 269
+       SYS_ARM_FADVISE64_64       = 270
+       SYS_PCICONFIG_IOBASE       = 271
+       SYS_PCICONFIG_READ         = 272
+       SYS_PCICONFIG_WRITE        = 273
+       SYS_MQ_OPEN                = 274
+       SYS_MQ_UNLINK              = 275
+       SYS_MQ_TIMEDSEND           = 276
+       SYS_MQ_TIMEDRECEIVE        = 277
+       SYS_MQ_NOTIFY              = 278
+       SYS_MQ_GETSETATTR          = 279
+       SYS_WAITID                 = 280
+       SYS_SOCKET                 = 281
+       SYS_BIND                   = 282
+       SYS_CONNECT                = 283
+       SYS_LISTEN                 = 284
+       SYS_ACCEPT                 = 285
+       SYS_GETSOCKNAME            = 286
+       SYS_GETPEERNAME            = 287
+       SYS_SOCKETPAIR             = 288
+       SYS_SEND                   = 289
+       SYS_SENDTO                 = 290
+       SYS_RECV                   = 291
+       SYS_RECVFROM               = 292
+       SYS_SHUTDOWN               = 293
+       SYS_SETSOCKOPT             = 294
+       SYS_GETSOCKOPT             = 295
+       SYS_SENDMSG                = 296
+       SYS_RECVMSG                = 297
+       SYS_SEMOP                  = 298
+       SYS_SEMGET                 = 299
+       SYS_SEMCTL                 = 300
+       SYS_MSGSND                 = 301
+       SYS_MSGRCV                 = 302
+       SYS_MSGGET                 = 303
+       SYS_MSGCTL                 = 304
+       SYS_SHMAT                  = 305
+       SYS_SHMDT                  = 306
+       SYS_SHMGET                 = 307
+       SYS_SHMCTL                 = 308
+       SYS_ADD_KEY                = 309
+       SYS_REQUEST_KEY            = 310
+       SYS_KEYCTL                 = 311
+       SYS_SEMTIMEDOP             = 312
+       SYS_VSERVER                = 313
+       SYS_IOPRIO_SET             = 314
+       SYS_IOPRIO_GET             = 315
+       SYS_INOTIFY_INIT           = 316
+       SYS_INOTIFY_ADD_WATCH      = 317
+       SYS_INOTIFY_RM_WATCH       = 318
+       SYS_MBIND                  = 319
+       SYS_GET_MEMPOLICY          = 320
+       SYS_SET_MEMPOLICY          = 321
+       SYS_OPENAT                 = 322
+       SYS_MKDIRAT                = 323
+       SYS_MKNODAT                = 324
+       SYS_FCHOWNAT               = 325
+       SYS_FUTIMESAT              = 326
+       SYS_FSTATAT64              = 327
+       SYS_UNLINKAT               = 328
+       SYS_RENAMEAT               = 329
+       SYS_LINKAT                 = 330
+       SYS_SYMLINKAT              = 331
+       SYS_READLINKAT             = 332
+       SYS_FCHMODAT               = 333
+       SYS_FACCESSAT              = 334
+       SYS_PSELECT6               = 335
+       SYS_PPOLL                  = 336
+       SYS_UNSHARE                = 337
+       SYS_SET_ROBUST_LIST        = 338
+       SYS_GET_ROBUST_LIST        = 339
+       SYS_SPLICE                 = 340
+       SYS_ARM_SYNC_FILE_RANGE    = 341
+       SYS_TEE                    = 342
+       SYS_VMSPLICE               = 343
+       SYS_MOVE_PAGES             = 344
+       SYS_GETCPU                 = 345
+       SYS_EPOLL_PWAIT            = 346
+       SYS_KEXEC_LOAD             = 347
+       SYS_UTIMENSAT              = 348
+       SYS_SIGNALFD               = 349
+       SYS_TIMERFD_CREATE         = 350
+       SYS_EVENTFD                = 351
+       SYS_FALLOCATE              = 352
+       SYS_TIMERFD_SETTIME        = 353
+       SYS_TIMERFD_GETTIME        = 354
+       SYS_SIGNALFD4              = 355
+       SYS_EVENTFD2               = 356
+       SYS_EPOLL_CREATE1          = 357
+       SYS_DUP3                   = 358
+       SYS_PIPE2                  = 359
+       SYS_INOTIFY_INIT1          = 360
+       SYS_PREADV                 = 361
+       SYS_PWRITEV                = 362
+       SYS_RT_TGSIGQUEUEINFO      = 363
+       SYS_PERF_EVENT_OPEN        = 364
+       SYS_RECVMMSG               = 365
+       SYS_ACCEPT4                = 366
+       SYS_FANOTIFY_INIT          = 367
+       SYS_FANOTIFY_MARK          = 368
+       SYS_PRLIMIT64              = 369
+       SYS_NAME_TO_HANDLE_AT      = 370
+       SYS_OPEN_BY_HANDLE_AT      = 371
+       SYS_CLOCK_ADJTIME          = 372
+       SYS_SYNCFS                 = 373
+       SYS_SENDMMSG               = 374
+       SYS_SETNS                  = 375
+       SYS_PROCESS_VM_READV       = 376
+       SYS_PROCESS_VM_WRITEV      = 377
+)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go
new file mode 100644 (file)
index 0000000..2e9514f
--- /dev/null
@@ -0,0 +1,272 @@
+// mksysnum_linux.pl /usr/include/asm-generic/unistd.h
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build arm64,linux
+
+package unix
+
+const (
+       SYS_IO_SETUP               = 0
+       SYS_IO_DESTROY             = 1
+       SYS_IO_SUBMIT              = 2
+       SYS_IO_CANCEL              = 3
+       SYS_IO_GETEVENTS           = 4
+       SYS_SETXATTR               = 5
+       SYS_LSETXATTR              = 6
+       SYS_FSETXATTR              = 7
+       SYS_GETXATTR               = 8
+       SYS_LGETXATTR              = 9
+       SYS_FGETXATTR              = 10
+       SYS_LISTXATTR              = 11
+       SYS_LLISTXATTR             = 12
+       SYS_FLISTXATTR             = 13
+       SYS_REMOVEXATTR            = 14
+       SYS_LREMOVEXATTR           = 15
+       SYS_FREMOVEXATTR           = 16
+       SYS_GETCWD                 = 17
+       SYS_LOOKUP_DCOOKIE         = 18
+       SYS_EVENTFD2               = 19
+       SYS_EPOLL_CREATE1          = 20
+       SYS_EPOLL_CTL              = 21
+       SYS_EPOLL_PWAIT            = 22
+       SYS_DUP                    = 23
+       SYS_DUP3                   = 24
+       SYS_FCNTL                  = 25
+       SYS_INOTIFY_INIT1          = 26
+       SYS_INOTIFY_ADD_WATCH      = 27
+       SYS_INOTIFY_RM_WATCH       = 28
+       SYS_IOCTL                  = 29
+       SYS_IOPRIO_SET             = 30
+       SYS_IOPRIO_GET             = 31
+       SYS_FLOCK                  = 32
+       SYS_MKNODAT                = 33
+       SYS_MKDIRAT                = 34
+       SYS_UNLINKAT               = 35
+       SYS_SYMLINKAT              = 36
+       SYS_LINKAT                 = 37
+       SYS_RENAMEAT               = 38
+       SYS_UMOUNT2                = 39
+       SYS_MOUNT                  = 40
+       SYS_PIVOT_ROOT             = 41
+       SYS_NFSSERVCTL             = 42
+       SYS_STATFS                 = 43
+       SYS_FSTATFS                = 44
+       SYS_TRUNCATE               = 45
+       SYS_FTRUNCATE              = 46
+       SYS_FALLOCATE              = 47
+       SYS_FACCESSAT              = 48
+       SYS_CHDIR                  = 49
+       SYS_FCHDIR                 = 50
+       SYS_CHROOT                 = 51
+       SYS_FCHMOD                 = 52
+       SYS_FCHMODAT               = 53
+       SYS_FCHOWNAT               = 54
+       SYS_FCHOWN                 = 55
+       SYS_OPENAT                 = 56
+       SYS_CLOSE                  = 57
+       SYS_VHANGUP                = 58
+       SYS_PIPE2                  = 59
+       SYS_QUOTACTL               = 60
+       SYS_GETDENTS64             = 61
+       SYS_LSEEK                  = 62
+       SYS_READ                   = 63
+       SYS_WRITE                  = 64
+       SYS_READV                  = 65
+       SYS_WRITEV                 = 66
+       SYS_PREAD64                = 67
+       SYS_PWRITE64               = 68
+       SYS_PREADV                 = 69
+       SYS_PWRITEV                = 70
+       SYS_SENDFILE               = 71
+       SYS_PSELECT6               = 72
+       SYS_PPOLL                  = 73
+       SYS_SIGNALFD4              = 74
+       SYS_VMSPLICE               = 75
+       SYS_SPLICE                 = 76
+       SYS_TEE                    = 77
+       SYS_READLINKAT             = 78
+       SYS_FSTATAT                = 79
+       SYS_FSTAT                  = 80
+       SYS_SYNC                   = 81
+       SYS_FSYNC                  = 82
+       SYS_FDATASYNC              = 83
+       SYS_SYNC_FILE_RANGE        = 84
+       SYS_TIMERFD_CREATE         = 85
+       SYS_TIMERFD_SETTIME        = 86
+       SYS_TIMERFD_GETTIME        = 87
+       SYS_UTIMENSAT              = 88
+       SYS_ACCT                   = 89
+       SYS_CAPGET                 = 90
+       SYS_CAPSET                 = 91
+       SYS_PERSONALITY            = 92
+       SYS_EXIT                   = 93
+       SYS_EXIT_GROUP             = 94
+       SYS_WAITID                 = 95
+       SYS_SET_TID_ADDRESS        = 96
+       SYS_UNSHARE                = 97
+       SYS_FUTEX                  = 98
+       SYS_SET_ROBUST_LIST        = 99
+       SYS_GET_ROBUST_LIST        = 100
+       SYS_NANOSLEEP              = 101
+       SYS_GETITIMER              = 102
+       SYS_SETITIMER              = 103
+       SYS_KEXEC_LOAD             = 104
+       SYS_INIT_MODULE            = 105
+       SYS_DELETE_MODULE          = 106
+       SYS_TIMER_CREATE           = 107
+       SYS_TIMER_GETTIME          = 108
+       SYS_TIMER_GETOVERRUN       = 109
+       SYS_TIMER_SETTIME          = 110
+       SYS_TIMER_DELETE           = 111
+       SYS_CLOCK_SETTIME          = 112
+       SYS_CLOCK_GETTIME          = 113
+       SYS_CLOCK_GETRES           = 114
+       SYS_CLOCK_NANOSLEEP        = 115
+       SYS_SYSLOG                 = 116
+       SYS_PTRACE                 = 117
+       SYS_SCHED_SETPARAM         = 118
+       SYS_SCHED_SETSCHEDULER     = 119
+       SYS_SCHED_GETSCHEDULER     = 120
+       SYS_SCHED_GETPARAM         = 121
+       SYS_SCHED_SETAFFINITY      = 122
+       SYS_SCHED_GETAFFINITY      = 123
+       SYS_SCHED_YIELD            = 124
+       SYS_SCHED_GET_PRIORITY_MAX = 125
+       SYS_SCHED_GET_PRIORITY_MIN = 126
+       SYS_SCHED_RR_GET_INTERVAL  = 127
+       SYS_RESTART_SYSCALL        = 128
+       SYS_KILL                   = 129
+       SYS_TKILL                  = 130
+       SYS_TGKILL                 = 131
+       SYS_SIGALTSTACK            = 132
+       SYS_RT_SIGSUSPEND          = 133
+       SYS_RT_SIGACTION           = 134
+       SYS_RT_SIGPROCMASK         = 135
+       SYS_RT_SIGPENDING          = 136
+       SYS_RT_SIGTIMEDWAIT        = 137
+       SYS_RT_SIGQUEUEINFO        = 138
+       SYS_RT_SIGRETURN           = 139
+       SYS_SETPRIORITY            = 140
+       SYS_GETPRIORITY            = 141
+       SYS_REBOOT                 = 142
+       SYS_SETREGID               = 143
+       SYS_SETGID                 = 144
+       SYS_SETREUID               = 145
+       SYS_SETUID                 = 146
+       SYS_SETRESUID              = 147
+       SYS_GETRESUID              = 148
+       SYS_SETRESGID              = 149
+       SYS_GETRESGID              = 150
+       SYS_SETFSUID               = 151
+       SYS_SETFSGID               = 152
+       SYS_TIMES                  = 153
+       SYS_SETPGID                = 154
+       SYS_GETPGID                = 155
+       SYS_GETSID                 = 156
+       SYS_SETSID                 = 157
+       SYS_GETGROUPS              = 158
+       SYS_SETGROUPS              = 159
+       SYS_UNAME                  = 160
+       SYS_SETHOSTNAME            = 161
+       SYS_SETDOMAINNAME          = 162
+       SYS_GETRLIMIT              = 163
+       SYS_SETRLIMIT              = 164
+       SYS_GETRUSAGE              = 165
+       SYS_UMASK                  = 166
+       SYS_PRCTL                  = 167
+       SYS_GETCPU                 = 168
+       SYS_GETTIMEOFDAY           = 169
+       SYS_SETTIMEOFDAY           = 170
+       SYS_ADJTIMEX               = 171
+       SYS_GETPID                 = 172
+       SYS_GETPPID                = 173
+       SYS_GETUID                 = 174
+       SYS_GETEUID                = 175
+       SYS_GETGID                 = 176
+       SYS_GETEGID                = 177
+       SYS_GETTID                 = 178
+       SYS_SYSINFO                = 179
+       SYS_MQ_OPEN                = 180
+       SYS_MQ_UNLINK              = 181
+       SYS_MQ_TIMEDSEND           = 182
+       SYS_MQ_TIMEDRECEIVE        = 183
+       SYS_MQ_NOTIFY              = 184
+       SYS_MQ_GETSETATTR          = 185
+       SYS_MSGGET                 = 186
+       SYS_MSGCTL                 = 187
+       SYS_MSGRCV                 = 188
+       SYS_MSGSND                 = 189
+       SYS_SEMGET                 = 190
+       SYS_SEMCTL                 = 191
+       SYS_SEMTIMEDOP             = 192
+       SYS_SEMOP                  = 193
+       SYS_SHMGET                 = 194
+       SYS_SHMCTL                 = 195
+       SYS_SHMAT                  = 196
+       SYS_SHMDT                  = 197
+       SYS_SOCKET                 = 198
+       SYS_SOCKETPAIR             = 199
+       SYS_BIND                   = 200
+       SYS_LISTEN                 = 201
+       SYS_ACCEPT                 = 202
+       SYS_CONNECT                = 203
+       SYS_GETSOCKNAME            = 204
+       SYS_GETPEERNAME            = 205
+       SYS_SENDTO                 = 206
+       SYS_RECVFROM               = 207
+       SYS_SETSOCKOPT             = 208
+       SYS_GETSOCKOPT             = 209
+       SYS_SHUTDOWN               = 210
+       SYS_SENDMSG                = 211
+       SYS_RECVMSG                = 212
+       SYS_READAHEAD              = 213
+       SYS_BRK                    = 214
+       SYS_MUNMAP                 = 215
+       SYS_MREMAP                 = 216
+       SYS_ADD_KEY                = 217
+       SYS_REQUEST_KEY            = 218
+       SYS_KEYCTL                 = 219
+       SYS_CLONE                  = 220
+       SYS_EXECVE                 = 221
+       SYS_MMAP                   = 222
+       SYS_FADVISE64              = 223
+       SYS_SWAPON                 = 224
+       SYS_SWAPOFF                = 225
+       SYS_MPROTECT               = 226
+       SYS_MSYNC                  = 227
+       SYS_MLOCK                  = 228
+       SYS_MUNLOCK                = 229
+       SYS_MLOCKALL               = 230
+       SYS_MUNLOCKALL             = 231
+       SYS_MINCORE                = 232
+       SYS_MADVISE                = 233
+       SYS_REMAP_FILE_PAGES       = 234
+       SYS_MBIND                  = 235
+       SYS_GET_MEMPOLICY          = 236
+       SYS_SET_MEMPOLICY          = 237
+       SYS_MIGRATE_PAGES          = 238
+       SYS_MOVE_PAGES             = 239
+       SYS_RT_TGSIGQUEUEINFO      = 240
+       SYS_PERF_EVENT_OPEN        = 241
+       SYS_ACCEPT4                = 242
+       SYS_RECVMMSG               = 243
+       SYS_ARCH_SPECIFIC_SYSCALL  = 244
+       SYS_WAIT4                  = 260
+       SYS_PRLIMIT64              = 261
+       SYS_FANOTIFY_INIT          = 262
+       SYS_FANOTIFY_MARK          = 263
+       SYS_NAME_TO_HANDLE_AT      = 264
+       SYS_OPEN_BY_HANDLE_AT      = 265
+       SYS_CLOCK_ADJTIME          = 266
+       SYS_SYNCFS                 = 267
+       SYS_SETNS                  = 268
+       SYS_SENDMMSG               = 269
+       SYS_PROCESS_VM_READV       = 270
+       SYS_PROCESS_VM_WRITEV      = 271
+       SYS_KCMP                   = 272
+       SYS_FINIT_MODULE           = 273
+       SYS_SCHED_SETATTR          = 274
+       SYS_SCHED_GETATTR          = 275
+       SYS_RENAMEAT2              = 276
+       SYS_SECCOMP                = 277
+)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go
new file mode 100644 (file)
index 0000000..5ffe1c7
--- /dev/null
@@ -0,0 +1,327 @@
+// mksysnum_linux.pl /usr/include/asm/unistd.h
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build mips64,linux
+
+package unix
+
+const (
+       SYS_READ                   = 5000
+       SYS_WRITE                  = 5001
+       SYS_OPEN                   = 5002
+       SYS_CLOSE                  = 5003
+       SYS_STAT                   = 5004
+       SYS_FSTAT                  = 5005
+       SYS_LSTAT                  = 5006
+       SYS_POLL                   = 5007
+       SYS_LSEEK                  = 5008
+       SYS_MMAP                   = 5009
+       SYS_MPROTECT               = 5010
+       SYS_MUNMAP                 = 5011
+       SYS_BRK                    = 5012
+       SYS_RT_SIGACTION           = 5013
+       SYS_RT_SIGPROCMASK         = 5014
+       SYS_IOCTL                  = 5015
+       SYS_PREAD64                = 5016
+       SYS_PWRITE64               = 5017
+       SYS_READV                  = 5018
+       SYS_WRITEV                 = 5019
+       SYS_ACCESS                 = 5020
+       SYS_PIPE                   = 5021
+       SYS__NEWSELECT             = 5022
+       SYS_SCHED_YIELD            = 5023
+       SYS_MREMAP                 = 5024
+       SYS_MSYNC                  = 5025
+       SYS_MINCORE                = 5026
+       SYS_MADVISE                = 5027
+       SYS_SHMGET                 = 5028
+       SYS_SHMAT                  = 5029
+       SYS_SHMCTL                 = 5030
+       SYS_DUP                    = 5031
+       SYS_DUP2                   = 5032
+       SYS_PAUSE                  = 5033
+       SYS_NANOSLEEP              = 5034
+       SYS_GETITIMER              = 5035
+       SYS_SETITIMER              = 5036
+       SYS_ALARM                  = 5037
+       SYS_GETPID                 = 5038
+       SYS_SENDFILE               = 5039
+       SYS_SOCKET                 = 5040
+       SYS_CONNECT                = 5041
+       SYS_ACCEPT                 = 5042
+       SYS_SENDTO                 = 5043
+       SYS_RECVFROM               = 5044
+       SYS_SENDMSG                = 5045
+       SYS_RECVMSG                = 5046
+       SYS_SHUTDOWN               = 5047
+       SYS_BIND                   = 5048
+       SYS_LISTEN                 = 5049
+       SYS_GETSOCKNAME            = 5050
+       SYS_GETPEERNAME            = 5051
+       SYS_SOCKETPAIR             = 5052
+       SYS_SETSOCKOPT             = 5053
+       SYS_GETSOCKOPT             = 5054
+       SYS_CLONE                  = 5055
+       SYS_FORK                   = 5056
+       SYS_EXECVE                 = 5057
+       SYS_EXIT                   = 5058
+       SYS_WAIT4                  = 5059
+       SYS_KILL                   = 5060
+       SYS_UNAME                  = 5061
+       SYS_SEMGET                 = 5062
+       SYS_SEMOP                  = 5063
+       SYS_SEMCTL                 = 5064
+       SYS_SHMDT                  = 5065
+       SYS_MSGGET                 = 5066
+       SYS_MSGSND                 = 5067
+       SYS_MSGRCV                 = 5068
+       SYS_MSGCTL                 = 5069
+       SYS_FCNTL                  = 5070
+       SYS_FLOCK                  = 5071
+       SYS_FSYNC                  = 5072
+       SYS_FDATASYNC              = 5073
+       SYS_TRUNCATE               = 5074
+       SYS_FTRUNCATE              = 5075
+       SYS_GETDENTS               = 5076
+       SYS_GETCWD                 = 5077
+       SYS_CHDIR                  = 5078
+       SYS_FCHDIR                 = 5079
+       SYS_RENAME                 = 5080
+       SYS_MKDIR                  = 5081
+       SYS_RMDIR                  = 5082
+       SYS_CREAT                  = 5083
+       SYS_LINK                   = 5084
+       SYS_UNLINK                 = 5085
+       SYS_SYMLINK                = 5086
+       SYS_READLINK               = 5087
+       SYS_CHMOD                  = 5088
+       SYS_FCHMOD                 = 5089
+       SYS_CHOWN                  = 5090
+       SYS_FCHOWN                 = 5091
+       SYS_LCHOWN                 = 5092
+       SYS_UMASK                  = 5093
+       SYS_GETTIMEOFDAY           = 5094
+       SYS_GETRLIMIT              = 5095
+       SYS_GETRUSAGE              = 5096
+       SYS_SYSINFO                = 5097
+       SYS_TIMES                  = 5098
+       SYS_PTRACE                 = 5099
+       SYS_GETUID                 = 5100
+       SYS_SYSLOG                 = 5101
+       SYS_GETGID                 = 5102
+       SYS_SETUID                 = 5103
+       SYS_SETGID                 = 5104
+       SYS_GETEUID                = 5105
+       SYS_GETEGID                = 5106
+       SYS_SETPGID                = 5107
+       SYS_GETPPID                = 5108
+       SYS_GETPGRP                = 5109
+       SYS_SETSID                 = 5110
+       SYS_SETREUID               = 5111
+       SYS_SETREGID               = 5112
+       SYS_GETGROUPS              = 5113
+       SYS_SETGROUPS              = 5114
+       SYS_SETRESUID              = 5115
+       SYS_GETRESUID              = 5116
+       SYS_SETRESGID              = 5117
+       SYS_GETRESGID              = 5118
+       SYS_GETPGID                = 5119
+       SYS_SETFSUID               = 5120
+       SYS_SETFSGID               = 5121
+       SYS_GETSID                 = 5122
+       SYS_CAPGET                 = 5123
+       SYS_CAPSET                 = 5124
+       SYS_RT_SIGPENDING          = 5125
+       SYS_RT_SIGTIMEDWAIT        = 5126
+       SYS_RT_SIGQUEUEINFO        = 5127
+       SYS_RT_SIGSUSPEND          = 5128
+       SYS_SIGALTSTACK            = 5129
+       SYS_UTIME                  = 5130
+       SYS_MKNOD                  = 5131
+       SYS_PERSONALITY            = 5132
+       SYS_USTAT                  = 5133
+       SYS_STATFS                 = 5134
+       SYS_FSTATFS                = 5135
+       SYS_SYSFS                  = 5136
+       SYS_GETPRIORITY            = 5137
+       SYS_SETPRIORITY            = 5138
+       SYS_SCHED_SETPARAM         = 5139
+       SYS_SCHED_GETPARAM         = 5140
+       SYS_SCHED_SETSCHEDULER     = 5141
+       SYS_SCHED_GETSCHEDULER     = 5142
+       SYS_SCHED_GET_PRIORITY_MAX = 5143
+       SYS_SCHED_GET_PRIORITY_MIN = 5144
+       SYS_SCHED_RR_GET_INTERVAL  = 5145
+       SYS_MLOCK                  = 5146
+       SYS_MUNLOCK                = 5147
+       SYS_MLOCKALL               = 5148
+       SYS_MUNLOCKALL             = 5149
+       SYS_VHANGUP                = 5150
+       SYS_PIVOT_ROOT             = 5151
+       SYS__SYSCTL                = 5152
+       SYS_PRCTL                  = 5153
+       SYS_ADJTIMEX               = 5154
+       SYS_SETRLIMIT              = 5155
+       SYS_CHROOT                 = 5156
+       SYS_SYNC                   = 5157
+       SYS_ACCT                   = 5158
+       SYS_SETTIMEOFDAY           = 5159
+       SYS_MOUNT                  = 5160
+       SYS_UMOUNT2                = 5161
+       SYS_SWAPON                 = 5162
+       SYS_SWAPOFF                = 5163
+       SYS_REBOOT                 = 5164
+       SYS_SETHOSTNAME            = 5165
+       SYS_SETDOMAINNAME          = 5166
+       SYS_CREATE_MODULE          = 5167
+       SYS_INIT_MODULE            = 5168
+       SYS_DELETE_MODULE          = 5169
+       SYS_GET_KERNEL_SYMS        = 5170
+       SYS_QUERY_MODULE           = 5171
+       SYS_QUOTACTL               = 5172
+       SYS_NFSSERVCTL             = 5173
+       SYS_GETPMSG                = 5174
+       SYS_PUTPMSG                = 5175
+       SYS_AFS_SYSCALL            = 5176
+       SYS_RESERVED177            = 5177
+       SYS_GETTID                 = 5178
+       SYS_READAHEAD              = 5179
+       SYS_SETXATTR               = 5180
+       SYS_LSETXATTR              = 5181
+       SYS_FSETXATTR              = 5182
+       SYS_GETXATTR               = 5183
+       SYS_LGETXATTR              = 5184
+       SYS_FGETXATTR              = 5185
+       SYS_LISTXATTR              = 5186
+       SYS_LLISTXATTR             = 5187
+       SYS_FLISTXATTR             = 5188
+       SYS_REMOVEXATTR            = 5189
+       SYS_LREMOVEXATTR           = 5190
+       SYS_FREMOVEXATTR           = 5191
+       SYS_TKILL                  = 5192
+       SYS_RESERVED193            = 5193
+       SYS_FUTEX                  = 5194
+       SYS_SCHED_SETAFFINITY      = 5195
+       SYS_SCHED_GETAFFINITY      = 5196
+       SYS_CACHEFLUSH             = 5197
+       SYS_CACHECTL               = 5198
+       SYS_SYSMIPS                = 5199
+       SYS_IO_SETUP               = 5200
+       SYS_IO_DESTROY             = 5201
+       SYS_IO_GETEVENTS           = 5202
+       SYS_IO_SUBMIT              = 5203
+       SYS_IO_CANCEL              = 5204
+       SYS_EXIT_GROUP             = 5205
+       SYS_LOOKUP_DCOOKIE         = 5206
+       SYS_EPOLL_CREATE           = 5207
+       SYS_EPOLL_CTL              = 5208
+       SYS_EPOLL_WAIT             = 5209
+       SYS_REMAP_FILE_PAGES       = 5210
+       SYS_RT_SIGRETURN           = 5211
+       SYS_SET_TID_ADDRESS        = 5212
+       SYS_RESTART_SYSCALL        = 5213
+       SYS_SEMTIMEDOP             = 5214
+       SYS_FADVISE64              = 5215
+       SYS_TIMER_CREATE           = 5216
+       SYS_TIMER_SETTIME          = 5217
+       SYS_TIMER_GETTIME          = 5218
+       SYS_TIMER_GETOVERRUN       = 5219
+       SYS_TIMER_DELETE           = 5220
+       SYS_CLOCK_SETTIME          = 5221
+       SYS_CLOCK_GETTIME          = 5222
+       SYS_CLOCK_GETRES           = 5223
+       SYS_CLOCK_NANOSLEEP        = 5224
+       SYS_TGKILL                 = 5225
+       SYS_UTIMES                 = 5226
+       SYS_MBIND                  = 5227
+       SYS_GET_MEMPOLICY          = 5228
+       SYS_SET_MEMPOLICY          = 5229
+       SYS_MQ_OPEN                = 5230
+       SYS_MQ_UNLINK              = 5231
+       SYS_MQ_TIMEDSEND           = 5232
+       SYS_MQ_TIMEDRECEIVE        = 5233
+       SYS_MQ_NOTIFY              = 5234
+       SYS_MQ_GETSETATTR          = 5235
+       SYS_VSERVER                = 5236
+       SYS_WAITID                 = 5237
+       SYS_ADD_KEY                = 5239
+       SYS_REQUEST_KEY            = 5240
+       SYS_KEYCTL                 = 5241
+       SYS_SET_THREAD_AREA        = 5242
+       SYS_INOTIFY_INIT           = 5243
+       SYS_INOTIFY_ADD_WATCH      = 5244
+       SYS_INOTIFY_RM_WATCH       = 5245
+       SYS_MIGRATE_PAGES          = 5246
+       SYS_OPENAT                 = 5247
+       SYS_MKDIRAT                = 5248
+       SYS_MKNODAT                = 5249
+       SYS_FCHOWNAT               = 5250
+       SYS_FUTIMESAT              = 5251
+       SYS_NEWFSTATAT             = 5252
+       SYS_UNLINKAT               = 5253
+       SYS_RENAMEAT               = 5254
+       SYS_LINKAT                 = 5255
+       SYS_SYMLINKAT              = 5256
+       SYS_READLINKAT             = 5257
+       SYS_FCHMODAT               = 5258
+       SYS_FACCESSAT              = 5259
+       SYS_PSELECT6               = 5260
+       SYS_PPOLL                  = 5261
+       SYS_UNSHARE                = 5262
+       SYS_SPLICE                 = 5263
+       SYS_SYNC_FILE_RANGE        = 5264
+       SYS_TEE                    = 5265
+       SYS_VMSPLICE               = 5266
+       SYS_MOVE_PAGES             = 5267
+       SYS_SET_ROBUST_LIST        = 5268
+       SYS_GET_ROBUST_LIST        = 5269
+       SYS_KEXEC_LOAD             = 5270
+       SYS_GETCPU                 = 5271
+       SYS_EPOLL_PWAIT            = 5272
+       SYS_IOPRIO_SET             = 5273
+       SYS_IOPRIO_GET             = 5274
+       SYS_UTIMENSAT              = 5275
+       SYS_SIGNALFD               = 5276
+       SYS_TIMERFD                = 5277
+       SYS_EVENTFD                = 5278
+       SYS_FALLOCATE              = 5279
+       SYS_TIMERFD_CREATE         = 5280
+       SYS_TIMERFD_GETTIME        = 5281
+       SYS_TIMERFD_SETTIME        = 5282
+       SYS_SIGNALFD4              = 5283
+       SYS_EVENTFD2               = 5284
+       SYS_EPOLL_CREATE1          = 5285
+       SYS_DUP3                   = 5286
+       SYS_PIPE2                  = 5287
+       SYS_INOTIFY_INIT1          = 5288
+       SYS_PREADV                 = 5289
+       SYS_PWRITEV                = 5290
+       SYS_RT_TGSIGQUEUEINFO      = 5291
+       SYS_PERF_EVENT_OPEN        = 5292
+       SYS_ACCEPT4                = 5293
+       SYS_RECVMMSG               = 5294
+       SYS_FANOTIFY_INIT          = 5295
+       SYS_FANOTIFY_MARK          = 5296
+       SYS_PRLIMIT64              = 5297
+       SYS_NAME_TO_HANDLE_AT      = 5298
+       SYS_OPEN_BY_HANDLE_AT      = 5299
+       SYS_CLOCK_ADJTIME          = 5300
+       SYS_SYNCFS                 = 5301
+       SYS_SENDMMSG               = 5302
+       SYS_SETNS                  = 5303
+       SYS_PROCESS_VM_READV       = 5304
+       SYS_PROCESS_VM_WRITEV      = 5305
+       SYS_KCMP                   = 5306
+       SYS_FINIT_MODULE           = 5307
+       SYS_GETDENTS64             = 5308
+       SYS_SCHED_SETATTR          = 5309
+       SYS_SCHED_GETATTR          = 5310
+       SYS_RENAMEAT2              = 5311
+       SYS_SECCOMP                = 5312
+       SYS_GETRANDOM              = 5313
+       SYS_MEMFD_CREATE           = 5314
+       SYS_BPF                    = 5315
+       SYS_EXECVEAT               = 5316
+       SYS_USERFAULTFD            = 5317
+       SYS_MEMBARRIER             = 5318
+)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go
new file mode 100644 (file)
index 0000000..d192b94
--- /dev/null
@@ -0,0 +1,327 @@
+// mksysnum_linux.pl /usr/include/asm/unistd.h
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build mips64le,linux
+
+package unix
+
+const (
+       SYS_READ                   = 5000
+       SYS_WRITE                  = 5001
+       SYS_OPEN                   = 5002
+       SYS_CLOSE                  = 5003
+       SYS_STAT                   = 5004
+       SYS_FSTAT                  = 5005
+       SYS_LSTAT                  = 5006
+       SYS_POLL                   = 5007
+       SYS_LSEEK                  = 5008
+       SYS_MMAP                   = 5009
+       SYS_MPROTECT               = 5010
+       SYS_MUNMAP                 = 5011
+       SYS_BRK                    = 5012
+       SYS_RT_SIGACTION           = 5013
+       SYS_RT_SIGPROCMASK         = 5014
+       SYS_IOCTL                  = 5015
+       SYS_PREAD64                = 5016
+       SYS_PWRITE64               = 5017
+       SYS_READV                  = 5018
+       SYS_WRITEV                 = 5019
+       SYS_ACCESS                 = 5020
+       SYS_PIPE                   = 5021
+       SYS__NEWSELECT             = 5022
+       SYS_SCHED_YIELD            = 5023
+       SYS_MREMAP                 = 5024
+       SYS_MSYNC                  = 5025
+       SYS_MINCORE                = 5026
+       SYS_MADVISE                = 5027
+       SYS_SHMGET                 = 5028
+       SYS_SHMAT                  = 5029
+       SYS_SHMCTL                 = 5030
+       SYS_DUP                    = 5031
+       SYS_DUP2                   = 5032
+       SYS_PAUSE                  = 5033
+       SYS_NANOSLEEP              = 5034
+       SYS_GETITIMER              = 5035
+       SYS_SETITIMER              = 5036
+       SYS_ALARM                  = 5037
+       SYS_GETPID                 = 5038
+       SYS_SENDFILE               = 5039
+       SYS_SOCKET                 = 5040
+       SYS_CONNECT                = 5041
+       SYS_ACCEPT                 = 5042
+       SYS_SENDTO                 = 5043
+       SYS_RECVFROM               = 5044
+       SYS_SENDMSG                = 5045
+       SYS_RECVMSG                = 5046
+       SYS_SHUTDOWN               = 5047
+       SYS_BIND                   = 5048
+       SYS_LISTEN                 = 5049
+       SYS_GETSOCKNAME            = 5050
+       SYS_GETPEERNAME            = 5051
+       SYS_SOCKETPAIR             = 5052
+       SYS_SETSOCKOPT             = 5053
+       SYS_GETSOCKOPT             = 5054
+       SYS_CLONE                  = 5055
+       SYS_FORK                   = 5056
+       SYS_EXECVE                 = 5057
+       SYS_EXIT                   = 5058
+       SYS_WAIT4                  = 5059
+       SYS_KILL                   = 5060
+       SYS_UNAME                  = 5061
+       SYS_SEMGET                 = 5062
+       SYS_SEMOP                  = 5063
+       SYS_SEMCTL                 = 5064
+       SYS_SHMDT                  = 5065
+       SYS_MSGGET                 = 5066
+       SYS_MSGSND                 = 5067
+       SYS_MSGRCV                 = 5068
+       SYS_MSGCTL                 = 5069
+       SYS_FCNTL                  = 5070
+       SYS_FLOCK                  = 5071
+       SYS_FSYNC                  = 5072
+       SYS_FDATASYNC              = 5073
+       SYS_TRUNCATE               = 5074
+       SYS_FTRUNCATE              = 5075
+       SYS_GETDENTS               = 5076
+       SYS_GETCWD                 = 5077
+       SYS_CHDIR                  = 5078
+       SYS_FCHDIR                 = 5079
+       SYS_RENAME                 = 5080
+       SYS_MKDIR                  = 5081
+       SYS_RMDIR                  = 5082
+       SYS_CREAT                  = 5083
+       SYS_LINK                   = 5084
+       SYS_UNLINK                 = 5085
+       SYS_SYMLINK                = 5086
+       SYS_READLINK               = 5087
+       SYS_CHMOD                  = 5088
+       SYS_FCHMOD                 = 5089
+       SYS_CHOWN                  = 5090
+       SYS_FCHOWN                 = 5091
+       SYS_LCHOWN                 = 5092
+       SYS_UMASK                  = 5093
+       SYS_GETTIMEOFDAY           = 5094
+       SYS_GETRLIMIT              = 5095
+       SYS_GETRUSAGE              = 5096
+       SYS_SYSINFO                = 5097
+       SYS_TIMES                  = 5098
+       SYS_PTRACE                 = 5099
+       SYS_GETUID                 = 5100
+       SYS_SYSLOG                 = 5101
+       SYS_GETGID                 = 5102
+       SYS_SETUID                 = 5103
+       SYS_SETGID                 = 5104
+       SYS_GETEUID                = 5105
+       SYS_GETEGID                = 5106
+       SYS_SETPGID                = 5107
+       SYS_GETPPID                = 5108
+       SYS_GETPGRP                = 5109
+       SYS_SETSID                 = 5110
+       SYS_SETREUID               = 5111
+       SYS_SETREGID               = 5112
+       SYS_GETGROUPS              = 5113
+       SYS_SETGROUPS              = 5114
+       SYS_SETRESUID              = 5115
+       SYS_GETRESUID              = 5116
+       SYS_SETRESGID              = 5117
+       SYS_GETRESGID              = 5118
+       SYS_GETPGID                = 5119
+       SYS_SETFSUID               = 5120
+       SYS_SETFSGID               = 5121
+       SYS_GETSID                 = 5122
+       SYS_CAPGET                 = 5123
+       SYS_CAPSET                 = 5124
+       SYS_RT_SIGPENDING          = 5125
+       SYS_RT_SIGTIMEDWAIT        = 5126
+       SYS_RT_SIGQUEUEINFO        = 5127
+       SYS_RT_SIGSUSPEND          = 5128
+       SYS_SIGALTSTACK            = 5129
+       SYS_UTIME                  = 5130
+       SYS_MKNOD                  = 5131
+       SYS_PERSONALITY            = 5132
+       SYS_USTAT                  = 5133
+       SYS_STATFS                 = 5134
+       SYS_FSTATFS                = 5135
+       SYS_SYSFS                  = 5136
+       SYS_GETPRIORITY            = 5137
+       SYS_SETPRIORITY            = 5138
+       SYS_SCHED_SETPARAM         = 5139
+       SYS_SCHED_GETPARAM         = 5140
+       SYS_SCHED_SETSCHEDULER     = 5141
+       SYS_SCHED_GETSCHEDULER     = 5142
+       SYS_SCHED_GET_PRIORITY_MAX = 5143
+       SYS_SCHED_GET_PRIORITY_MIN = 5144
+       SYS_SCHED_RR_GET_INTERVAL  = 5145
+       SYS_MLOCK                  = 5146
+       SYS_MUNLOCK                = 5147
+       SYS_MLOCKALL               = 5148
+       SYS_MUNLOCKALL             = 5149
+       SYS_VHANGUP                = 5150
+       SYS_PIVOT_ROOT             = 5151
+       SYS__SYSCTL                = 5152
+       SYS_PRCTL                  = 5153
+       SYS_ADJTIMEX               = 5154
+       SYS_SETRLIMIT              = 5155
+       SYS_CHROOT                 = 5156
+       SYS_SYNC                   = 5157
+       SYS_ACCT                   = 5158
+       SYS_SETTIMEOFDAY           = 5159
+       SYS_MOUNT                  = 5160
+       SYS_UMOUNT2                = 5161
+       SYS_SWAPON                 = 5162
+       SYS_SWAPOFF                = 5163
+       SYS_REBOOT                 = 5164
+       SYS_SETHOSTNAME            = 5165
+       SYS_SETDOMAINNAME          = 5166
+       SYS_CREATE_MODULE          = 5167
+       SYS_INIT_MODULE            = 5168
+       SYS_DELETE_MODULE          = 5169
+       SYS_GET_KERNEL_SYMS        = 5170
+       SYS_QUERY_MODULE           = 5171
+       SYS_QUOTACTL               = 5172
+       SYS_NFSSERVCTL             = 5173
+       SYS_GETPMSG                = 5174
+       SYS_PUTPMSG                = 5175
+       SYS_AFS_SYSCALL            = 5176
+       SYS_RESERVED177            = 5177
+       SYS_GETTID                 = 5178
+       SYS_READAHEAD              = 5179
+       SYS_SETXATTR               = 5180
+       SYS_LSETXATTR              = 5181
+       SYS_FSETXATTR              = 5182
+       SYS_GETXATTR               = 5183
+       SYS_LGETXATTR              = 5184
+       SYS_FGETXATTR              = 5185
+       SYS_LISTXATTR              = 5186
+       SYS_LLISTXATTR             = 5187
+       SYS_FLISTXATTR             = 5188
+       SYS_REMOVEXATTR            = 5189
+       SYS_LREMOVEXATTR           = 5190
+       SYS_FREMOVEXATTR           = 5191
+       SYS_TKILL                  = 5192
+       SYS_RESERVED193            = 5193
+       SYS_FUTEX                  = 5194
+       SYS_SCHED_SETAFFINITY      = 5195
+       SYS_SCHED_GETAFFINITY      = 5196
+       SYS_CACHEFLUSH             = 5197
+       SYS_CACHECTL               = 5198
+       SYS_SYSMIPS                = 5199
+       SYS_IO_SETUP               = 5200
+       SYS_IO_DESTROY             = 5201
+       SYS_IO_GETEVENTS           = 5202
+       SYS_IO_SUBMIT              = 5203
+       SYS_IO_CANCEL              = 5204
+       SYS_EXIT_GROUP             = 5205
+       SYS_LOOKUP_DCOOKIE         = 5206
+       SYS_EPOLL_CREATE           = 5207
+       SYS_EPOLL_CTL              = 5208
+       SYS_EPOLL_WAIT             = 5209
+       SYS_REMAP_FILE_PAGES       = 5210
+       SYS_RT_SIGRETURN           = 5211
+       SYS_SET_TID_ADDRESS        = 5212
+       SYS_RESTART_SYSCALL        = 5213
+       SYS_SEMTIMEDOP             = 5214
+       SYS_FADVISE64              = 5215
+       SYS_TIMER_CREATE           = 5216
+       SYS_TIMER_SETTIME          = 5217
+       SYS_TIMER_GETTIME          = 5218
+       SYS_TIMER_GETOVERRUN       = 5219
+       SYS_TIMER_DELETE           = 5220
+       SYS_CLOCK_SETTIME          = 5221
+       SYS_CLOCK_GETTIME          = 5222
+       SYS_CLOCK_GETRES           = 5223
+       SYS_CLOCK_NANOSLEEP        = 5224
+       SYS_TGKILL                 = 5225
+       SYS_UTIMES                 = 5226
+       SYS_MBIND                  = 5227
+       SYS_GET_MEMPOLICY          = 5228
+       SYS_SET_MEMPOLICY          = 5229
+       SYS_MQ_OPEN                = 5230
+       SYS_MQ_UNLINK              = 5231
+       SYS_MQ_TIMEDSEND           = 5232
+       SYS_MQ_TIMEDRECEIVE        = 5233
+       SYS_MQ_NOTIFY              = 5234
+       SYS_MQ_GETSETATTR          = 5235
+       SYS_VSERVER                = 5236
+       SYS_WAITID                 = 5237
+       SYS_ADD_KEY                = 5239
+       SYS_REQUEST_KEY            = 5240
+       SYS_KEYCTL                 = 5241
+       SYS_SET_THREAD_AREA        = 5242
+       SYS_INOTIFY_INIT           = 5243
+       SYS_INOTIFY_ADD_WATCH      = 5244
+       SYS_INOTIFY_RM_WATCH       = 5245
+       SYS_MIGRATE_PAGES          = 5246
+       SYS_OPENAT                 = 5247
+       SYS_MKDIRAT                = 5248
+       SYS_MKNODAT                = 5249
+       SYS_FCHOWNAT               = 5250
+       SYS_FUTIMESAT              = 5251
+       SYS_NEWFSTATAT             = 5252
+       SYS_UNLINKAT               = 5253
+       SYS_RENAMEAT               = 5254
+       SYS_LINKAT                 = 5255
+       SYS_SYMLINKAT              = 5256
+       SYS_READLINKAT             = 5257
+       SYS_FCHMODAT               = 5258
+       SYS_FACCESSAT              = 5259
+       SYS_PSELECT6               = 5260
+       SYS_PPOLL                  = 5261
+       SYS_UNSHARE                = 5262
+       SYS_SPLICE                 = 5263
+       SYS_SYNC_FILE_RANGE        = 5264
+       SYS_TEE                    = 5265
+       SYS_VMSPLICE               = 5266
+       SYS_MOVE_PAGES             = 5267
+       SYS_SET_ROBUST_LIST        = 5268
+       SYS_GET_ROBUST_LIST        = 5269
+       SYS_KEXEC_LOAD             = 5270
+       SYS_GETCPU                 = 5271
+       SYS_EPOLL_PWAIT            = 5272
+       SYS_IOPRIO_SET             = 5273
+       SYS_IOPRIO_GET             = 5274
+       SYS_UTIMENSAT              = 5275
+       SYS_SIGNALFD               = 5276
+       SYS_TIMERFD                = 5277
+       SYS_EVENTFD                = 5278
+       SYS_FALLOCATE              = 5279
+       SYS_TIMERFD_CREATE         = 5280
+       SYS_TIMERFD_GETTIME        = 5281
+       SYS_TIMERFD_SETTIME        = 5282
+       SYS_SIGNALFD4              = 5283
+       SYS_EVENTFD2               = 5284
+       SYS_EPOLL_CREATE1          = 5285
+       SYS_DUP3                   = 5286
+       SYS_PIPE2                  = 5287
+       SYS_INOTIFY_INIT1          = 5288
+       SYS_PREADV                 = 5289
+       SYS_PWRITEV                = 5290
+       SYS_RT_TGSIGQUEUEINFO      = 5291
+       SYS_PERF_EVENT_OPEN        = 5292
+       SYS_ACCEPT4                = 5293
+       SYS_RECVMMSG               = 5294
+       SYS_FANOTIFY_INIT          = 5295
+       SYS_FANOTIFY_MARK          = 5296
+       SYS_PRLIMIT64              = 5297
+       SYS_NAME_TO_HANDLE_AT      = 5298
+       SYS_OPEN_BY_HANDLE_AT      = 5299
+       SYS_CLOCK_ADJTIME          = 5300
+       SYS_SYNCFS                 = 5301
+       SYS_SENDMMSG               = 5302
+       SYS_SETNS                  = 5303
+       SYS_PROCESS_VM_READV       = 5304
+       SYS_PROCESS_VM_WRITEV      = 5305
+       SYS_KCMP                   = 5306
+       SYS_FINIT_MODULE           = 5307
+       SYS_GETDENTS64             = 5308
+       SYS_SCHED_SETATTR          = 5309
+       SYS_SCHED_GETATTR          = 5310
+       SYS_RENAMEAT2              = 5311
+       SYS_SECCOMP                = 5312
+       SYS_GETRANDOM              = 5313
+       SYS_MEMFD_CREATE           = 5314
+       SYS_BPF                    = 5315
+       SYS_EXECVEAT               = 5316
+       SYS_USERFAULTFD            = 5317
+       SYS_MEMBARRIER             = 5318
+)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go
new file mode 100644 (file)
index 0000000..e1b08f0
--- /dev/null
@@ -0,0 +1,360 @@
+// mksysnum_linux.pl /usr/include/asm/unistd.h
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build ppc64,linux
+
+package unix
+
+const (
+       SYS_RESTART_SYSCALL        = 0
+       SYS_EXIT                   = 1
+       SYS_FORK                   = 2
+       SYS_READ                   = 3
+       SYS_WRITE                  = 4
+       SYS_OPEN                   = 5
+       SYS_CLOSE                  = 6
+       SYS_WAITPID                = 7
+       SYS_CREAT                  = 8
+       SYS_LINK                   = 9
+       SYS_UNLINK                 = 10
+       SYS_EXECVE                 = 11
+       SYS_CHDIR                  = 12
+       SYS_TIME                   = 13
+       SYS_MKNOD                  = 14
+       SYS_CHMOD                  = 15
+       SYS_LCHOWN                 = 16
+       SYS_BREAK                  = 17
+       SYS_OLDSTAT                = 18
+       SYS_LSEEK                  = 19
+       SYS_GETPID                 = 20
+       SYS_MOUNT                  = 21
+       SYS_UMOUNT                 = 22
+       SYS_SETUID                 = 23
+       SYS_GETUID                 = 24
+       SYS_STIME                  = 25
+       SYS_PTRACE                 = 26
+       SYS_ALARM                  = 27
+       SYS_OLDFSTAT               = 28
+       SYS_PAUSE                  = 29
+       SYS_UTIME                  = 30
+       SYS_STTY                   = 31
+       SYS_GTTY                   = 32
+       SYS_ACCESS                 = 33
+       SYS_NICE                   = 34
+       SYS_FTIME                  = 35
+       SYS_SYNC                   = 36
+       SYS_KILL                   = 37
+       SYS_RENAME                 = 38
+       SYS_MKDIR                  = 39
+       SYS_RMDIR                  = 40
+       SYS_DUP                    = 41
+       SYS_PIPE                   = 42
+       SYS_TIMES                  = 43
+       SYS_PROF                   = 44
+       SYS_BRK                    = 45
+       SYS_SETGID                 = 46
+       SYS_GETGID                 = 47
+       SYS_SIGNAL                 = 48
+       SYS_GETEUID                = 49
+       SYS_GETEGID                = 50
+       SYS_ACCT                   = 51
+       SYS_UMOUNT2                = 52
+       SYS_LOCK                   = 53
+       SYS_IOCTL                  = 54
+       SYS_FCNTL                  = 55
+       SYS_MPX                    = 56
+       SYS_SETPGID                = 57
+       SYS_ULIMIT                 = 58
+       SYS_OLDOLDUNAME            = 59
+       SYS_UMASK                  = 60
+       SYS_CHROOT                 = 61
+       SYS_USTAT                  = 62
+       SYS_DUP2                   = 63
+       SYS_GETPPID                = 64
+       SYS_GETPGRP                = 65
+       SYS_SETSID                 = 66
+       SYS_SIGACTION              = 67
+       SYS_SGETMASK               = 68
+       SYS_SSETMASK               = 69
+       SYS_SETREUID               = 70
+       SYS_SETREGID               = 71
+       SYS_SIGSUSPEND             = 72
+       SYS_SIGPENDING             = 73
+       SYS_SETHOSTNAME            = 74
+       SYS_SETRLIMIT              = 75
+       SYS_GETRLIMIT              = 76
+       SYS_GETRUSAGE              = 77
+       SYS_GETTIMEOFDAY           = 78
+       SYS_SETTIMEOFDAY           = 79
+       SYS_GETGROUPS              = 80
+       SYS_SETGROUPS              = 81
+       SYS_SELECT                 = 82
+       SYS_SYMLINK                = 83
+       SYS_OLDLSTAT               = 84
+       SYS_READLINK               = 85
+       SYS_USELIB                 = 86
+       SYS_SWAPON                 = 87
+       SYS_REBOOT                 = 88
+       SYS_READDIR                = 89
+       SYS_MMAP                   = 90
+       SYS_MUNMAP                 = 91
+       SYS_TRUNCATE               = 92
+       SYS_FTRUNCATE              = 93
+       SYS_FCHMOD                 = 94
+       SYS_FCHOWN                 = 95
+       SYS_GETPRIORITY            = 96
+       SYS_SETPRIORITY            = 97
+       SYS_PROFIL                 = 98
+       SYS_STATFS                 = 99
+       SYS_FSTATFS                = 100
+       SYS_IOPERM                 = 101
+       SYS_SOCKETCALL             = 102
+       SYS_SYSLOG                 = 103
+       SYS_SETITIMER              = 104
+       SYS_GETITIMER              = 105
+       SYS_STAT                   = 106
+       SYS_LSTAT                  = 107
+       SYS_FSTAT                  = 108
+       SYS_OLDUNAME               = 109
+       SYS_IOPL                   = 110
+       SYS_VHANGUP                = 111
+       SYS_IDLE                   = 112
+       SYS_VM86                   = 113
+       SYS_WAIT4                  = 114
+       SYS_SWAPOFF                = 115
+       SYS_SYSINFO                = 116
+       SYS_IPC                    = 117
+       SYS_FSYNC                  = 118
+       SYS_SIGRETURN              = 119
+       SYS_CLONE                  = 120
+       SYS_SETDOMAINNAME          = 121
+       SYS_UNAME                  = 122
+       SYS_MODIFY_LDT             = 123
+       SYS_ADJTIMEX               = 124
+       SYS_MPROTECT               = 125
+       SYS_SIGPROCMASK            = 126
+       SYS_CREATE_MODULE          = 127
+       SYS_INIT_MODULE            = 128
+       SYS_DELETE_MODULE          = 129
+       SYS_GET_KERNEL_SYMS        = 130
+       SYS_QUOTACTL               = 131
+       SYS_GETPGID                = 132
+       SYS_FCHDIR                 = 133
+       SYS_BDFLUSH                = 134
+       SYS_SYSFS                  = 135
+       SYS_PERSONALITY            = 136
+       SYS_AFS_SYSCALL            = 137
+       SYS_SETFSUID               = 138
+       SYS_SETFSGID               = 139
+       SYS__LLSEEK                = 140
+       SYS_GETDENTS               = 141
+       SYS__NEWSELECT             = 142
+       SYS_FLOCK                  = 143
+       SYS_MSYNC                  = 144
+       SYS_READV                  = 145
+       SYS_WRITEV                 = 146
+       SYS_GETSID                 = 147
+       SYS_FDATASYNC              = 148
+       SYS__SYSCTL                = 149
+       SYS_MLOCK                  = 150
+       SYS_MUNLOCK                = 151
+       SYS_MLOCKALL               = 152
+       SYS_MUNLOCKALL             = 153
+       SYS_SCHED_SETPARAM         = 154
+       SYS_SCHED_GETPARAM         = 155
+       SYS_SCHED_SETSCHEDULER     = 156
+       SYS_SCHED_GETSCHEDULER     = 157
+       SYS_SCHED_YIELD            = 158
+       SYS_SCHED_GET_PRIORITY_MAX = 159
+       SYS_SCHED_GET_PRIORITY_MIN = 160
+       SYS_SCHED_RR_GET_INTERVAL  = 161
+       SYS_NANOSLEEP              = 162
+       SYS_MREMAP                 = 163
+       SYS_SETRESUID              = 164
+       SYS_GETRESUID              = 165
+       SYS_QUERY_MODULE           = 166
+       SYS_POLL                   = 167
+       SYS_NFSSERVCTL             = 168
+       SYS_SETRESGID              = 169
+       SYS_GETRESGID              = 170
+       SYS_PRCTL                  = 171
+       SYS_RT_SIGRETURN           = 172
+       SYS_RT_SIGACTION           = 173
+       SYS_RT_SIGPROCMASK         = 174
+       SYS_RT_SIGPENDING          = 175
+       SYS_RT_SIGTIMEDWAIT        = 176
+       SYS_RT_SIGQUEUEINFO        = 177
+       SYS_RT_SIGSUSPEND          = 178
+       SYS_PREAD64                = 179
+       SYS_PWRITE64               = 180
+       SYS_CHOWN                  = 181
+       SYS_GETCWD                 = 182
+       SYS_CAPGET                 = 183
+       SYS_CAPSET                 = 184
+       SYS_SIGALTSTACK            = 185
+       SYS_SENDFILE               = 186
+       SYS_GETPMSG                = 187
+       SYS_PUTPMSG                = 188
+       SYS_VFORK                  = 189
+       SYS_UGETRLIMIT             = 190
+       SYS_READAHEAD              = 191
+       SYS_PCICONFIG_READ         = 198
+       SYS_PCICONFIG_WRITE        = 199
+       SYS_PCICONFIG_IOBASE       = 200
+       SYS_MULTIPLEXER            = 201
+       SYS_GETDENTS64             = 202
+       SYS_PIVOT_ROOT             = 203
+       SYS_MADVISE                = 205
+       SYS_MINCORE                = 206
+       SYS_GETTID                 = 207
+       SYS_TKILL                  = 208
+       SYS_SETXATTR               = 209
+       SYS_LSETXATTR              = 210
+       SYS_FSETXATTR              = 211
+       SYS_GETXATTR               = 212
+       SYS_LGETXATTR              = 213
+       SYS_FGETXATTR              = 214
+       SYS_LISTXATTR              = 215
+       SYS_LLISTXATTR             = 216
+       SYS_FLISTXATTR             = 217
+       SYS_REMOVEXATTR            = 218
+       SYS_LREMOVEXATTR           = 219
+       SYS_FREMOVEXATTR           = 220
+       SYS_FUTEX                  = 221
+       SYS_SCHED_SETAFFINITY      = 222
+       SYS_SCHED_GETAFFINITY      = 223
+       SYS_TUXCALL                = 225
+       SYS_IO_SETUP               = 227
+       SYS_IO_DESTROY             = 228
+       SYS_IO_GETEVENTS           = 229
+       SYS_IO_SUBMIT              = 230
+       SYS_IO_CANCEL              = 231
+       SYS_SET_TID_ADDRESS        = 232
+       SYS_FADVISE64              = 233
+       SYS_EXIT_GROUP             = 234
+       SYS_LOOKUP_DCOOKIE         = 235
+       SYS_EPOLL_CREATE           = 236
+       SYS_EPOLL_CTL              = 237
+       SYS_EPOLL_WAIT             = 238
+       SYS_REMAP_FILE_PAGES       = 239
+       SYS_TIMER_CREATE           = 240
+       SYS_TIMER_SETTIME          = 241
+       SYS_TIMER_GETTIME          = 242
+       SYS_TIMER_GETOVERRUN       = 243
+       SYS_TIMER_DELETE           = 244
+       SYS_CLOCK_SETTIME          = 245
+       SYS_CLOCK_GETTIME          = 246
+       SYS_CLOCK_GETRES           = 247
+       SYS_CLOCK_NANOSLEEP        = 248
+       SYS_SWAPCONTEXT            = 249
+       SYS_TGKILL                 = 250
+       SYS_UTIMES                 = 251
+       SYS_STATFS64               = 252
+       SYS_FSTATFS64              = 253
+       SYS_RTAS                   = 255
+       SYS_SYS_DEBUG_SETCONTEXT   = 256
+       SYS_MIGRATE_PAGES          = 258
+       SYS_MBIND                  = 259
+       SYS_GET_MEMPOLICY          = 260
+       SYS_SET_MEMPOLICY          = 261
+       SYS_MQ_OPEN                = 262
+       SYS_MQ_UNLINK              = 263
+       SYS_MQ_TIMEDSEND           = 264
+       SYS_MQ_TIMEDRECEIVE        = 265
+       SYS_MQ_NOTIFY              = 266
+       SYS_MQ_GETSETATTR          = 267
+       SYS_KEXEC_LOAD             = 268
+       SYS_ADD_KEY                = 269
+       SYS_REQUEST_KEY            = 270
+       SYS_KEYCTL                 = 271
+       SYS_WAITID                 = 272
+       SYS_IOPRIO_SET             = 273
+       SYS_IOPRIO_GET             = 274
+       SYS_INOTIFY_INIT           = 275
+       SYS_INOTIFY_ADD_WATCH      = 276
+       SYS_INOTIFY_RM_WATCH       = 277
+       SYS_SPU_RUN                = 278
+       SYS_SPU_CREATE             = 279
+       SYS_PSELECT6               = 280
+       SYS_PPOLL                  = 281
+       SYS_UNSHARE                = 282
+       SYS_SPLICE                 = 283
+       SYS_TEE                    = 284
+       SYS_VMSPLICE               = 285
+       SYS_OPENAT                 = 286
+       SYS_MKDIRAT                = 287
+       SYS_MKNODAT                = 288
+       SYS_FCHOWNAT               = 289
+       SYS_FUTIMESAT              = 290
+       SYS_NEWFSTATAT             = 291
+       SYS_UNLINKAT               = 292
+       SYS_RENAMEAT               = 293
+       SYS_LINKAT                 = 294
+       SYS_SYMLINKAT              = 295
+       SYS_READLINKAT             = 296
+       SYS_FCHMODAT               = 297
+       SYS_FACCESSAT              = 298
+       SYS_GET_ROBUST_LIST        = 299
+       SYS_SET_ROBUST_LIST        = 300
+       SYS_MOVE_PAGES             = 301
+       SYS_GETCPU                 = 302
+       SYS_EPOLL_PWAIT            = 303
+       SYS_UTIMENSAT              = 304
+       SYS_SIGNALFD               = 305
+       SYS_TIMERFD_CREATE         = 306
+       SYS_EVENTFD                = 307
+       SYS_SYNC_FILE_RANGE2       = 308
+       SYS_FALLOCATE              = 309
+       SYS_SUBPAGE_PROT           = 310
+       SYS_TIMERFD_SETTIME        = 311
+       SYS_TIMERFD_GETTIME        = 312
+       SYS_SIGNALFD4              = 313
+       SYS_EVENTFD2               = 314
+       SYS_EPOLL_CREATE1          = 315
+       SYS_DUP3                   = 316
+       SYS_PIPE2                  = 317
+       SYS_INOTIFY_INIT1          = 318
+       SYS_PERF_EVENT_OPEN        = 319
+       SYS_PREADV                 = 320
+       SYS_PWRITEV                = 321
+       SYS_RT_TGSIGQUEUEINFO      = 322
+       SYS_FANOTIFY_INIT          = 323
+       SYS_FANOTIFY_MARK          = 324
+       SYS_PRLIMIT64              = 325
+       SYS_SOCKET                 = 326
+       SYS_BIND                   = 327
+       SYS_CONNECT                = 328
+       SYS_LISTEN                 = 329
+       SYS_ACCEPT                 = 330
+       SYS_GETSOCKNAME            = 331
+       SYS_GETPEERNAME            = 332
+       SYS_SOCKETPAIR             = 333
+       SYS_SEND                   = 334
+       SYS_SENDTO                 = 335
+       SYS_RECV                   = 336
+       SYS_RECVFROM               = 337
+       SYS_SHUTDOWN               = 338
+       SYS_SETSOCKOPT             = 339
+       SYS_GETSOCKOPT             = 340
+       SYS_SENDMSG                = 341
+       SYS_RECVMSG                = 342
+       SYS_RECVMMSG               = 343
+       SYS_ACCEPT4                = 344
+       SYS_NAME_TO_HANDLE_AT      = 345
+       SYS_OPEN_BY_HANDLE_AT      = 346
+       SYS_CLOCK_ADJTIME          = 347
+       SYS_SYNCFS                 = 348
+       SYS_SENDMMSG               = 349
+       SYS_SETNS                  = 350
+       SYS_PROCESS_VM_READV       = 351
+       SYS_PROCESS_VM_WRITEV      = 352
+       SYS_FINIT_MODULE           = 353
+       SYS_KCMP                   = 354
+       SYS_SCHED_SETATTR          = 355
+       SYS_SCHED_GETATTR          = 356
+       SYS_RENAMEAT2              = 357
+       SYS_SECCOMP                = 358
+       SYS_GETRANDOM              = 359
+       SYS_MEMFD_CREATE           = 360
+       SYS_BPF                    = 361
+)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go
new file mode 100644 (file)
index 0000000..45e63f5
--- /dev/null
@@ -0,0 +1,353 @@
+// mksysnum_linux.pl /usr/include/powerpc64le-linux-gnu/asm/unistd.h
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build ppc64le,linux
+
+package unix
+
+const (
+       SYS_RESTART_SYSCALL        = 0
+       SYS_EXIT                   = 1
+       SYS_FORK                   = 2
+       SYS_READ                   = 3
+       SYS_WRITE                  = 4
+       SYS_OPEN                   = 5
+       SYS_CLOSE                  = 6
+       SYS_WAITPID                = 7
+       SYS_CREAT                  = 8
+       SYS_LINK                   = 9
+       SYS_UNLINK                 = 10
+       SYS_EXECVE                 = 11
+       SYS_CHDIR                  = 12
+       SYS_TIME                   = 13
+       SYS_MKNOD                  = 14
+       SYS_CHMOD                  = 15
+       SYS_LCHOWN                 = 16
+       SYS_BREAK                  = 17
+       SYS_OLDSTAT                = 18
+       SYS_LSEEK                  = 19
+       SYS_GETPID                 = 20
+       SYS_MOUNT                  = 21
+       SYS_UMOUNT                 = 22
+       SYS_SETUID                 = 23
+       SYS_GETUID                 = 24
+       SYS_STIME                  = 25
+       SYS_PTRACE                 = 26
+       SYS_ALARM                  = 27
+       SYS_OLDFSTAT               = 28
+       SYS_PAUSE                  = 29
+       SYS_UTIME                  = 30
+       SYS_STTY                   = 31
+       SYS_GTTY                   = 32
+       SYS_ACCESS                 = 33
+       SYS_NICE                   = 34
+       SYS_FTIME                  = 35
+       SYS_SYNC                   = 36
+       SYS_KILL                   = 37
+       SYS_RENAME                 = 38
+       SYS_MKDIR                  = 39
+       SYS_RMDIR                  = 40
+       SYS_DUP                    = 41
+       SYS_PIPE                   = 42
+       SYS_TIMES                  = 43
+       SYS_PROF                   = 44
+       SYS_BRK                    = 45
+       SYS_SETGID                 = 46
+       SYS_GETGID                 = 47
+       SYS_SIGNAL                 = 48
+       SYS_GETEUID                = 49
+       SYS_GETEGID                = 50
+       SYS_ACCT                   = 51
+       SYS_UMOUNT2                = 52
+       SYS_LOCK                   = 53
+       SYS_IOCTL                  = 54
+       SYS_FCNTL                  = 55
+       SYS_MPX                    = 56
+       SYS_SETPGID                = 57
+       SYS_ULIMIT                 = 58
+       SYS_OLDOLDUNAME            = 59
+       SYS_UMASK                  = 60
+       SYS_CHROOT                 = 61
+       SYS_USTAT                  = 62
+       SYS_DUP2                   = 63
+       SYS_GETPPID                = 64
+       SYS_GETPGRP                = 65
+       SYS_SETSID                 = 66
+       SYS_SIGACTION              = 67
+       SYS_SGETMASK               = 68
+       SYS_SSETMASK               = 69
+       SYS_SETREUID               = 70
+       SYS_SETREGID               = 71
+       SYS_SIGSUSPEND             = 72
+       SYS_SIGPENDING             = 73
+       SYS_SETHOSTNAME            = 74
+       SYS_SETRLIMIT              = 75
+       SYS_GETRLIMIT              = 76
+       SYS_GETRUSAGE              = 77
+       SYS_GETTIMEOFDAY           = 78
+       SYS_SETTIMEOFDAY           = 79
+       SYS_GETGROUPS              = 80
+       SYS_SETGROUPS              = 81
+       SYS_SELECT                 = 82
+       SYS_SYMLINK                = 83
+       SYS_OLDLSTAT               = 84
+       SYS_READLINK               = 85
+       SYS_USELIB                 = 86
+       SYS_SWAPON                 = 87
+       SYS_REBOOT                 = 88
+       SYS_READDIR                = 89
+       SYS_MMAP                   = 90
+       SYS_MUNMAP                 = 91
+       SYS_TRUNCATE               = 92
+       SYS_FTRUNCATE              = 93
+       SYS_FCHMOD                 = 94
+       SYS_FCHOWN                 = 95
+       SYS_GETPRIORITY            = 96
+       SYS_SETPRIORITY            = 97
+       SYS_PROFIL                 = 98
+       SYS_STATFS                 = 99
+       SYS_FSTATFS                = 100
+       SYS_IOPERM                 = 101
+       SYS_SOCKETCALL             = 102
+       SYS_SYSLOG                 = 103
+       SYS_SETITIMER              = 104
+       SYS_GETITIMER              = 105
+       SYS_STAT                   = 106
+       SYS_LSTAT                  = 107
+       SYS_FSTAT                  = 108
+       SYS_OLDUNAME               = 109
+       SYS_IOPL                   = 110
+       SYS_VHANGUP                = 111
+       SYS_IDLE                   = 112
+       SYS_VM86                   = 113
+       SYS_WAIT4                  = 114
+       SYS_SWAPOFF                = 115
+       SYS_SYSINFO                = 116
+       SYS_IPC                    = 117
+       SYS_FSYNC                  = 118
+       SYS_SIGRETURN              = 119
+       SYS_CLONE                  = 120
+       SYS_SETDOMAINNAME          = 121
+       SYS_UNAME                  = 122
+       SYS_MODIFY_LDT             = 123
+       SYS_ADJTIMEX               = 124
+       SYS_MPROTECT               = 125
+       SYS_SIGPROCMASK            = 126
+       SYS_CREATE_MODULE          = 127
+       SYS_INIT_MODULE            = 128
+       SYS_DELETE_MODULE          = 129
+       SYS_GET_KERNEL_SYMS        = 130
+       SYS_QUOTACTL               = 131
+       SYS_GETPGID                = 132
+       SYS_FCHDIR                 = 133
+       SYS_BDFLUSH                = 134
+       SYS_SYSFS                  = 135
+       SYS_PERSONALITY            = 136
+       SYS_AFS_SYSCALL            = 137
+       SYS_SETFSUID               = 138
+       SYS_SETFSGID               = 139
+       SYS__LLSEEK                = 140
+       SYS_GETDENTS               = 141
+       SYS__NEWSELECT             = 142
+       SYS_FLOCK                  = 143
+       SYS_MSYNC                  = 144
+       SYS_READV                  = 145
+       SYS_WRITEV                 = 146
+       SYS_GETSID                 = 147
+       SYS_FDATASYNC              = 148
+       SYS__SYSCTL                = 149
+       SYS_MLOCK                  = 150
+       SYS_MUNLOCK                = 151
+       SYS_MLOCKALL               = 152
+       SYS_MUNLOCKALL             = 153
+       SYS_SCHED_SETPARAM         = 154
+       SYS_SCHED_GETPARAM         = 155
+       SYS_SCHED_SETSCHEDULER     = 156
+       SYS_SCHED_GETSCHEDULER     = 157
+       SYS_SCHED_YIELD            = 158
+       SYS_SCHED_GET_PRIORITY_MAX = 159
+       SYS_SCHED_GET_PRIORITY_MIN = 160
+       SYS_SCHED_RR_GET_INTERVAL  = 161
+       SYS_NANOSLEEP              = 162
+       SYS_MREMAP                 = 163
+       SYS_SETRESUID              = 164
+       SYS_GETRESUID              = 165
+       SYS_QUERY_MODULE           = 166
+       SYS_POLL                   = 167
+       SYS_NFSSERVCTL             = 168
+       SYS_SETRESGID              = 169
+       SYS_GETRESGID              = 170
+       SYS_PRCTL                  = 171
+       SYS_RT_SIGRETURN           = 172
+       SYS_RT_SIGACTION           = 173
+       SYS_RT_SIGPROCMASK         = 174
+       SYS_RT_SIGPENDING          = 175
+       SYS_RT_SIGTIMEDWAIT        = 176
+       SYS_RT_SIGQUEUEINFO        = 177
+       SYS_RT_SIGSUSPEND          = 178
+       SYS_PREAD64                = 179
+       SYS_PWRITE64               = 180
+       SYS_CHOWN                  = 181
+       SYS_GETCWD                 = 182
+       SYS_CAPGET                 = 183
+       SYS_CAPSET                 = 184
+       SYS_SIGALTSTACK            = 185
+       SYS_SENDFILE               = 186
+       SYS_GETPMSG                = 187
+       SYS_PUTPMSG                = 188
+       SYS_VFORK                  = 189
+       SYS_UGETRLIMIT             = 190
+       SYS_READAHEAD              = 191
+       SYS_PCICONFIG_READ         = 198
+       SYS_PCICONFIG_WRITE        = 199
+       SYS_PCICONFIG_IOBASE       = 200
+       SYS_MULTIPLEXER            = 201
+       SYS_GETDENTS64             = 202
+       SYS_PIVOT_ROOT             = 203
+       SYS_MADVISE                = 205
+       SYS_MINCORE                = 206
+       SYS_GETTID                 = 207
+       SYS_TKILL                  = 208
+       SYS_SETXATTR               = 209
+       SYS_LSETXATTR              = 210
+       SYS_FSETXATTR              = 211
+       SYS_GETXATTR               = 212
+       SYS_LGETXATTR              = 213
+       SYS_FGETXATTR              = 214
+       SYS_LISTXATTR              = 215
+       SYS_LLISTXATTR             = 216
+       SYS_FLISTXATTR             = 217
+       SYS_REMOVEXATTR            = 218
+       SYS_LREMOVEXATTR           = 219
+       SYS_FREMOVEXATTR           = 220
+       SYS_FUTEX                  = 221
+       SYS_SCHED_SETAFFINITY      = 222
+       SYS_SCHED_GETAFFINITY      = 223
+       SYS_TUXCALL                = 225
+       SYS_IO_SETUP               = 227
+       SYS_IO_DESTROY             = 228
+       SYS_IO_GETEVENTS           = 229
+       SYS_IO_SUBMIT              = 230
+       SYS_IO_CANCEL              = 231
+       SYS_SET_TID_ADDRESS        = 232
+       SYS_FADVISE64              = 233
+       SYS_EXIT_GROUP             = 234
+       SYS_LOOKUP_DCOOKIE         = 235
+       SYS_EPOLL_CREATE           = 236
+       SYS_EPOLL_CTL              = 237
+       SYS_EPOLL_WAIT             = 238
+       SYS_REMAP_FILE_PAGES       = 239
+       SYS_TIMER_CREATE           = 240
+       SYS_TIMER_SETTIME          = 241
+       SYS_TIMER_GETTIME          = 242
+       SYS_TIMER_GETOVERRUN       = 243
+       SYS_TIMER_DELETE           = 244
+       SYS_CLOCK_SETTIME          = 245
+       SYS_CLOCK_GETTIME          = 246
+       SYS_CLOCK_GETRES           = 247
+       SYS_CLOCK_NANOSLEEP        = 248
+       SYS_SWAPCONTEXT            = 249
+       SYS_TGKILL                 = 250
+       SYS_UTIMES                 = 251
+       SYS_STATFS64               = 252
+       SYS_FSTATFS64              = 253
+       SYS_RTAS                   = 255
+       SYS_SYS_DEBUG_SETCONTEXT   = 256
+       SYS_MIGRATE_PAGES          = 258
+       SYS_MBIND                  = 259
+       SYS_GET_MEMPOLICY          = 260
+       SYS_SET_MEMPOLICY          = 261
+       SYS_MQ_OPEN                = 262
+       SYS_MQ_UNLINK              = 263
+       SYS_MQ_TIMEDSEND           = 264
+       SYS_MQ_TIMEDRECEIVE        = 265
+       SYS_MQ_NOTIFY              = 266
+       SYS_MQ_GETSETATTR          = 267
+       SYS_KEXEC_LOAD             = 268
+       SYS_ADD_KEY                = 269
+       SYS_REQUEST_KEY            = 270
+       SYS_KEYCTL                 = 271
+       SYS_WAITID                 = 272
+       SYS_IOPRIO_SET             = 273
+       SYS_IOPRIO_GET             = 274
+       SYS_INOTIFY_INIT           = 275
+       SYS_INOTIFY_ADD_WATCH      = 276
+       SYS_INOTIFY_RM_WATCH       = 277
+       SYS_SPU_RUN                = 278
+       SYS_SPU_CREATE             = 279
+       SYS_PSELECT6               = 280
+       SYS_PPOLL                  = 281
+       SYS_UNSHARE                = 282
+       SYS_SPLICE                 = 283
+       SYS_TEE                    = 284
+       SYS_VMSPLICE               = 285
+       SYS_OPENAT                 = 286
+       SYS_MKDIRAT                = 287
+       SYS_MKNODAT                = 288
+       SYS_FCHOWNAT               = 289
+       SYS_FUTIMESAT              = 290
+       SYS_NEWFSTATAT             = 291
+       SYS_UNLINKAT               = 292
+       SYS_RENAMEAT               = 293
+       SYS_LINKAT                 = 294
+       SYS_SYMLINKAT              = 295
+       SYS_READLINKAT             = 296
+       SYS_FCHMODAT               = 297
+       SYS_FACCESSAT              = 298
+       SYS_GET_ROBUST_LIST        = 299
+       SYS_SET_ROBUST_LIST        = 300
+       SYS_MOVE_PAGES             = 301
+       SYS_GETCPU                 = 302
+       SYS_EPOLL_PWAIT            = 303
+       SYS_UTIMENSAT              = 304
+       SYS_SIGNALFD               = 305
+       SYS_TIMERFD_CREATE         = 306
+       SYS_EVENTFD                = 307
+       SYS_SYNC_FILE_RANGE2       = 308
+       SYS_FALLOCATE              = 309
+       SYS_SUBPAGE_PROT           = 310
+       SYS_TIMERFD_SETTIME        = 311
+       SYS_TIMERFD_GETTIME        = 312
+       SYS_SIGNALFD4              = 313
+       SYS_EVENTFD2               = 314
+       SYS_EPOLL_CREATE1          = 315
+       SYS_DUP3                   = 316
+       SYS_PIPE2                  = 317
+       SYS_INOTIFY_INIT1          = 318
+       SYS_PERF_EVENT_OPEN        = 319
+       SYS_PREADV                 = 320
+       SYS_PWRITEV                = 321
+       SYS_RT_TGSIGQUEUEINFO      = 322
+       SYS_FANOTIFY_INIT          = 323
+       SYS_FANOTIFY_MARK          = 324
+       SYS_PRLIMIT64              = 325
+       SYS_SOCKET                 = 326
+       SYS_BIND                   = 327
+       SYS_CONNECT                = 328
+       SYS_LISTEN                 = 329
+       SYS_ACCEPT                 = 330
+       SYS_GETSOCKNAME            = 331
+       SYS_GETPEERNAME            = 332
+       SYS_SOCKETPAIR             = 333
+       SYS_SEND                   = 334
+       SYS_SENDTO                 = 335
+       SYS_RECV                   = 336
+       SYS_RECVFROM               = 337
+       SYS_SHUTDOWN               = 338
+       SYS_SETSOCKOPT             = 339
+       SYS_GETSOCKOPT             = 340
+       SYS_SENDMSG                = 341
+       SYS_RECVMSG                = 342
+       SYS_RECVMMSG               = 343
+       SYS_ACCEPT4                = 344
+       SYS_NAME_TO_HANDLE_AT      = 345
+       SYS_OPEN_BY_HANDLE_AT      = 346
+       SYS_CLOCK_ADJTIME          = 347
+       SYS_SYNCFS                 = 348
+       SYS_SENDMMSG               = 349
+       SYS_SETNS                  = 350
+       SYS_PROCESS_VM_READV       = 351
+       SYS_PROCESS_VM_WRITEV      = 352
+       SYS_FINIT_MODULE           = 353
+       SYS_KCMP                   = 354
+)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go
new file mode 100644 (file)
index 0000000..f60d8f9
--- /dev/null
@@ -0,0 +1,273 @@
+// mksysnum_netbsd.pl
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build 386,netbsd
+
+package unix
+
+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, size_t nbyte); }
+       SYS_OPEN                 = 5   // { int|sys||open(const char *path, int flags, ... mode_t mode); }
+       SYS_CLOSE                = 6   // { int|sys||close(int fd); }
+       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_CHMOD                = 15  // { int|sys||chmod(const char *path, mode_t mode); }
+       SYS_CHOWN                = 16  // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }
+       SYS_BREAK                = 17  // { int|sys||obreak(char *nsize); }
+       SYS_GETPID               = 20  // { pid_t|sys||getpid_with_ppid(void); }
+       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_with_euid(void); }
+       SYS_GETEUID              = 25  // { uid_t|sys||geteuid(void); }
+       SYS_PTRACE               = 26  // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }
+       SYS_RECVMSG              = 27  // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }
+       SYS_SENDMSG              = 28  // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }
+       SYS_RECVFROM             = 29  // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }
+       SYS_ACCEPT               = 30  // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }
+       SYS_GETPEERNAME          = 31  // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }
+       SYS_GETSOCKNAME          = 32  // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }
+       SYS_ACCESS               = 33  // { int|sys||access(const char *path, int flags); }
+       SYS_CHFLAGS              = 34  // { int|sys||chflags(const char *path, u_long flags); }
+       SYS_FCHFLAGS             = 35  // { int|sys||fchflags(int fd, u_long flags); }
+       SYS_SYNC                 = 36  // { void|sys||sync(void); }
+       SYS_KILL                 = 37  // { int|sys||kill(pid_t pid, int signum); }
+       SYS_GETPPID              = 39  // { pid_t|sys||getppid(void); }
+       SYS_DUP                  = 41  // { int|sys||dup(int fd); }
+       SYS_PIPE                 = 42  // { int|sys||pipe(void); }
+       SYS_GETEGID              = 43  // { gid_t|sys||getegid(void); }
+       SYS_PROFIL               = 44  // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }
+       SYS_KTRACE               = 45  // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }
+       SYS_GETGID               = 47  // { gid_t|sys||getgid_with_egid(void); }
+       SYS___GETLOGIN           = 49  // { int|sys||__getlogin(char *namebuf, size_t namelen); }
+       SYS___SETLOGIN           = 50  // { int|sys||__setlogin(const char *namebuf); }
+       SYS_ACCT                 = 51  // { int|sys||acct(const char *path); }
+       SYS_IOCTL                = 54  // { int|sys||ioctl(int fd, u_long com, ... void *data); }
+       SYS_REVOKE               = 56  // { int|sys||revoke(const char *path); }
+       SYS_SYMLINK              = 57  // { int|sys||symlink(const char *path, const char *link); }
+       SYS_READLINK             = 58  // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }
+       SYS_EXECVE               = 59  // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }
+       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_SBRK                 = 69  // { int|sys||sbrk(intptr_t incr); }
+       SYS_SSTK                 = 70  // { int|sys||sstk(int incr); }
+       SYS_VADVISE              = 72  // { int|sys||ovadvise(int anom); }
+       SYS_MUNMAP               = 73  // { int|sys||munmap(void *addr, size_t len); }
+       SYS_MPROTECT             = 74  // { int|sys||mprotect(void *addr, size_t len, int prot); }
+       SYS_MADVISE              = 75  // { int|sys||madvise(void *addr, size_t len, int behav); }
+       SYS_MINCORE              = 78  // { int|sys||mincore(void *addr, size_t len, char *vec); }
+       SYS_GETGROUPS            = 79  // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }
+       SYS_SETGROUPS            = 80  // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }
+       SYS_GETPGRP              = 81  // { int|sys||getpgrp(void); }
+       SYS_SETPGID              = 82  // { int|sys||setpgid(pid_t pid, pid_t pgid); }
+       SYS_DUP2                 = 90  // { int|sys||dup2(int from, int to); }
+       SYS_FCNTL                = 92  // { int|sys||fcntl(int fd, int cmd, ... void *arg); }
+       SYS_FSYNC                = 95  // { int|sys||fsync(int fd); }
+       SYS_SETPRIORITY          = 96  // { int|sys||setpriority(int which, id_t who, int prio); }
+       SYS_CONNECT              = 98  // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }
+       SYS_GETPRIORITY          = 100 // { int|sys||getpriority(int which, id_t who); }
+       SYS_BIND                 = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }
+       SYS_SETSOCKOPT           = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }
+       SYS_LISTEN               = 106 // { int|sys||listen(int s, int backlog); }
+       SYS_GETSOCKOPT           = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }
+       SYS_READV                = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }
+       SYS_WRITEV               = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }
+       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, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }
+       SYS_SHUTDOWN             = 134 // { int|sys||shutdown(int s, int how); }
+       SYS_SOCKETPAIR           = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }
+       SYS_MKDIR                = 136 // { int|sys||mkdir(const char *path, mode_t mode); }
+       SYS_RMDIR                = 137 // { int|sys||rmdir(const char *path); }
+       SYS_SETSID               = 147 // { int|sys||setsid(void); }
+       SYS_SYSARCH              = 165 // { int|sys||sysarch(int op, void *parms); }
+       SYS_PREAD                = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }
+       SYS_PWRITE               = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }
+       SYS_NTP_ADJTIME          = 176 // { int|sys||ntp_adjtime(struct timex *tp); }
+       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); }
+       SYS_PATHCONF             = 191 // { long|sys||pathconf(const char *path, int name); }
+       SYS_FPATHCONF            = 192 // { long|sys||fpathconf(int fd, int name); }
+       SYS_GETRLIMIT            = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }
+       SYS_SETRLIMIT            = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }
+       SYS_MMAP                 = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }
+       SYS_LSEEK                = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }
+       SYS_TRUNCATE             = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }
+       SYS_FTRUNCATE            = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }
+       SYS___SYSCTL             = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }
+       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_UNDELETE             = 205 // { int|sys||undelete(const char *path); }
+       SYS_GETPGID              = 207 // { pid_t|sys||getpgid(pid_t pid); }
+       SYS_REBOOT               = 208 // { int|sys||reboot(int opt, char *bootstr); }
+       SYS_POLL                 = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }
+       SYS_SEMGET               = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }
+       SYS_SEMOP                = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }
+       SYS_SEMCONFIG            = 223 // { int|sys||semconfig(int flag); }
+       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, int msgflg); }
+       SYS_MSGRCV               = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
+       SYS_SHMAT                = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }
+       SYS_SHMDT                = 230 // { int|sys||shmdt(const void *shmaddr); }
+       SYS_SHMGET               = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }
+       SYS_TIMER_CREATE         = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }
+       SYS_TIMER_DELETE         = 236 // { int|sys||timer_delete(timer_t timerid); }
+       SYS_TIMER_GETOVERRUN     = 239 // { int|sys||timer_getoverrun(timer_t timerid); }
+       SYS_FDATASYNC            = 241 // { int|sys||fdatasync(int fd); }
+       SYS_MLOCKALL             = 242 // { int|sys||mlockall(int flags); }
+       SYS_MUNLOCKALL           = 243 // { int|sys||munlockall(void); }
+       SYS_SIGQUEUEINFO         = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }
+       SYS_MODCTL               = 246 // { int|sys||modctl(int cmd, void *arg); }
+       SYS___POSIX_RENAME       = 270 // { int|sys||__posix_rename(const char *from, const char *to); }
+       SYS_SWAPCTL              = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }
+       SYS_MINHERIT             = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }
+       SYS_LCHMOD               = 274 // { int|sys||lchmod(const char *path, mode_t mode); }
+       SYS_LCHOWN               = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }
+       SYS___POSIX_CHOWN        = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }
+       SYS___POSIX_FCHOWN       = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }
+       SYS___POSIX_LCHOWN       = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }
+       SYS_GETSID               = 286 // { pid_t|sys||getsid(pid_t pid); }
+       SYS___CLONE              = 287 // { pid_t|sys||__clone(int flags, void *stack); }
+       SYS_FKTRACE              = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }
+       SYS_PREADV               = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }
+       SYS_PWRITEV              = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }
+       SYS___GETCWD             = 296 // { int|sys||__getcwd(char *bufp, size_t length); }
+       SYS_FCHROOT              = 297 // { int|sys||fchroot(int fd); }
+       SYS_LCHFLAGS             = 304 // { int|sys||lchflags(const char *path, u_long flags); }
+       SYS_ISSETUGID            = 305 // { int|sys||issetugid(void); }
+       SYS_UTRACE               = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }
+       SYS_GETCONTEXT           = 307 // { int|sys||getcontext(struct __ucontext *ucp); }
+       SYS_SETCONTEXT           = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }
+       SYS__LWP_CREATE          = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }
+       SYS__LWP_EXIT            = 310 // { int|sys||_lwp_exit(void); }
+       SYS__LWP_SELF            = 311 // { lwpid_t|sys||_lwp_self(void); }
+       SYS__LWP_WAIT            = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }
+       SYS__LWP_SUSPEND         = 313 // { int|sys||_lwp_suspend(lwpid_t target); }
+       SYS__LWP_CONTINUE        = 314 // { int|sys||_lwp_continue(lwpid_t target); }
+       SYS__LWP_WAKEUP          = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }
+       SYS__LWP_GETPRIVATE      = 316 // { void *|sys||_lwp_getprivate(void); }
+       SYS__LWP_SETPRIVATE      = 317 // { void|sys||_lwp_setprivate(void *ptr); }
+       SYS__LWP_KILL            = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }
+       SYS__LWP_DETACH          = 319 // { int|sys||_lwp_detach(lwpid_t target); }
+       SYS__LWP_UNPARK          = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }
+       SYS__LWP_UNPARK_ALL      = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }
+       SYS__LWP_SETNAME         = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }
+       SYS__LWP_GETNAME         = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }
+       SYS__LWP_CTL             = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }
+       SYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }
+       SYS_PMC_GET_INFO         = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }
+       SYS_PMC_CONTROL          = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }
+       SYS_RASCTL               = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }
+       SYS_KQUEUE               = 344 // { int|sys||kqueue(void); }
+       SYS__SCHED_SETPARAM      = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }
+       SYS__SCHED_GETPARAM      = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }
+       SYS__SCHED_SETAFFINITY   = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }
+       SYS__SCHED_GETAFFINITY   = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }
+       SYS_SCHED_YIELD          = 350 // { int|sys||sched_yield(void); }
+       SYS_FSYNC_RANGE          = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }
+       SYS_UUIDGEN              = 355 // { int|sys||uuidgen(struct uuid *store, int count); }
+       SYS_GETVFSSTAT           = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }
+       SYS_STATVFS1             = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }
+       SYS_FSTATVFS1            = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }
+       SYS_EXTATTRCTL           = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }
+       SYS_EXTATTR_SET_FILE     = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }
+       SYS_EXTATTR_GET_FILE     = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
+       SYS_EXTATTR_DELETE_FILE  = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }
+       SYS_EXTATTR_SET_FD       = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }
+       SYS_EXTATTR_GET_FD       = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
+       SYS_EXTATTR_DELETE_FD    = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }
+       SYS_EXTATTR_SET_LINK     = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }
+       SYS_EXTATTR_GET_LINK     = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
+       SYS_EXTATTR_DELETE_LINK  = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }
+       SYS_EXTATTR_LIST_FD      = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }
+       SYS_EXTATTR_LIST_FILE    = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }
+       SYS_EXTATTR_LIST_LINK    = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }
+       SYS_SETXATTR             = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }
+       SYS_LSETXATTR            = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }
+       SYS_FSETXATTR            = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }
+       SYS_GETXATTR             = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }
+       SYS_LGETXATTR            = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }
+       SYS_FGETXATTR            = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }
+       SYS_LISTXATTR            = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }
+       SYS_LLISTXATTR           = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }
+       SYS_FLISTXATTR           = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }
+       SYS_REMOVEXATTR          = 384 // { int|sys||removexattr(const char *path, const char *name); }
+       SYS_LREMOVEXATTR         = 385 // { int|sys||lremovexattr(const char *path, const char *name); }
+       SYS_FREMOVEXATTR         = 386 // { int|sys||fremovexattr(int fd, const char *name); }
+       SYS_GETDENTS             = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }
+       SYS_SOCKET               = 394 // { int|sys|30|socket(int domain, int type, int protocol); }
+       SYS_GETFH                = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }
+       SYS_MOUNT                = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }
+       SYS_MREMAP               = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }
+       SYS_PSET_CREATE          = 412 // { int|sys||pset_create(psetid_t *psid); }
+       SYS_PSET_DESTROY         = 413 // { int|sys||pset_destroy(psetid_t psid); }
+       SYS_PSET_ASSIGN          = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }
+       SYS__PSET_BIND           = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }
+       SYS_POSIX_FADVISE        = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }
+       SYS_SELECT               = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
+       SYS_GETTIMEOFDAY         = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }
+       SYS_SETTIMEOFDAY         = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }
+       SYS_UTIMES               = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }
+       SYS_ADJTIME              = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }
+       SYS_FUTIMES              = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }
+       SYS_LUTIMES              = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }
+       SYS_SETITIMER            = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }
+       SYS_GETITIMER            = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }
+       SYS_CLOCK_GETTIME        = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }
+       SYS_CLOCK_SETTIME        = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }
+       SYS_CLOCK_GETRES         = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }
+       SYS_NANOSLEEP            = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }
+       SYS___SIGTIMEDWAIT       = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }
+       SYS__LWP_PARK            = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }
+       SYS_KEVENT               = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }
+       SYS_PSELECT              = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }
+       SYS_POLLTS               = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }
+       SYS_STAT                 = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }
+       SYS_FSTAT                = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }
+       SYS_LSTAT                = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }
+       SYS___SEMCTL             = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }
+       SYS_SHMCTL               = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }
+       SYS_MSGCTL               = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }
+       SYS_GETRUSAGE            = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }
+       SYS_TIMER_SETTIME        = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }
+       SYS_TIMER_GETTIME        = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }
+       SYS_NTP_GETTIME          = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }
+       SYS_WAIT4                = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }
+       SYS_MKNOD                = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }
+       SYS_FHSTAT               = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }
+       SYS_PIPE2                = 453 // { int|sys||pipe2(int *fildes, int flags); }
+       SYS_DUP3                 = 454 // { int|sys||dup3(int from, int to, int flags); }
+       SYS_KQUEUE1              = 455 // { int|sys||kqueue1(int flags); }
+       SYS_PACCEPT              = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }
+       SYS_LINKAT               = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }
+       SYS_RENAMEAT             = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }
+       SYS_MKFIFOAT             = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }
+       SYS_MKNODAT              = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }
+       SYS_MKDIRAT              = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }
+       SYS_FACCESSAT            = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }
+       SYS_FCHMODAT             = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }
+       SYS_FCHOWNAT             = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }
+       SYS_FEXECVE              = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }
+       SYS_FSTATAT              = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }
+       SYS_UTIMENSAT            = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }
+       SYS_OPENAT               = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }
+       SYS_READLINKAT           = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }
+       SYS_SYMLINKAT            = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }
+       SYS_UNLINKAT             = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }
+       SYS_FUTIMENS             = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }
+       SYS___QUOTACTL           = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }
+       SYS_POSIX_SPAWN          = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }
+       SYS_RECVMMSG             = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }
+       SYS_SENDMMSG             = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }
+)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go
new file mode 100644 (file)
index 0000000..48a91d4
--- /dev/null
@@ -0,0 +1,273 @@
+// mksysnum_netbsd.pl
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build amd64,netbsd
+
+package unix
+
+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, size_t nbyte); }
+       SYS_OPEN                 = 5   // { int|sys||open(const char *path, int flags, ... mode_t mode); }
+       SYS_CLOSE                = 6   // { int|sys||close(int fd); }
+       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_CHMOD                = 15  // { int|sys||chmod(const char *path, mode_t mode); }
+       SYS_CHOWN                = 16  // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }
+       SYS_BREAK                = 17  // { int|sys||obreak(char *nsize); }
+       SYS_GETPID               = 20  // { pid_t|sys||getpid_with_ppid(void); }
+       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_with_euid(void); }
+       SYS_GETEUID              = 25  // { uid_t|sys||geteuid(void); }
+       SYS_PTRACE               = 26  // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }
+       SYS_RECVMSG              = 27  // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }
+       SYS_SENDMSG              = 28  // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }
+       SYS_RECVFROM             = 29  // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }
+       SYS_ACCEPT               = 30  // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }
+       SYS_GETPEERNAME          = 31  // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }
+       SYS_GETSOCKNAME          = 32  // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }
+       SYS_ACCESS               = 33  // { int|sys||access(const char *path, int flags); }
+       SYS_CHFLAGS              = 34  // { int|sys||chflags(const char *path, u_long flags); }
+       SYS_FCHFLAGS             = 35  // { int|sys||fchflags(int fd, u_long flags); }
+       SYS_SYNC                 = 36  // { void|sys||sync(void); }
+       SYS_KILL                 = 37  // { int|sys||kill(pid_t pid, int signum); }
+       SYS_GETPPID              = 39  // { pid_t|sys||getppid(void); }
+       SYS_DUP                  = 41  // { int|sys||dup(int fd); }
+       SYS_PIPE                 = 42  // { int|sys||pipe(void); }
+       SYS_GETEGID              = 43  // { gid_t|sys||getegid(void); }
+       SYS_PROFIL               = 44  // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }
+       SYS_KTRACE               = 45  // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }
+       SYS_GETGID               = 47  // { gid_t|sys||getgid_with_egid(void); }
+       SYS___GETLOGIN           = 49  // { int|sys||__getlogin(char *namebuf, size_t namelen); }
+       SYS___SETLOGIN           = 50  // { int|sys||__setlogin(const char *namebuf); }
+       SYS_ACCT                 = 51  // { int|sys||acct(const char *path); }
+       SYS_IOCTL                = 54  // { int|sys||ioctl(int fd, u_long com, ... void *data); }
+       SYS_REVOKE               = 56  // { int|sys||revoke(const char *path); }
+       SYS_SYMLINK              = 57  // { int|sys||symlink(const char *path, const char *link); }
+       SYS_READLINK             = 58  // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }
+       SYS_EXECVE               = 59  // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }
+       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_SBRK                 = 69  // { int|sys||sbrk(intptr_t incr); }
+       SYS_SSTK                 = 70  // { int|sys||sstk(int incr); }
+       SYS_VADVISE              = 72  // { int|sys||ovadvise(int anom); }
+       SYS_MUNMAP               = 73  // { int|sys||munmap(void *addr, size_t len); }
+       SYS_MPROTECT             = 74  // { int|sys||mprotect(void *addr, size_t len, int prot); }
+       SYS_MADVISE              = 75  // { int|sys||madvise(void *addr, size_t len, int behav); }
+       SYS_MINCORE              = 78  // { int|sys||mincore(void *addr, size_t len, char *vec); }
+       SYS_GETGROUPS            = 79  // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }
+       SYS_SETGROUPS            = 80  // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }
+       SYS_GETPGRP              = 81  // { int|sys||getpgrp(void); }
+       SYS_SETPGID              = 82  // { int|sys||setpgid(pid_t pid, pid_t pgid); }
+       SYS_DUP2                 = 90  // { int|sys||dup2(int from, int to); }
+       SYS_FCNTL                = 92  // { int|sys||fcntl(int fd, int cmd, ... void *arg); }
+       SYS_FSYNC                = 95  // { int|sys||fsync(int fd); }
+       SYS_SETPRIORITY          = 96  // { int|sys||setpriority(int which, id_t who, int prio); }
+       SYS_CONNECT              = 98  // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }
+       SYS_GETPRIORITY          = 100 // { int|sys||getpriority(int which, id_t who); }
+       SYS_BIND                 = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }
+       SYS_SETSOCKOPT           = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }
+       SYS_LISTEN               = 106 // { int|sys||listen(int s, int backlog); }
+       SYS_GETSOCKOPT           = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }
+       SYS_READV                = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }
+       SYS_WRITEV               = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }
+       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, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }
+       SYS_SHUTDOWN             = 134 // { int|sys||shutdown(int s, int how); }
+       SYS_SOCKETPAIR           = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }
+       SYS_MKDIR                = 136 // { int|sys||mkdir(const char *path, mode_t mode); }
+       SYS_RMDIR                = 137 // { int|sys||rmdir(const char *path); }
+       SYS_SETSID               = 147 // { int|sys||setsid(void); }
+       SYS_SYSARCH              = 165 // { int|sys||sysarch(int op, void *parms); }
+       SYS_PREAD                = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }
+       SYS_PWRITE               = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }
+       SYS_NTP_ADJTIME          = 176 // { int|sys||ntp_adjtime(struct timex *tp); }
+       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); }
+       SYS_PATHCONF             = 191 // { long|sys||pathconf(const char *path, int name); }
+       SYS_FPATHCONF            = 192 // { long|sys||fpathconf(int fd, int name); }
+       SYS_GETRLIMIT            = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }
+       SYS_SETRLIMIT            = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }
+       SYS_MMAP                 = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }
+       SYS_LSEEK                = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }
+       SYS_TRUNCATE             = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }
+       SYS_FTRUNCATE            = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }
+       SYS___SYSCTL             = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }
+       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_UNDELETE             = 205 // { int|sys||undelete(const char *path); }
+       SYS_GETPGID              = 207 // { pid_t|sys||getpgid(pid_t pid); }
+       SYS_REBOOT               = 208 // { int|sys||reboot(int opt, char *bootstr); }
+       SYS_POLL                 = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }
+       SYS_SEMGET               = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }
+       SYS_SEMOP                = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }
+       SYS_SEMCONFIG            = 223 // { int|sys||semconfig(int flag); }
+       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, int msgflg); }
+       SYS_MSGRCV               = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
+       SYS_SHMAT                = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }
+       SYS_SHMDT                = 230 // { int|sys||shmdt(const void *shmaddr); }
+       SYS_SHMGET               = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }
+       SYS_TIMER_CREATE         = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }
+       SYS_TIMER_DELETE         = 236 // { int|sys||timer_delete(timer_t timerid); }
+       SYS_TIMER_GETOVERRUN     = 239 // { int|sys||timer_getoverrun(timer_t timerid); }
+       SYS_FDATASYNC            = 241 // { int|sys||fdatasync(int fd); }
+       SYS_MLOCKALL             = 242 // { int|sys||mlockall(int flags); }
+       SYS_MUNLOCKALL           = 243 // { int|sys||munlockall(void); }
+       SYS_SIGQUEUEINFO         = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }
+       SYS_MODCTL               = 246 // { int|sys||modctl(int cmd, void *arg); }
+       SYS___POSIX_RENAME       = 270 // { int|sys||__posix_rename(const char *from, const char *to); }
+       SYS_SWAPCTL              = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }
+       SYS_MINHERIT             = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }
+       SYS_LCHMOD               = 274 // { int|sys||lchmod(const char *path, mode_t mode); }
+       SYS_LCHOWN               = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }
+       SYS___POSIX_CHOWN        = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }
+       SYS___POSIX_FCHOWN       = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }
+       SYS___POSIX_LCHOWN       = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }
+       SYS_GETSID               = 286 // { pid_t|sys||getsid(pid_t pid); }
+       SYS___CLONE              = 287 // { pid_t|sys||__clone(int flags, void *stack); }
+       SYS_FKTRACE              = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }
+       SYS_PREADV               = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }
+       SYS_PWRITEV              = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }
+       SYS___GETCWD             = 296 // { int|sys||__getcwd(char *bufp, size_t length); }
+       SYS_FCHROOT              = 297 // { int|sys||fchroot(int fd); }
+       SYS_LCHFLAGS             = 304 // { int|sys||lchflags(const char *path, u_long flags); }
+       SYS_ISSETUGID            = 305 // { int|sys||issetugid(void); }
+       SYS_UTRACE               = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }
+       SYS_GETCONTEXT           = 307 // { int|sys||getcontext(struct __ucontext *ucp); }
+       SYS_SETCONTEXT           = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }
+       SYS__LWP_CREATE          = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }
+       SYS__LWP_EXIT            = 310 // { int|sys||_lwp_exit(void); }
+       SYS__LWP_SELF            = 311 // { lwpid_t|sys||_lwp_self(void); }
+       SYS__LWP_WAIT            = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }
+       SYS__LWP_SUSPEND         = 313 // { int|sys||_lwp_suspend(lwpid_t target); }
+       SYS__LWP_CONTINUE        = 314 // { int|sys||_lwp_continue(lwpid_t target); }
+       SYS__LWP_WAKEUP          = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }
+       SYS__LWP_GETPRIVATE      = 316 // { void *|sys||_lwp_getprivate(void); }
+       SYS__LWP_SETPRIVATE      = 317 // { void|sys||_lwp_setprivate(void *ptr); }
+       SYS__LWP_KILL            = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }
+       SYS__LWP_DETACH          = 319 // { int|sys||_lwp_detach(lwpid_t target); }
+       SYS__LWP_UNPARK          = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }
+       SYS__LWP_UNPARK_ALL      = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }
+       SYS__LWP_SETNAME         = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }
+       SYS__LWP_GETNAME         = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }
+       SYS__LWP_CTL             = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }
+       SYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }
+       SYS_PMC_GET_INFO         = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }
+       SYS_PMC_CONTROL          = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }
+       SYS_RASCTL               = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }
+       SYS_KQUEUE               = 344 // { int|sys||kqueue(void); }
+       SYS__SCHED_SETPARAM      = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }
+       SYS__SCHED_GETPARAM      = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }
+       SYS__SCHED_SETAFFINITY   = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }
+       SYS__SCHED_GETAFFINITY   = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }
+       SYS_SCHED_YIELD          = 350 // { int|sys||sched_yield(void); }
+       SYS_FSYNC_RANGE          = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }
+       SYS_UUIDGEN              = 355 // { int|sys||uuidgen(struct uuid *store, int count); }
+       SYS_GETVFSSTAT           = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }
+       SYS_STATVFS1             = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }
+       SYS_FSTATVFS1            = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }
+       SYS_EXTATTRCTL           = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }
+       SYS_EXTATTR_SET_FILE     = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }
+       SYS_EXTATTR_GET_FILE     = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
+       SYS_EXTATTR_DELETE_FILE  = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }
+       SYS_EXTATTR_SET_FD       = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }
+       SYS_EXTATTR_GET_FD       = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
+       SYS_EXTATTR_DELETE_FD    = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }
+       SYS_EXTATTR_SET_LINK     = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }
+       SYS_EXTATTR_GET_LINK     = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
+       SYS_EXTATTR_DELETE_LINK  = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }
+       SYS_EXTATTR_LIST_FD      = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }
+       SYS_EXTATTR_LIST_FILE    = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }
+       SYS_EXTATTR_LIST_LINK    = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }
+       SYS_SETXATTR             = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }
+       SYS_LSETXATTR            = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }
+       SYS_FSETXATTR            = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }
+       SYS_GETXATTR             = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }
+       SYS_LGETXATTR            = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }
+       SYS_FGETXATTR            = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }
+       SYS_LISTXATTR            = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }
+       SYS_LLISTXATTR           = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }
+       SYS_FLISTXATTR           = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }
+       SYS_REMOVEXATTR          = 384 // { int|sys||removexattr(const char *path, const char *name); }
+       SYS_LREMOVEXATTR         = 385 // { int|sys||lremovexattr(const char *path, const char *name); }
+       SYS_FREMOVEXATTR         = 386 // { int|sys||fremovexattr(int fd, const char *name); }
+       SYS_GETDENTS             = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }
+       SYS_SOCKET               = 394 // { int|sys|30|socket(int domain, int type, int protocol); }
+       SYS_GETFH                = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }
+       SYS_MOUNT                = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }
+       SYS_MREMAP               = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }
+       SYS_PSET_CREATE          = 412 // { int|sys||pset_create(psetid_t *psid); }
+       SYS_PSET_DESTROY         = 413 // { int|sys||pset_destroy(psetid_t psid); }
+       SYS_PSET_ASSIGN          = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }
+       SYS__PSET_BIND           = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }
+       SYS_POSIX_FADVISE        = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }
+       SYS_SELECT               = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
+       SYS_GETTIMEOFDAY         = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }
+       SYS_SETTIMEOFDAY         = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }
+       SYS_UTIMES               = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }
+       SYS_ADJTIME              = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }
+       SYS_FUTIMES              = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }
+       SYS_LUTIMES              = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }
+       SYS_SETITIMER            = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }
+       SYS_GETITIMER            = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }
+       SYS_CLOCK_GETTIME        = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }
+       SYS_CLOCK_SETTIME        = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }
+       SYS_CLOCK_GETRES         = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }
+       SYS_NANOSLEEP            = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }
+       SYS___SIGTIMEDWAIT       = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }
+       SYS__LWP_PARK            = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }
+       SYS_KEVENT               = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }
+       SYS_PSELECT              = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }
+       SYS_POLLTS               = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }
+       SYS_STAT                 = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }
+       SYS_FSTAT                = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }
+       SYS_LSTAT                = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }
+       SYS___SEMCTL             = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }
+       SYS_SHMCTL               = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }
+       SYS_MSGCTL               = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }
+       SYS_GETRUSAGE            = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }
+       SYS_TIMER_SETTIME        = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }
+       SYS_TIMER_GETTIME        = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }
+       SYS_NTP_GETTIME          = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }
+       SYS_WAIT4                = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }
+       SYS_MKNOD                = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }
+       SYS_FHSTAT               = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }
+       SYS_PIPE2                = 453 // { int|sys||pipe2(int *fildes, int flags); }
+       SYS_DUP3                 = 454 // { int|sys||dup3(int from, int to, int flags); }
+       SYS_KQUEUE1              = 455 // { int|sys||kqueue1(int flags); }
+       SYS_PACCEPT              = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }
+       SYS_LINKAT               = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }
+       SYS_RENAMEAT             = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }
+       SYS_MKFIFOAT             = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }
+       SYS_MKNODAT              = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }
+       SYS_MKDIRAT              = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }
+       SYS_FACCESSAT            = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }
+       SYS_FCHMODAT             = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }
+       SYS_FCHOWNAT             = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }
+       SYS_FEXECVE              = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }
+       SYS_FSTATAT              = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }
+       SYS_UTIMENSAT            = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }
+       SYS_OPENAT               = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }
+       SYS_READLINKAT           = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }
+       SYS_SYMLINKAT            = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }
+       SYS_UNLINKAT             = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }
+       SYS_FUTIMENS             = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }
+       SYS___QUOTACTL           = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }
+       SYS_POSIX_SPAWN          = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }
+       SYS_RECVMMSG             = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }
+       SYS_SENDMMSG             = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }
+)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go
new file mode 100644 (file)
index 0000000..612ba66
--- /dev/null
@@ -0,0 +1,273 @@
+// mksysnum_netbsd.pl
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build arm,netbsd
+
+package unix
+
+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, size_t nbyte); }
+       SYS_OPEN                 = 5   // { int|sys||open(const char *path, int flags, ... mode_t mode); }
+       SYS_CLOSE                = 6   // { int|sys||close(int fd); }
+       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_CHMOD                = 15  // { int|sys||chmod(const char *path, mode_t mode); }
+       SYS_CHOWN                = 16  // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }
+       SYS_BREAK                = 17  // { int|sys||obreak(char *nsize); }
+       SYS_GETPID               = 20  // { pid_t|sys||getpid_with_ppid(void); }
+       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_with_euid(void); }
+       SYS_GETEUID              = 25  // { uid_t|sys||geteuid(void); }
+       SYS_PTRACE               = 26  // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }
+       SYS_RECVMSG              = 27  // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }
+       SYS_SENDMSG              = 28  // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }
+       SYS_RECVFROM             = 29  // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }
+       SYS_ACCEPT               = 30  // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }
+       SYS_GETPEERNAME          = 31  // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }
+       SYS_GETSOCKNAME          = 32  // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }
+       SYS_ACCESS               = 33  // { int|sys||access(const char *path, int flags); }
+       SYS_CHFLAGS              = 34  // { int|sys||chflags(const char *path, u_long flags); }
+       SYS_FCHFLAGS             = 35  // { int|sys||fchflags(int fd, u_long flags); }
+       SYS_SYNC                 = 36  // { void|sys||sync(void); }
+       SYS_KILL                 = 37  // { int|sys||kill(pid_t pid, int signum); }
+       SYS_GETPPID              = 39  // { pid_t|sys||getppid(void); }
+       SYS_DUP                  = 41  // { int|sys||dup(int fd); }
+       SYS_PIPE                 = 42  // { int|sys||pipe(void); }
+       SYS_GETEGID              = 43  // { gid_t|sys||getegid(void); }
+       SYS_PROFIL               = 44  // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }
+       SYS_KTRACE               = 45  // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }
+       SYS_GETGID               = 47  // { gid_t|sys||getgid_with_egid(void); }
+       SYS___GETLOGIN           = 49  // { int|sys||__getlogin(char *namebuf, size_t namelen); }
+       SYS___SETLOGIN           = 50  // { int|sys||__setlogin(const char *namebuf); }
+       SYS_ACCT                 = 51  // { int|sys||acct(const char *path); }
+       SYS_IOCTL                = 54  // { int|sys||ioctl(int fd, u_long com, ... void *data); }
+       SYS_REVOKE               = 56  // { int|sys||revoke(const char *path); }
+       SYS_SYMLINK              = 57  // { int|sys||symlink(const char *path, const char *link); }
+       SYS_READLINK             = 58  // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }
+       SYS_EXECVE               = 59  // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }
+       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_SBRK                 = 69  // { int|sys||sbrk(intptr_t incr); }
+       SYS_SSTK                 = 70  // { int|sys||sstk(int incr); }
+       SYS_VADVISE              = 72  // { int|sys||ovadvise(int anom); }
+       SYS_MUNMAP               = 73  // { int|sys||munmap(void *addr, size_t len); }
+       SYS_MPROTECT             = 74  // { int|sys||mprotect(void *addr, size_t len, int prot); }
+       SYS_MADVISE              = 75  // { int|sys||madvise(void *addr, size_t len, int behav); }
+       SYS_MINCORE              = 78  // { int|sys||mincore(void *addr, size_t len, char *vec); }
+       SYS_GETGROUPS            = 79  // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }
+       SYS_SETGROUPS            = 80  // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }
+       SYS_GETPGRP              = 81  // { int|sys||getpgrp(void); }
+       SYS_SETPGID              = 82  // { int|sys||setpgid(pid_t pid, pid_t pgid); }
+       SYS_DUP2                 = 90  // { int|sys||dup2(int from, int to); }
+       SYS_FCNTL                = 92  // { int|sys||fcntl(int fd, int cmd, ... void *arg); }
+       SYS_FSYNC                = 95  // { int|sys||fsync(int fd); }
+       SYS_SETPRIORITY          = 96  // { int|sys||setpriority(int which, id_t who, int prio); }
+       SYS_CONNECT              = 98  // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }
+       SYS_GETPRIORITY          = 100 // { int|sys||getpriority(int which, id_t who); }
+       SYS_BIND                 = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }
+       SYS_SETSOCKOPT           = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }
+       SYS_LISTEN               = 106 // { int|sys||listen(int s, int backlog); }
+       SYS_GETSOCKOPT           = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }
+       SYS_READV                = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }
+       SYS_WRITEV               = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }
+       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, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }
+       SYS_SHUTDOWN             = 134 // { int|sys||shutdown(int s, int how); }
+       SYS_SOCKETPAIR           = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }
+       SYS_MKDIR                = 136 // { int|sys||mkdir(const char *path, mode_t mode); }
+       SYS_RMDIR                = 137 // { int|sys||rmdir(const char *path); }
+       SYS_SETSID               = 147 // { int|sys||setsid(void); }
+       SYS_SYSARCH              = 165 // { int|sys||sysarch(int op, void *parms); }
+       SYS_PREAD                = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }
+       SYS_PWRITE               = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }
+       SYS_NTP_ADJTIME          = 176 // { int|sys||ntp_adjtime(struct timex *tp); }
+       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); }
+       SYS_PATHCONF             = 191 // { long|sys||pathconf(const char *path, int name); }
+       SYS_FPATHCONF            = 192 // { long|sys||fpathconf(int fd, int name); }
+       SYS_GETRLIMIT            = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }
+       SYS_SETRLIMIT            = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }
+       SYS_MMAP                 = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }
+       SYS_LSEEK                = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }
+       SYS_TRUNCATE             = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }
+       SYS_FTRUNCATE            = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }
+       SYS___SYSCTL             = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }
+       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_UNDELETE             = 205 // { int|sys||undelete(const char *path); }
+       SYS_GETPGID              = 207 // { pid_t|sys||getpgid(pid_t pid); }
+       SYS_REBOOT               = 208 // { int|sys||reboot(int opt, char *bootstr); }
+       SYS_POLL                 = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }
+       SYS_SEMGET               = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }
+       SYS_SEMOP                = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }
+       SYS_SEMCONFIG            = 223 // { int|sys||semconfig(int flag); }
+       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, int msgflg); }
+       SYS_MSGRCV               = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
+       SYS_SHMAT                = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }
+       SYS_SHMDT                = 230 // { int|sys||shmdt(const void *shmaddr); }
+       SYS_SHMGET               = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }
+       SYS_TIMER_CREATE         = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }
+       SYS_TIMER_DELETE         = 236 // { int|sys||timer_delete(timer_t timerid); }
+       SYS_TIMER_GETOVERRUN     = 239 // { int|sys||timer_getoverrun(timer_t timerid); }
+       SYS_FDATASYNC            = 241 // { int|sys||fdatasync(int fd); }
+       SYS_MLOCKALL             = 242 // { int|sys||mlockall(int flags); }
+       SYS_MUNLOCKALL           = 243 // { int|sys||munlockall(void); }
+       SYS_SIGQUEUEINFO         = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }
+       SYS_MODCTL               = 246 // { int|sys||modctl(int cmd, void *arg); }
+       SYS___POSIX_RENAME       = 270 // { int|sys||__posix_rename(const char *from, const char *to); }
+       SYS_SWAPCTL              = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }
+       SYS_MINHERIT             = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }
+       SYS_LCHMOD               = 274 // { int|sys||lchmod(const char *path, mode_t mode); }
+       SYS_LCHOWN               = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }
+       SYS___POSIX_CHOWN        = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }
+       SYS___POSIX_FCHOWN       = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }
+       SYS___POSIX_LCHOWN       = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }
+       SYS_GETSID               = 286 // { pid_t|sys||getsid(pid_t pid); }
+       SYS___CLONE              = 287 // { pid_t|sys||__clone(int flags, void *stack); }
+       SYS_FKTRACE              = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }
+       SYS_PREADV               = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }
+       SYS_PWRITEV              = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }
+       SYS___GETCWD             = 296 // { int|sys||__getcwd(char *bufp, size_t length); }
+       SYS_FCHROOT              = 297 // { int|sys||fchroot(int fd); }
+       SYS_LCHFLAGS             = 304 // { int|sys||lchflags(const char *path, u_long flags); }
+       SYS_ISSETUGID            = 305 // { int|sys||issetugid(void); }
+       SYS_UTRACE               = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }
+       SYS_GETCONTEXT           = 307 // { int|sys||getcontext(struct __ucontext *ucp); }
+       SYS_SETCONTEXT           = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }
+       SYS__LWP_CREATE          = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }
+       SYS__LWP_EXIT            = 310 // { int|sys||_lwp_exit(void); }
+       SYS__LWP_SELF            = 311 // { lwpid_t|sys||_lwp_self(void); }
+       SYS__LWP_WAIT            = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }
+       SYS__LWP_SUSPEND         = 313 // { int|sys||_lwp_suspend(lwpid_t target); }
+       SYS__LWP_CONTINUE        = 314 // { int|sys||_lwp_continue(lwpid_t target); }
+       SYS__LWP_WAKEUP          = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }
+       SYS__LWP_GETPRIVATE      = 316 // { void *|sys||_lwp_getprivate(void); }
+       SYS__LWP_SETPRIVATE      = 317 // { void|sys||_lwp_setprivate(void *ptr); }
+       SYS__LWP_KILL            = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }
+       SYS__LWP_DETACH          = 319 // { int|sys||_lwp_detach(lwpid_t target); }
+       SYS__LWP_UNPARK          = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }
+       SYS__LWP_UNPARK_ALL      = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }
+       SYS__LWP_SETNAME         = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }
+       SYS__LWP_GETNAME         = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }
+       SYS__LWP_CTL             = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }
+       SYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }
+       SYS_PMC_GET_INFO         = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }
+       SYS_PMC_CONTROL          = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }
+       SYS_RASCTL               = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }
+       SYS_KQUEUE               = 344 // { int|sys||kqueue(void); }
+       SYS__SCHED_SETPARAM      = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }
+       SYS__SCHED_GETPARAM      = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }
+       SYS__SCHED_SETAFFINITY   = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }
+       SYS__SCHED_GETAFFINITY   = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }
+       SYS_SCHED_YIELD          = 350 // { int|sys||sched_yield(void); }
+       SYS_FSYNC_RANGE          = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }
+       SYS_UUIDGEN              = 355 // { int|sys||uuidgen(struct uuid *store, int count); }
+       SYS_GETVFSSTAT           = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }
+       SYS_STATVFS1             = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }
+       SYS_FSTATVFS1            = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }
+       SYS_EXTATTRCTL           = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }
+       SYS_EXTATTR_SET_FILE     = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }
+       SYS_EXTATTR_GET_FILE     = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
+       SYS_EXTATTR_DELETE_FILE  = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }
+       SYS_EXTATTR_SET_FD       = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }
+       SYS_EXTATTR_GET_FD       = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
+       SYS_EXTATTR_DELETE_FD    = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }
+       SYS_EXTATTR_SET_LINK     = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }
+       SYS_EXTATTR_GET_LINK     = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }
+       SYS_EXTATTR_DELETE_LINK  = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }
+       SYS_EXTATTR_LIST_FD      = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }
+       SYS_EXTATTR_LIST_FILE    = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }
+       SYS_EXTATTR_LIST_LINK    = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }
+       SYS_SETXATTR             = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }
+       SYS_LSETXATTR            = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }
+       SYS_FSETXATTR            = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }
+       SYS_GETXATTR             = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }
+       SYS_LGETXATTR            = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }
+       SYS_FGETXATTR            = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }
+       SYS_LISTXATTR            = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }
+       SYS_LLISTXATTR           = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }
+       SYS_FLISTXATTR           = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }
+       SYS_REMOVEXATTR          = 384 // { int|sys||removexattr(const char *path, const char *name); }
+       SYS_LREMOVEXATTR         = 385 // { int|sys||lremovexattr(const char *path, const char *name); }
+       SYS_FREMOVEXATTR         = 386 // { int|sys||fremovexattr(int fd, const char *name); }
+       SYS_GETDENTS             = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }
+       SYS_SOCKET               = 394 // { int|sys|30|socket(int domain, int type, int protocol); }
+       SYS_GETFH                = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }
+       SYS_MOUNT                = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }
+       SYS_MREMAP               = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }
+       SYS_PSET_CREATE          = 412 // { int|sys||pset_create(psetid_t *psid); }
+       SYS_PSET_DESTROY         = 413 // { int|sys||pset_destroy(psetid_t psid); }
+       SYS_PSET_ASSIGN          = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }
+       SYS__PSET_BIND           = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }
+       SYS_POSIX_FADVISE        = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }
+       SYS_SELECT               = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }
+       SYS_GETTIMEOFDAY         = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }
+       SYS_SETTIMEOFDAY         = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }
+       SYS_UTIMES               = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }
+       SYS_ADJTIME              = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }
+       SYS_FUTIMES              = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }
+       SYS_LUTIMES              = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }
+       SYS_SETITIMER            = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }
+       SYS_GETITIMER            = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }
+       SYS_CLOCK_GETTIME        = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }
+       SYS_CLOCK_SETTIME        = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }
+       SYS_CLOCK_GETRES         = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }
+       SYS_NANOSLEEP            = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }
+       SYS___SIGTIMEDWAIT       = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }
+       SYS__LWP_PARK            = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }
+       SYS_KEVENT               = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }
+       SYS_PSELECT              = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }
+       SYS_POLLTS               = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }
+       SYS_STAT                 = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }
+       SYS_FSTAT                = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }
+       SYS_LSTAT                = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }
+       SYS___SEMCTL             = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }
+       SYS_SHMCTL               = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }
+       SYS_MSGCTL               = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }
+       SYS_GETRUSAGE            = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }
+       SYS_TIMER_SETTIME        = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }
+       SYS_TIMER_GETTIME        = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }
+       SYS_NTP_GETTIME          = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }
+       SYS_WAIT4                = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }
+       SYS_MKNOD                = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }
+       SYS_FHSTAT               = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }
+       SYS_PIPE2                = 453 // { int|sys||pipe2(int *fildes, int flags); }
+       SYS_DUP3                 = 454 // { int|sys||dup3(int from, int to, int flags); }
+       SYS_KQUEUE1              = 455 // { int|sys||kqueue1(int flags); }
+       SYS_PACCEPT              = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }
+       SYS_LINKAT               = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }
+       SYS_RENAMEAT             = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }
+       SYS_MKFIFOAT             = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }
+       SYS_MKNODAT              = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }
+       SYS_MKDIRAT              = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }
+       SYS_FACCESSAT            = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }
+       SYS_FCHMODAT             = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }
+       SYS_FCHOWNAT             = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }
+       SYS_FEXECVE              = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }
+       SYS_FSTATAT              = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }
+       SYS_UTIMENSAT            = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }
+       SYS_OPENAT               = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }
+       SYS_READLINKAT           = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }
+       SYS_SYMLINKAT            = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }
+       SYS_UNLINKAT             = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }
+       SYS_FUTIMENS             = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }
+       SYS___QUOTACTL           = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }
+       SYS_POSIX_SPAWN          = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }
+       SYS_RECVMMSG             = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }
+       SYS_SENDMMSG             = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }
+)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go
new file mode 100644 (file)
index 0000000..3e8ce2a
--- /dev/null
@@ -0,0 +1,207 @@
+// mksysnum_openbsd.pl
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build 386,openbsd
+
+package unix
+
+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___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, \
+       SYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }
+       SYS_UNLINK         = 10  // { int sys_unlink(const char *path); }
+       SYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, \
+       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_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }
+       SYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, \
+       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_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }
+       SYS_GETPPID        = 39  // { pid_t sys_getppid(void); }
+       SYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }
+       SYS_DUP            = 41  // { int sys_dup(int fd); }
+       SYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, \
+       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_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }
+       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_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, \
+       SYS_STATFS         = 63  // { int sys_statfs(const char *path, \
+       SYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }
+       SYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, \
+       SYS_VFORK          = 66  // { int sys_vfork(void); }
+       SYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, \
+       SYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, \
+       SYS_SETITIMER      = 69  // { int sys_setitimer(int which, \
+       SYS_GETITIMER      = 70  // { int sys_getitimer(int which, \
+       SYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, \
+       SYS_KEVENT         = 72  // { int sys_kevent(int fd, \
+       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_UTIMES         = 76  // { int sys_utimes(const char *path, \
+       SYS_FUTIMES        = 77  // { int sys_futimes(int fd, \
+       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_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, \
+       SYS_FUTIMENS       = 85  // { int sys_futimens(int fd, \
+       SYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, \
+       SYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, \
+       SYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, \
+       SYS_DUP2           = 90  // { int sys_dup2(int from, int to); }
+       SYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, \
+       SYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }
+       SYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, \
+       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_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }
+       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_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, \
+       SYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, \
+       SYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }
+       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_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_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); }
+       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(const 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_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }
+       SYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, \
+       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_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, \
+       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_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_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___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, \
+       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_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }
+       SYS_GETRTABLE      = 311 // { int sys_getrtable(void); }
+       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_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___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }
+       SYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }
+)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go
new file mode 100644 (file)
index 0000000..bd28146
--- /dev/null
@@ -0,0 +1,207 @@
+// mksysnum_openbsd.pl
+// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
+
+// +build amd64,openbsd
+
+package unix
+
+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___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, \
+       SYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }
+       SYS_UNLINK         = 10  // { int sys_unlink(const char *path); }
+       SYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, \
+       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_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }
+       SYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, \
+       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_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }
+       SYS_GETPPID        = 39  // { pid_t sys_getppid(void); }
+       SYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }
+       SYS_DUP            = 41  // { int sys_dup(int fd); }
+       SYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, \
+       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_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }
+       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_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, \
+       SYS_STATFS         = 63  // { int sys_statfs(const char *path, \
+       SYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }
+       SYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, \
+       SYS_VFORK          = 66  // { int sys_vfork(void); }
+       SYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, \
+       SYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, \
+       SYS_SETITIMER      = 69  // { int sys_setitimer(int which, \
+       SYS_GETITIMER      = 70  // { int sys_getitimer(int which, \
+       SYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, \
+       SYS_KEVENT         = 72  // { int sys_kevent(int fd, \
+       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_UTIMES         = 76  // { int sys_utimes(const char *path, \
+       SYS_FUTIMES        = 77  // { int sys_futimes(int fd, \
+       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_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, \
+       SYS_FUTIMENS       = 85  // { int sys_futimens(int fd, \
+       SYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, \
+       SYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, \
+       SYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, \
+       SYS_DUP2           = 90  // { int sys_dup2(int from, int to); }
+       SYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, \
+       SYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }
+       SYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, \
+       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_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }
+       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_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, \
+       SYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, \
+       SYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }
+       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_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_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); }
+       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(const 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_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }
+       SYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, \
+       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_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, \
+       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_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_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___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, \
+       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_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }
+       SYS_GETRTABLE      = 311 // { int sys_getrtable(void); }
+       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_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___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }
+       SYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }
+)
diff --git a/vendor/golang.org/x/sys/unix/zsysnum_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_solaris_amd64.go
new file mode 100644 (file)
index 0000000..c708659
--- /dev/null
@@ -0,0 +1,13 @@
+// Copyright 2014 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.
+
+// +build amd64,solaris
+
+package unix
+
+// TODO(aram): remove these before Go 1.3.
+const (
+       SYS_EXECVE = 59
+       SYS_FCNTL  = 62
+)
diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go
new file mode 100644 (file)
index 0000000..2de1d44
--- /dev/null
@@ -0,0 +1,447 @@
+// +build 386,darwin
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_darwin.go
+
+package unix
+
+const (
+       sizeofPtr      = 0x4
+       sizeofShort    = 0x2
+       sizeofInt      = 0x4
+       sizeofLong     = 0x4
+       sizeofLongLong = 0x8
+)
+
+type (
+       _C_short     int16
+       _C_int       int32
+       _C_long      int32
+       _C_long_long int64
+)
+
+type Timespec struct {
+       Sec  int32
+       Nsec int32
+}
+
+type Timeval struct {
+       Sec  int32
+       Usec int32
+}
+
+type Timeval32 struct{}
+
+type Rusage struct {
+       Utime    Timeval
+       Stime    Timeval
+       Maxrss   int32
+       Ixrss    int32
+       Idrss    int32
+       Isrss    int32
+       Minflt   int32
+       Majflt   int32
+       Nswap    int32
+       Inblock  int32
+       Oublock  int32
+       Msgsnd   int32
+       Msgrcv   int32
+       Nsignals int32
+       Nvcsw    int32
+       Nivcsw   int32
+}
+
+type Rlimit struct {
+       Cur uint64
+       Max uint64
+}
+
+type _Gid_t uint32
+
+type Stat_t struct {
+       Dev           int32
+       Mode          uint16
+       Nlink         uint16
+       Ino           uint64
+       Uid           uint32
+       Gid           uint32
+       Rdev          int32
+       Atimespec     Timespec
+       Mtimespec     Timespec
+       Ctimespec     Timespec
+       Birthtimespec Timespec
+       Size          int64
+       Blocks        int64
+       Blksize       int32
+       Flags         uint32
+       Gen           uint32
+       Lspare        int32
+       Qspare        [2]int64
+}
+
+type Statfs_t struct {
+       Bsize       uint32
+       Iosize      int32
+       Blocks      uint64
+       Bfree       uint64
+       Bavail      uint64
+       Files       uint64
+       Ffree       uint64
+       Fsid        Fsid
+       Owner       uint32
+       Type        uint32
+       Flags       uint32
+       Fssubtype   uint32
+       Fstypename  [16]int8
+       Mntonname   [1024]int8
+       Mntfromname [1024]int8
+       Reserved    [8]uint32
+}
+
+type Flock_t struct {
+       Start  int64
+       Len    int64
+       Pid    int32
+       Type   int16
+       Whence int16
+}
+
+type Fstore_t struct {
+       Flags      uint32
+       Posmode    int32
+       Offset     int64
+       Length     int64
+       Bytesalloc int64
+}
+
+type Radvisory_t struct {
+       Offset int64
+       Count  int32
+}
+
+type Fbootstraptransfer_t struct {
+       Offset int64
+       Length uint32
+       Buffer *byte
+}
+
+type Log2phys_t struct {
+       Flags       uint32
+       Contigbytes int64
+       Devoffset   int64
+}
+
+type Fsid struct {
+       Val [2]int32
+}
+
+type Dirent struct {
+       Ino       uint64
+       Seekoff   uint64
+       Reclen    uint16
+       Namlen    uint16
+       Type      uint8
+       Name      [1024]int8
+       Pad_cgo_0 [3]byte
+}
+
+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   [12]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  uint32
+}
+
+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
+       Iov        *Iovec
+       Iovlen     int32
+       Control    *byte
+       Controllen uint32
+       Flags      int32
+}
+
+type Cmsghdr struct {
+       Len   uint32
+       Level int32
+       Type  int32
+}
+
+type Inet4Pktinfo struct {
+       Ifindex  uint32
+       Spec_dst [4]byte /* in_addr */
+       Addr     [4]byte /* in_addr */
+}
+
+type Inet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+       Addr RawSockaddrInet6
+       Mtu  uint32
+}
+
+type ICMPv6Filter struct {
+       Filt [8]uint32
+}
+
+const (
+       SizeofSockaddrInet4    = 0x10
+       SizeofSockaddrInet6    = 0x1c
+       SizeofSockaddrAny      = 0x6c
+       SizeofSockaddrUnix     = 0x6a
+       SizeofSockaddrDatalink = 0x14
+       SizeofLinger           = 0x8
+       SizeofIPMreq           = 0x8
+       SizeofIPv6Mreq         = 0x14
+       SizeofMsghdr           = 0x1c
+       SizeofCmsghdr          = 0xc
+       SizeofInet4Pktinfo     = 0xc
+       SizeofInet6Pktinfo     = 0x14
+       SizeofIPv6MTUInfo      = 0x20
+       SizeofICMPv6Filter     = 0x20
+)
+
+const (
+       PTRACE_TRACEME = 0x0
+       PTRACE_CONT    = 0x7
+       PTRACE_KILL    = 0x8
+)
+
+type Kevent_t struct {
+       Ident  uint32
+       Filter int16
+       Flags  uint16
+       Fflags uint32
+       Data   int32
+       Udata  *byte
+}
+
+type FdSet struct {
+       Bits [32]int32
+}
+
+const (
+       SizeofIfMsghdr    = 0x70
+       SizeofIfData      = 0x60
+       SizeofIfaMsghdr   = 0x14
+       SizeofIfmaMsghdr  = 0x10
+       SizeofIfmaMsghdr2 = 0x14
+       SizeofRtMsghdr    = 0x5c
+       SizeofRtMetrics   = 0x38
+)
+
+type IfMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Data      IfData
+}
+
+type IfData struct {
+       Type       uint8
+       Typelen    uint8
+       Physical   uint8
+       Addrlen    uint8
+       Hdrlen     uint8
+       Recvquota  uint8
+       Xmitquota  uint8
+       Unused1    uint8
+       Mtu        uint32
+       Metric     uint32
+       Baudrate   uint32
+       Ipackets   uint32
+       Ierrors    uint32
+       Opackets   uint32
+       Oerrors    uint32
+       Collisions uint32
+       Ibytes     uint32
+       Obytes     uint32
+       Imcasts    uint32
+       Omcasts    uint32
+       Iqdrops    uint32
+       Noproto    uint32
+       Recvtiming uint32
+       Xmittiming uint32
+       Lastchange Timeval
+       Unused2    uint32
+       Hwassist   uint32
+       Reserved1  uint32
+       Reserved2  uint32
+}
+
+type IfaMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Metric    int32
+}
+
+type IfmaMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+}
+
+type IfmaMsghdr2 struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Refcount  int32
+}
+
+type RtMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Flags     int32
+       Addrs     int32
+       Pid       int32
+       Seq       int32
+       Errno     int32
+       Use       int32
+       Inits     uint32
+       Rmx       RtMetrics
+}
+
+type RtMetrics struct {
+       Locks    uint32
+       Mtu      uint32
+       Hopcount uint32
+       Expire   int32
+       Recvpipe uint32
+       Sendpipe uint32
+       Ssthresh uint32
+       Rtt      uint32
+       Rttvar   uint32
+       Pksent   uint32
+       Filler   [4]uint32
+}
+
+const (
+       SizeofBpfVersion = 0x4
+       SizeofBpfStat    = 0x8
+       SizeofBpfProgram = 0x8
+       SizeofBpfInsn    = 0x8
+       SizeofBpfHdr     = 0x14
+)
+
+type BpfVersion struct {
+       Major uint16
+       Minor uint16
+}
+
+type BpfStat struct {
+       Recv uint32
+       Drop uint32
+}
+
+type BpfProgram struct {
+       Len   uint32
+       Insns *BpfInsn
+}
+
+type BpfInsn struct {
+       Code uint16
+       Jt   uint8
+       Jf   uint8
+       K    uint32
+}
+
+type BpfHdr struct {
+       Tstamp    Timeval
+       Caplen    uint32
+       Datalen   uint32
+       Hdrlen    uint16
+       Pad_cgo_0 [2]byte
+}
+
+type Termios struct {
+       Iflag  uint32
+       Oflag  uint32
+       Cflag  uint32
+       Lflag  uint32
+       Cc     [20]uint8
+       Ispeed uint32
+       Ospeed uint32
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go
new file mode 100644 (file)
index 0000000..0446578
--- /dev/null
@@ -0,0 +1,462 @@
+// +build amd64,darwin
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_darwin.go
+
+package unix
+
+const (
+       sizeofPtr      = 0x8
+       sizeofShort    = 0x2
+       sizeofInt      = 0x4
+       sizeofLong     = 0x8
+       sizeofLongLong = 0x8
+)
+
+type (
+       _C_short     int16
+       _C_int       int32
+       _C_long      int64
+       _C_long_long int64
+)
+
+type Timespec struct {
+       Sec  int64
+       Nsec int64
+}
+
+type Timeval struct {
+       Sec       int64
+       Usec      int32
+       Pad_cgo_0 [4]byte
+}
+
+type Timeval32 struct {
+       Sec  int32
+       Usec int32
+}
+
+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
+       Mode          uint16
+       Nlink         uint16
+       Ino           uint64
+       Uid           uint32
+       Gid           uint32
+       Rdev          int32
+       Pad_cgo_0     [4]byte
+       Atimespec     Timespec
+       Mtimespec     Timespec
+       Ctimespec     Timespec
+       Birthtimespec Timespec
+       Size          int64
+       Blocks        int64
+       Blksize       int32
+       Flags         uint32
+       Gen           uint32
+       Lspare        int32
+       Qspare        [2]int64
+}
+
+type Statfs_t struct {
+       Bsize       uint32
+       Iosize      int32
+       Blocks      uint64
+       Bfree       uint64
+       Bavail      uint64
+       Files       uint64
+       Ffree       uint64
+       Fsid        Fsid
+       Owner       uint32
+       Type        uint32
+       Flags       uint32
+       Fssubtype   uint32
+       Fstypename  [16]int8
+       Mntonname   [1024]int8
+       Mntfromname [1024]int8
+       Reserved    [8]uint32
+}
+
+type Flock_t struct {
+       Start  int64
+       Len    int64
+       Pid    int32
+       Type   int16
+       Whence int16
+}
+
+type Fstore_t struct {
+       Flags      uint32
+       Posmode    int32
+       Offset     int64
+       Length     int64
+       Bytesalloc int64
+}
+
+type Radvisory_t struct {
+       Offset    int64
+       Count     int32
+       Pad_cgo_0 [4]byte
+}
+
+type Fbootstraptransfer_t struct {
+       Offset int64
+       Length uint64
+       Buffer *byte
+}
+
+type Log2phys_t struct {
+       Flags     uint32
+       Pad_cgo_0 [8]byte
+       Pad_cgo_1 [8]byte
+}
+
+type Fsid struct {
+       Val [2]int32
+}
+
+type Dirent struct {
+       Ino       uint64
+       Seekoff   uint64
+       Reclen    uint16
+       Namlen    uint16
+       Type      uint8
+       Name      [1024]int8
+       Pad_cgo_0 [3]byte
+}
+
+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   [12]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_cgo_0  [4]byte
+       Iov        *Iovec
+       Iovlen     int32
+       Pad_cgo_1  [4]byte
+       Control    *byte
+       Controllen uint32
+       Flags      int32
+}
+
+type Cmsghdr struct {
+       Len   uint32
+       Level int32
+       Type  int32
+}
+
+type Inet4Pktinfo struct {
+       Ifindex  uint32
+       Spec_dst [4]byte /* in_addr */
+       Addr     [4]byte /* in_addr */
+}
+
+type Inet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+       Addr RawSockaddrInet6
+       Mtu  uint32
+}
+
+type ICMPv6Filter struct {
+       Filt [8]uint32
+}
+
+const (
+       SizeofSockaddrInet4    = 0x10
+       SizeofSockaddrInet6    = 0x1c
+       SizeofSockaddrAny      = 0x6c
+       SizeofSockaddrUnix     = 0x6a
+       SizeofSockaddrDatalink = 0x14
+       SizeofLinger           = 0x8
+       SizeofIPMreq           = 0x8
+       SizeofIPv6Mreq         = 0x14
+       SizeofMsghdr           = 0x30
+       SizeofCmsghdr          = 0xc
+       SizeofInet4Pktinfo     = 0xc
+       SizeofInet6Pktinfo     = 0x14
+       SizeofIPv6MTUInfo      = 0x20
+       SizeofICMPv6Filter     = 0x20
+)
+
+const (
+       PTRACE_TRACEME = 0x0
+       PTRACE_CONT    = 0x7
+       PTRACE_KILL    = 0x8
+)
+
+type Kevent_t struct {
+       Ident  uint64
+       Filter int16
+       Flags  uint16
+       Fflags uint32
+       Data   int64
+       Udata  *byte
+}
+
+type FdSet struct {
+       Bits [32]int32
+}
+
+const (
+       SizeofIfMsghdr    = 0x70
+       SizeofIfData      = 0x60
+       SizeofIfaMsghdr   = 0x14
+       SizeofIfmaMsghdr  = 0x10
+       SizeofIfmaMsghdr2 = 0x14
+       SizeofRtMsghdr    = 0x5c
+       SizeofRtMetrics   = 0x38
+)
+
+type IfMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Data      IfData
+}
+
+type IfData struct {
+       Type       uint8
+       Typelen    uint8
+       Physical   uint8
+       Addrlen    uint8
+       Hdrlen     uint8
+       Recvquota  uint8
+       Xmitquota  uint8
+       Unused1    uint8
+       Mtu        uint32
+       Metric     uint32
+       Baudrate   uint32
+       Ipackets   uint32
+       Ierrors    uint32
+       Opackets   uint32
+       Oerrors    uint32
+       Collisions uint32
+       Ibytes     uint32
+       Obytes     uint32
+       Imcasts    uint32
+       Omcasts    uint32
+       Iqdrops    uint32
+       Noproto    uint32
+       Recvtiming uint32
+       Xmittiming uint32
+       Lastchange Timeval32
+       Unused2    uint32
+       Hwassist   uint32
+       Reserved1  uint32
+       Reserved2  uint32
+}
+
+type IfaMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Metric    int32
+}
+
+type IfmaMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+}
+
+type IfmaMsghdr2 struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Refcount  int32
+}
+
+type RtMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Flags     int32
+       Addrs     int32
+       Pid       int32
+       Seq       int32
+       Errno     int32
+       Use       int32
+       Inits     uint32
+       Rmx       RtMetrics
+}
+
+type RtMetrics struct {
+       Locks    uint32
+       Mtu      uint32
+       Hopcount uint32
+       Expire   int32
+       Recvpipe uint32
+       Sendpipe uint32
+       Ssthresh uint32
+       Rtt      uint32
+       Rttvar   uint32
+       Pksent   uint32
+       Filler   [4]uint32
+}
+
+const (
+       SizeofBpfVersion = 0x4
+       SizeofBpfStat    = 0x8
+       SizeofBpfProgram = 0x10
+       SizeofBpfInsn    = 0x8
+       SizeofBpfHdr     = 0x14
+)
+
+type BpfVersion struct {
+       Major uint16
+       Minor uint16
+}
+
+type BpfStat struct {
+       Recv uint32
+       Drop uint32
+}
+
+type BpfProgram struct {
+       Len       uint32
+       Pad_cgo_0 [4]byte
+       Insns     *BpfInsn
+}
+
+type BpfInsn struct {
+       Code uint16
+       Jt   uint8
+       Jf   uint8
+       K    uint32
+}
+
+type BpfHdr struct {
+       Tstamp    Timeval32
+       Caplen    uint32
+       Datalen   uint32
+       Hdrlen    uint16
+       Pad_cgo_0 [2]byte
+}
+
+type Termios struct {
+       Iflag     uint64
+       Oflag     uint64
+       Cflag     uint64
+       Lflag     uint64
+       Cc        [20]uint8
+       Pad_cgo_0 [4]byte
+       Ispeed    uint64
+       Ospeed    uint64
+}
+
+const (
+       AT_FDCWD            = -0x2
+       AT_SYMLINK_NOFOLLOW = 0x20
+)
diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go
new file mode 100644 (file)
index 0000000..66df363
--- /dev/null
@@ -0,0 +1,449 @@
+// NOTE: cgo can't generate struct Stat_t and struct Statfs_t yet
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_darwin.go
+
+// +build arm,darwin
+
+package unix
+
+const (
+       sizeofPtr      = 0x4
+       sizeofShort    = 0x2
+       sizeofInt      = 0x4
+       sizeofLong     = 0x4
+       sizeofLongLong = 0x8
+)
+
+type (
+       _C_short     int16
+       _C_int       int32
+       _C_long      int32
+       _C_long_long int64
+)
+
+type Timespec struct {
+       Sec  int32
+       Nsec int32
+}
+
+type Timeval struct {
+       Sec  int32
+       Usec int32
+}
+
+type Timeval32 [0]byte
+
+type Rusage struct {
+       Utime    Timeval
+       Stime    Timeval
+       Maxrss   int32
+       Ixrss    int32
+       Idrss    int32
+       Isrss    int32
+       Minflt   int32
+       Majflt   int32
+       Nswap    int32
+       Inblock  int32
+       Oublock  int32
+       Msgsnd   int32
+       Msgrcv   int32
+       Nsignals int32
+       Nvcsw    int32
+       Nivcsw   int32
+}
+
+type Rlimit struct {
+       Cur uint64
+       Max uint64
+}
+
+type _Gid_t uint32
+
+type Stat_t struct {
+       Dev           int32
+       Mode          uint16
+       Nlink         uint16
+       Ino           uint64
+       Uid           uint32
+       Gid           uint32
+       Rdev          int32
+       Atimespec     Timespec
+       Mtimespec     Timespec
+       Ctimespec     Timespec
+       Birthtimespec Timespec
+       Size          int64
+       Blocks        int64
+       Blksize       int32
+       Flags         uint32
+       Gen           uint32
+       Lspare        int32
+       Qspare        [2]int64
+}
+
+type Statfs_t struct {
+       Bsize       uint32
+       Iosize      int32
+       Blocks      uint64
+       Bfree       uint64
+       Bavail      uint64
+       Files       uint64
+       Ffree       uint64
+       Fsid        Fsid
+       Owner       uint32
+       Type        uint32
+       Flags       uint32
+       Fssubtype   uint32
+       Fstypename  [16]int8
+       Mntonname   [1024]int8
+       Mntfromname [1024]int8
+       Reserved    [8]uint32
+}
+
+type Flock_t struct {
+       Start  int64
+       Len    int64
+       Pid    int32
+       Type   int16
+       Whence int16
+}
+
+type Fstore_t struct {
+       Flags      uint32
+       Posmode    int32
+       Offset     int64
+       Length     int64
+       Bytesalloc int64
+}
+
+type Radvisory_t struct {
+       Offset int64
+       Count  int32
+}
+
+type Fbootstraptransfer_t struct {
+       Offset int64
+       Length uint32
+       Buffer *byte
+}
+
+type Log2phys_t struct {
+       Flags       uint32
+       Contigbytes int64
+       Devoffset   int64
+}
+
+type Fsid struct {
+       Val [2]int32
+}
+
+type Dirent struct {
+       Ino       uint64
+       Seekoff   uint64
+       Reclen    uint16
+       Namlen    uint16
+       Type      uint8
+       Name      [1024]int8
+       Pad_cgo_0 [3]byte
+}
+
+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   [12]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  uint32
+}
+
+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
+       Iov        *Iovec
+       Iovlen     int32
+       Control    *byte
+       Controllen uint32
+       Flags      int32
+}
+
+type Cmsghdr struct {
+       Len   uint32
+       Level int32
+       Type  int32
+}
+
+type Inet4Pktinfo struct {
+       Ifindex  uint32
+       Spec_dst [4]byte /* in_addr */
+       Addr     [4]byte /* in_addr */
+}
+
+type Inet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+       Addr RawSockaddrInet6
+       Mtu  uint32
+}
+
+type ICMPv6Filter struct {
+       Filt [8]uint32
+}
+
+const (
+       SizeofSockaddrInet4    = 0x10
+       SizeofSockaddrInet6    = 0x1c
+       SizeofSockaddrAny      = 0x6c
+       SizeofSockaddrUnix     = 0x6a
+       SizeofSockaddrDatalink = 0x14
+       SizeofLinger           = 0x8
+       SizeofIPMreq           = 0x8
+       SizeofIPv6Mreq         = 0x14
+       SizeofMsghdr           = 0x1c
+       SizeofCmsghdr          = 0xc
+       SizeofInet4Pktinfo     = 0xc
+       SizeofInet6Pktinfo     = 0x14
+       SizeofIPv6MTUInfo      = 0x20
+       SizeofICMPv6Filter     = 0x20
+)
+
+const (
+       PTRACE_TRACEME = 0x0
+       PTRACE_CONT    = 0x7
+       PTRACE_KILL    = 0x8
+)
+
+type Kevent_t struct {
+       Ident  uint32
+       Filter int16
+       Flags  uint16
+       Fflags uint32
+       Data   int32
+       Udata  *byte
+}
+
+type FdSet struct {
+       Bits [32]int32
+}
+
+const (
+       SizeofIfMsghdr    = 0x70
+       SizeofIfData      = 0x60
+       SizeofIfaMsghdr   = 0x14
+       SizeofIfmaMsghdr  = 0x10
+       SizeofIfmaMsghdr2 = 0x14
+       SizeofRtMsghdr    = 0x5c
+       SizeofRtMetrics   = 0x38
+)
+
+type IfMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Data      IfData
+}
+
+type IfData struct {
+       Type       uint8
+       Typelen    uint8
+       Physical   uint8
+       Addrlen    uint8
+       Hdrlen     uint8
+       Recvquota  uint8
+       Xmitquota  uint8
+       Unused1    uint8
+       Mtu        uint32
+       Metric     uint32
+       Baudrate   uint32
+       Ipackets   uint32
+       Ierrors    uint32
+       Opackets   uint32
+       Oerrors    uint32
+       Collisions uint32
+       Ibytes     uint32
+       Obytes     uint32
+       Imcasts    uint32
+       Omcasts    uint32
+       Iqdrops    uint32
+       Noproto    uint32
+       Recvtiming uint32
+       Xmittiming uint32
+       Lastchange Timeval
+       Unused2    uint32
+       Hwassist   uint32
+       Reserved1  uint32
+       Reserved2  uint32
+}
+
+type IfaMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Metric    int32
+}
+
+type IfmaMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+}
+
+type IfmaMsghdr2 struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Refcount  int32
+}
+
+type RtMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Flags     int32
+       Addrs     int32
+       Pid       int32
+       Seq       int32
+       Errno     int32
+       Use       int32
+       Inits     uint32
+       Rmx       RtMetrics
+}
+
+type RtMetrics struct {
+       Locks    uint32
+       Mtu      uint32
+       Hopcount uint32
+       Expire   int32
+       Recvpipe uint32
+       Sendpipe uint32
+       Ssthresh uint32
+       Rtt      uint32
+       Rttvar   uint32
+       Pksent   uint32
+       Filler   [4]uint32
+}
+
+const (
+       SizeofBpfVersion = 0x4
+       SizeofBpfStat    = 0x8
+       SizeofBpfProgram = 0x8
+       SizeofBpfInsn    = 0x8
+       SizeofBpfHdr     = 0x14
+)
+
+type BpfVersion struct {
+       Major uint16
+       Minor uint16
+}
+
+type BpfStat struct {
+       Recv uint32
+       Drop uint32
+}
+
+type BpfProgram struct {
+       Len   uint32
+       Insns *BpfInsn
+}
+
+type BpfInsn struct {
+       Code uint16
+       Jt   uint8
+       Jf   uint8
+       K    uint32
+}
+
+type BpfHdr struct {
+       Tstamp    Timeval
+       Caplen    uint32
+       Datalen   uint32
+       Hdrlen    uint16
+       Pad_cgo_0 [2]byte
+}
+
+type Termios struct {
+       Iflag  uint32
+       Oflag  uint32
+       Cflag  uint32
+       Lflag  uint32
+       Cc     [20]uint8
+       Ispeed uint32
+       Ospeed uint32
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go
new file mode 100644 (file)
index 0000000..85d56ea
--- /dev/null
@@ -0,0 +1,457 @@
+// +build arm64,darwin
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_darwin.go
+
+package unix
+
+const (
+       sizeofPtr      = 0x8
+       sizeofShort    = 0x2
+       sizeofInt      = 0x4
+       sizeofLong     = 0x8
+       sizeofLongLong = 0x8
+)
+
+type (
+       _C_short     int16
+       _C_int       int32
+       _C_long      int64
+       _C_long_long int64
+)
+
+type Timespec struct {
+       Sec  int64
+       Nsec int64
+}
+
+type Timeval struct {
+       Sec       int64
+       Usec      int32
+       Pad_cgo_0 [4]byte
+}
+
+type Timeval32 struct {
+       Sec  int32
+       Usec int32
+}
+
+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
+       Mode          uint16
+       Nlink         uint16
+       Ino           uint64
+       Uid           uint32
+       Gid           uint32
+       Rdev          int32
+       Pad_cgo_0     [4]byte
+       Atimespec     Timespec
+       Mtimespec     Timespec
+       Ctimespec     Timespec
+       Birthtimespec Timespec
+       Size          int64
+       Blocks        int64
+       Blksize       int32
+       Flags         uint32
+       Gen           uint32
+       Lspare        int32
+       Qspare        [2]int64
+}
+
+type Statfs_t struct {
+       Bsize       uint32
+       Iosize      int32
+       Blocks      uint64
+       Bfree       uint64
+       Bavail      uint64
+       Files       uint64
+       Ffree       uint64
+       Fsid        Fsid
+       Owner       uint32
+       Type        uint32
+       Flags       uint32
+       Fssubtype   uint32
+       Fstypename  [16]int8
+       Mntonname   [1024]int8
+       Mntfromname [1024]int8
+       Reserved    [8]uint32
+}
+
+type Flock_t struct {
+       Start  int64
+       Len    int64
+       Pid    int32
+       Type   int16
+       Whence int16
+}
+
+type Fstore_t struct {
+       Flags      uint32
+       Posmode    int32
+       Offset     int64
+       Length     int64
+       Bytesalloc int64
+}
+
+type Radvisory_t struct {
+       Offset    int64
+       Count     int32
+       Pad_cgo_0 [4]byte
+}
+
+type Fbootstraptransfer_t struct {
+       Offset int64
+       Length uint64
+       Buffer *byte
+}
+
+type Log2phys_t struct {
+       Flags     uint32
+       Pad_cgo_0 [8]byte
+       Pad_cgo_1 [8]byte
+}
+
+type Fsid struct {
+       Val [2]int32
+}
+
+type Dirent struct {
+       Ino       uint64
+       Seekoff   uint64
+       Reclen    uint16
+       Namlen    uint16
+       Type      uint8
+       Name      [1024]int8
+       Pad_cgo_0 [3]byte
+}
+
+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   [12]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_cgo_0  [4]byte
+       Iov        *Iovec
+       Iovlen     int32
+       Pad_cgo_1  [4]byte
+       Control    *byte
+       Controllen uint32
+       Flags      int32
+}
+
+type Cmsghdr struct {
+       Len   uint32
+       Level int32
+       Type  int32
+}
+
+type Inet4Pktinfo struct {
+       Ifindex  uint32
+       Spec_dst [4]byte /* in_addr */
+       Addr     [4]byte /* in_addr */
+}
+
+type Inet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+       Addr RawSockaddrInet6
+       Mtu  uint32
+}
+
+type ICMPv6Filter struct {
+       Filt [8]uint32
+}
+
+const (
+       SizeofSockaddrInet4    = 0x10
+       SizeofSockaddrInet6    = 0x1c
+       SizeofSockaddrAny      = 0x6c
+       SizeofSockaddrUnix     = 0x6a
+       SizeofSockaddrDatalink = 0x14
+       SizeofLinger           = 0x8
+       SizeofIPMreq           = 0x8
+       SizeofIPv6Mreq         = 0x14
+       SizeofMsghdr           = 0x30
+       SizeofCmsghdr          = 0xc
+       SizeofInet4Pktinfo     = 0xc
+       SizeofInet6Pktinfo     = 0x14
+       SizeofIPv6MTUInfo      = 0x20
+       SizeofICMPv6Filter     = 0x20
+)
+
+const (
+       PTRACE_TRACEME = 0x0
+       PTRACE_CONT    = 0x7
+       PTRACE_KILL    = 0x8
+)
+
+type Kevent_t struct {
+       Ident  uint64
+       Filter int16
+       Flags  uint16
+       Fflags uint32
+       Data   int64
+       Udata  *byte
+}
+
+type FdSet struct {
+       Bits [32]int32
+}
+
+const (
+       SizeofIfMsghdr    = 0x70
+       SizeofIfData      = 0x60
+       SizeofIfaMsghdr   = 0x14
+       SizeofIfmaMsghdr  = 0x10
+       SizeofIfmaMsghdr2 = 0x14
+       SizeofRtMsghdr    = 0x5c
+       SizeofRtMetrics   = 0x38
+)
+
+type IfMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Data      IfData
+}
+
+type IfData struct {
+       Type       uint8
+       Typelen    uint8
+       Physical   uint8
+       Addrlen    uint8
+       Hdrlen     uint8
+       Recvquota  uint8
+       Xmitquota  uint8
+       Unused1    uint8
+       Mtu        uint32
+       Metric     uint32
+       Baudrate   uint32
+       Ipackets   uint32
+       Ierrors    uint32
+       Opackets   uint32
+       Oerrors    uint32
+       Collisions uint32
+       Ibytes     uint32
+       Obytes     uint32
+       Imcasts    uint32
+       Omcasts    uint32
+       Iqdrops    uint32
+       Noproto    uint32
+       Recvtiming uint32
+       Xmittiming uint32
+       Lastchange Timeval32
+       Unused2    uint32
+       Hwassist   uint32
+       Reserved1  uint32
+       Reserved2  uint32
+}
+
+type IfaMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Metric    int32
+}
+
+type IfmaMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+}
+
+type IfmaMsghdr2 struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Refcount  int32
+}
+
+type RtMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Flags     int32
+       Addrs     int32
+       Pid       int32
+       Seq       int32
+       Errno     int32
+       Use       int32
+       Inits     uint32
+       Rmx       RtMetrics
+}
+
+type RtMetrics struct {
+       Locks    uint32
+       Mtu      uint32
+       Hopcount uint32
+       Expire   int32
+       Recvpipe uint32
+       Sendpipe uint32
+       Ssthresh uint32
+       Rtt      uint32
+       Rttvar   uint32
+       Pksent   uint32
+       Filler   [4]uint32
+}
+
+const (
+       SizeofBpfVersion = 0x4
+       SizeofBpfStat    = 0x8
+       SizeofBpfProgram = 0x10
+       SizeofBpfInsn    = 0x8
+       SizeofBpfHdr     = 0x14
+)
+
+type BpfVersion struct {
+       Major uint16
+       Minor uint16
+}
+
+type BpfStat struct {
+       Recv uint32
+       Drop uint32
+}
+
+type BpfProgram struct {
+       Len       uint32
+       Pad_cgo_0 [4]byte
+       Insns     *BpfInsn
+}
+
+type BpfInsn struct {
+       Code uint16
+       Jt   uint8
+       Jf   uint8
+       K    uint32
+}
+
+type BpfHdr struct {
+       Tstamp    Timeval32
+       Caplen    uint32
+       Datalen   uint32
+       Hdrlen    uint16
+       Pad_cgo_0 [2]byte
+}
+
+type Termios struct {
+       Iflag     uint64
+       Oflag     uint64
+       Cflag     uint64
+       Lflag     uint64
+       Cc        [20]uint8
+       Pad_cgo_0 [4]byte
+       Ispeed    uint64
+       Ospeed    uint64
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_386.go b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_386.go
new file mode 100644 (file)
index 0000000..b7e7ff0
--- /dev/null
@@ -0,0 +1,437 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_dragonfly.go
+
+// +build 386,dragonfly
+
+package unix
+
+const (
+       sizeofPtr      = 0x4
+       sizeofShort    = 0x2
+       sizeofInt      = 0x4
+       sizeofLong     = 0x4
+       sizeofLongLong = 0x8
+)
+
+type (
+       _C_short     int16
+       _C_int       int32
+       _C_long      int32
+       _C_long_long int64
+)
+
+type Timespec struct {
+       Sec  int32
+       Nsec int32
+}
+
+type Timeval struct {
+       Sec  int32
+       Usec int32
+}
+
+type Rusage struct {
+       Utime    Timeval
+       Stime    Timeval
+       Maxrss   int32
+       Ixrss    int32
+       Idrss    int32
+       Isrss    int32
+       Minflt   int32
+       Majflt   int32
+       Nswap    int32
+       Inblock  int32
+       Oublock  int32
+       Msgsnd   int32
+       Msgrcv   int32
+       Nsignals int32
+       Nvcsw    int32
+       Nivcsw   int32
+}
+
+type Rlimit struct {
+       Cur int64
+       Max int64
+}
+
+type _Gid_t uint32
+
+const (
+       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
+)
+
+type Stat_t struct {
+       Ino      uint64
+       Nlink    uint32
+       Dev      uint32
+       Mode     uint16
+       Padding1 uint16
+       Uid      uint32
+       Gid      uint32
+       Rdev     uint32
+       Atim     Timespec
+       Mtim     Timespec
+       Ctim     Timespec
+       Size     int64
+       Blocks   int64
+       Blksize  uint32
+       Flags    uint32
+       Gen      uint32
+       Lspare   int32
+       Qspare1  int64
+       Qspare2  int64
+}
+
+type Statfs_t struct {
+       Spare2      int32
+       Bsize       int32
+       Iosize      int32
+       Blocks      int32
+       Bfree       int32
+       Bavail      int32
+       Files       int32
+       Ffree       int32
+       Fsid        Fsid
+       Owner       uint32
+       Type        int32
+       Flags       int32
+       Syncwrites  int32
+       Asyncwrites int32
+       Fstypename  [16]int8
+       Mntonname   [80]int8
+       Syncreads   int32
+       Asyncreads  int32
+       Spares1     int16
+       Mntfromname [80]int8
+       Spares2     int16
+       Spare       [2]int32
+}
+
+type Flock_t struct {
+       Start  int64
+       Len    int64
+       Pid    int32
+       Type   int16
+       Whence int16
+}
+
+type Dirent struct {
+       Fileno  uint64
+       Namlen  uint16
+       Type    uint8
+       Unused1 uint8
+       Unused2 uint32
+       Name    [256]int8
+}
+
+type Fsid struct {
+       Val [2]int32
+}
+
+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   [12]int8
+       Rcf    uint16
+       Route  [16]uint16
+}
+
+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  uint32
+}
+
+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
+       Iov        *Iovec
+       Iovlen     int32
+       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 IPv6MTUInfo struct {
+       Addr RawSockaddrInet6
+       Mtu  uint32
+}
+
+type ICMPv6Filter struct {
+       Filt [8]uint32
+}
+
+const (
+       SizeofSockaddrInet4    = 0x10
+       SizeofSockaddrInet6    = 0x1c
+       SizeofSockaddrAny      = 0x6c
+       SizeofSockaddrUnix     = 0x6a
+       SizeofSockaddrDatalink = 0x36
+       SizeofLinger           = 0x8
+       SizeofIPMreq           = 0x8
+       SizeofIPv6Mreq         = 0x14
+       SizeofMsghdr           = 0x1c
+       SizeofCmsghdr          = 0xc
+       SizeofInet6Pktinfo     = 0x14
+       SizeofIPv6MTUInfo      = 0x20
+       SizeofICMPv6Filter     = 0x20
+)
+
+const (
+       PTRACE_TRACEME = 0x0
+       PTRACE_CONT    = 0x7
+       PTRACE_KILL    = 0x8
+)
+
+type Kevent_t struct {
+       Ident  uint32
+       Filter int16
+       Flags  uint16
+       Fflags uint32
+       Data   int32
+       Udata  *byte
+}
+
+type FdSet struct {
+       Bits [32]uint32
+}
+
+const (
+       SizeofIfMsghdr         = 0x68
+       SizeofIfData           = 0x58
+       SizeofIfaMsghdr        = 0x14
+       SizeofIfmaMsghdr       = 0x10
+       SizeofIfAnnounceMsghdr = 0x18
+       SizeofRtMsghdr         = 0x5c
+       SizeofRtMetrics        = 0x38
+)
+
+type IfMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Data      IfData
+}
+
+type IfData struct {
+       Type       uint8
+       Physical   uint8
+       Addrlen    uint8
+       Hdrlen     uint8
+       Recvquota  uint8
+       Xmitquota  uint8
+       Pad_cgo_0  [2]byte
+       Mtu        uint32
+       Metric     uint32
+       Link_state uint32
+       Baudrate   uint64
+       Ipackets   uint32
+       Ierrors    uint32
+       Opackets   uint32
+       Oerrors    uint32
+       Collisions uint32
+       Ibytes     uint32
+       Obytes     uint32
+       Imcasts    uint32
+       Omcasts    uint32
+       Iqdrops    uint32
+       Noproto    uint32
+       Hwassist   uint32
+       Unused     uint32
+       Lastchange Timeval
+}
+
+type IfaMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Metric    int32
+}
+
+type IfmaMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+}
+
+type IfAnnounceMsghdr struct {
+       Msglen  uint16
+       Version uint8
+       Type    uint8
+       Index   uint16
+       Name    [16]int8
+       What    uint16
+}
+
+type RtMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Flags     int32
+       Addrs     int32
+       Pid       int32
+       Seq       int32
+       Errno     int32
+       Use       int32
+       Inits     uint32
+       Rmx       RtMetrics
+}
+
+type RtMetrics struct {
+       Locks     uint32
+       Mtu       uint32
+       Pksent    uint32
+       Expire    uint32
+       Sendpipe  uint32
+       Ssthresh  uint32
+       Rtt       uint32
+       Rttvar    uint32
+       Recvpipe  uint32
+       Hopcount  uint32
+       Mssopt    uint16
+       Pad       uint16
+       Msl       uint32
+       Iwmaxsegs uint32
+       Iwcapsegs uint32
+}
+
+const (
+       SizeofBpfVersion = 0x4
+       SizeofBpfStat    = 0x8
+       SizeofBpfProgram = 0x8
+       SizeofBpfInsn    = 0x8
+       SizeofBpfHdr     = 0x14
+)
+
+type BpfVersion struct {
+       Major uint16
+       Minor uint16
+}
+
+type BpfStat struct {
+       Recv uint32
+       Drop uint32
+}
+
+type BpfProgram struct {
+       Len   uint32
+       Insns *BpfInsn
+}
+
+type BpfInsn struct {
+       Code uint16
+       Jt   uint8
+       Jf   uint8
+       K    uint32
+}
+
+type BpfHdr struct {
+       Tstamp    Timeval
+       Caplen    uint32
+       Datalen   uint32
+       Hdrlen    uint16
+       Pad_cgo_0 [2]byte
+}
+
+type Termios struct {
+       Iflag  uint32
+       Oflag  uint32
+       Cflag  uint32
+       Lflag  uint32
+       Cc     [20]uint8
+       Ispeed uint32
+       Ospeed uint32
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go
new file mode 100644 (file)
index 0000000..8a6f4e1
--- /dev/null
@@ -0,0 +1,443 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_dragonfly.go
+
+// +build amd64,dragonfly
+
+package unix
+
+const (
+       sizeofPtr      = 0x8
+       sizeofShort    = 0x2
+       sizeofInt      = 0x4
+       sizeofLong     = 0x8
+       sizeofLongLong = 0x8
+)
+
+type (
+       _C_short     int16
+       _C_int       int32
+       _C_long      int64
+       _C_long_long int64
+)
+
+type Timespec struct {
+       Sec  int64
+       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 int64
+       Max int64
+}
+
+type _Gid_t uint32
+
+const (
+       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
+)
+
+type Stat_t struct {
+       Ino      uint64
+       Nlink    uint32
+       Dev      uint32
+       Mode     uint16
+       Padding1 uint16
+       Uid      uint32
+       Gid      uint32
+       Rdev     uint32
+       Atim     Timespec
+       Mtim     Timespec
+       Ctim     Timespec
+       Size     int64
+       Blocks   int64
+       Blksize  uint32
+       Flags    uint32
+       Gen      uint32
+       Lspare   int32
+       Qspare1  int64
+       Qspare2  int64
+}
+
+type Statfs_t struct {
+       Spare2      int64
+       Bsize       int64
+       Iosize      int64
+       Blocks      int64
+       Bfree       int64
+       Bavail      int64
+       Files       int64
+       Ffree       int64
+       Fsid        Fsid
+       Owner       uint32
+       Type        int32
+       Flags       int32
+       Pad_cgo_0   [4]byte
+       Syncwrites  int64
+       Asyncwrites int64
+       Fstypename  [16]int8
+       Mntonname   [80]int8
+       Syncreads   int64
+       Asyncreads  int64
+       Spares1     int16
+       Mntfromname [80]int8
+       Spares2     int16
+       Pad_cgo_1   [4]byte
+       Spare       [2]int64
+}
+
+type Flock_t struct {
+       Start  int64
+       Len    int64
+       Pid    int32
+       Type   int16
+       Whence int16
+}
+
+type Dirent struct {
+       Fileno  uint64
+       Namlen  uint16
+       Type    uint8
+       Unused1 uint8
+       Unused2 uint32
+       Name    [256]int8
+}
+
+type Fsid struct {
+       Val [2]int32
+}
+
+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   [12]int8
+       Rcf    uint16
+       Route  [16]uint16
+}
+
+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_cgo_0  [4]byte
+       Iov        *Iovec
+       Iovlen     int32
+       Pad_cgo_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 IPv6MTUInfo struct {
+       Addr RawSockaddrInet6
+       Mtu  uint32
+}
+
+type ICMPv6Filter struct {
+       Filt [8]uint32
+}
+
+const (
+       SizeofSockaddrInet4    = 0x10
+       SizeofSockaddrInet6    = 0x1c
+       SizeofSockaddrAny      = 0x6c
+       SizeofSockaddrUnix     = 0x6a
+       SizeofSockaddrDatalink = 0x36
+       SizeofLinger           = 0x8
+       SizeofIPMreq           = 0x8
+       SizeofIPv6Mreq         = 0x14
+       SizeofMsghdr           = 0x30
+       SizeofCmsghdr          = 0xc
+       SizeofInet6Pktinfo     = 0x14
+       SizeofIPv6MTUInfo      = 0x20
+       SizeofICMPv6Filter     = 0x20
+)
+
+const (
+       PTRACE_TRACEME = 0x0
+       PTRACE_CONT    = 0x7
+       PTRACE_KILL    = 0x8
+)
+
+type Kevent_t struct {
+       Ident  uint64
+       Filter int16
+       Flags  uint16
+       Fflags uint32
+       Data   int64
+       Udata  *byte
+}
+
+type FdSet struct {
+       Bits [16]uint64
+}
+
+const (
+       SizeofIfMsghdr         = 0xb0
+       SizeofIfData           = 0xa0
+       SizeofIfaMsghdr        = 0x14
+       SizeofIfmaMsghdr       = 0x10
+       SizeofIfAnnounceMsghdr = 0x18
+       SizeofRtMsghdr         = 0x98
+       SizeofRtMetrics        = 0x70
+)
+
+type IfMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Data      IfData
+}
+
+type IfData struct {
+       Type       uint8
+       Physical   uint8
+       Addrlen    uint8
+       Hdrlen     uint8
+       Recvquota  uint8
+       Xmitquota  uint8
+       Pad_cgo_0  [2]byte
+       Mtu        uint64
+       Metric     uint64
+       Link_state uint64
+       Baudrate   uint64
+       Ipackets   uint64
+       Ierrors    uint64
+       Opackets   uint64
+       Oerrors    uint64
+       Collisions uint64
+       Ibytes     uint64
+       Obytes     uint64
+       Imcasts    uint64
+       Omcasts    uint64
+       Iqdrops    uint64
+       Noproto    uint64
+       Hwassist   uint64
+       Unused     uint64
+       Lastchange Timeval
+}
+
+type IfaMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Metric    int32
+}
+
+type IfmaMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+}
+
+type IfAnnounceMsghdr struct {
+       Msglen  uint16
+       Version uint8
+       Type    uint8
+       Index   uint16
+       Name    [16]int8
+       What    uint16
+}
+
+type RtMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Flags     int32
+       Addrs     int32
+       Pid       int32
+       Seq       int32
+       Errno     int32
+       Use       int32
+       Inits     uint64
+       Rmx       RtMetrics
+}
+
+type RtMetrics struct {
+       Locks     uint64
+       Mtu       uint64
+       Pksent    uint64
+       Expire    uint64
+       Sendpipe  uint64
+       Ssthresh  uint64
+       Rtt       uint64
+       Rttvar    uint64
+       Recvpipe  uint64
+       Hopcount  uint64
+       Mssopt    uint16
+       Pad       uint16
+       Pad_cgo_0 [4]byte
+       Msl       uint64
+       Iwmaxsegs uint64
+       Iwcapsegs uint64
+}
+
+const (
+       SizeofBpfVersion = 0x4
+       SizeofBpfStat    = 0x8
+       SizeofBpfProgram = 0x10
+       SizeofBpfInsn    = 0x8
+       SizeofBpfHdr     = 0x20
+)
+
+type BpfVersion struct {
+       Major uint16
+       Minor uint16
+}
+
+type BpfStat struct {
+       Recv uint32
+       Drop uint32
+}
+
+type BpfProgram struct {
+       Len       uint32
+       Pad_cgo_0 [4]byte
+       Insns     *BpfInsn
+}
+
+type BpfInsn struct {
+       Code uint16
+       Jt   uint8
+       Jf   uint8
+       K    uint32
+}
+
+type BpfHdr struct {
+       Tstamp    Timeval
+       Caplen    uint32
+       Datalen   uint32
+       Hdrlen    uint16
+       Pad_cgo_0 [6]byte
+}
+
+type Termios struct {
+       Iflag  uint32
+       Oflag  uint32
+       Cflag  uint32
+       Lflag  uint32
+       Cc     [20]uint8
+       Ispeed uint32
+       Ospeed uint32
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go
new file mode 100644 (file)
index 0000000..8cf3094
--- /dev/null
@@ -0,0 +1,502 @@
+// +build 386,freebsd
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_freebsd.go
+
+package unix
+
+const (
+       sizeofPtr      = 0x4
+       sizeofShort    = 0x2
+       sizeofInt      = 0x4
+       sizeofLong     = 0x4
+       sizeofLongLong = 0x8
+)
+
+type (
+       _C_short     int16
+       _C_int       int32
+       _C_long      int32
+       _C_long_long int64
+)
+
+type Timespec struct {
+       Sec  int32
+       Nsec int32
+}
+
+type Timeval struct {
+       Sec  int32
+       Usec int32
+}
+
+type Rusage struct {
+       Utime    Timeval
+       Stime    Timeval
+       Maxrss   int32
+       Ixrss    int32
+       Idrss    int32
+       Isrss    int32
+       Minflt   int32
+       Majflt   int32
+       Nswap    int32
+       Inblock  int32
+       Oublock  int32
+       Msgsnd   int32
+       Msgrcv   int32
+       Nsignals int32
+       Nvcsw    int32
+       Nivcsw   int32
+}
+
+type Rlimit struct {
+       Cur int64
+       Max int64
+}
+
+type _Gid_t uint32
+
+const (
+       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
+)
+
+type Stat_t struct {
+       Dev           uint32
+       Ino           uint32
+       Mode          uint16
+       Nlink         uint16
+       Uid           uint32
+       Gid           uint32
+       Rdev          uint32
+       Atimespec     Timespec
+       Mtimespec     Timespec
+       Ctimespec     Timespec
+       Size          int64
+       Blocks        int64
+       Blksize       uint32
+       Flags         uint32
+       Gen           uint32
+       Lspare        int32
+       Birthtimespec Timespec
+       Pad_cgo_0     [8]byte
+}
+
+type Statfs_t struct {
+       Version     uint32
+       Type        uint32
+       Flags       uint64
+       Bsize       uint64
+       Iosize      uint64
+       Blocks      uint64
+       Bfree       uint64
+       Bavail      int64
+       Files       uint64
+       Ffree       int64
+       Syncwrites  uint64
+       Asyncwrites uint64
+       Syncreads   uint64
+       Asyncreads  uint64
+       Spare       [10]uint64
+       Namemax     uint32
+       Owner       uint32
+       Fsid        Fsid
+       Charspare   [80]int8
+       Fstypename  [16]int8
+       Mntfromname [88]int8
+       Mntonname   [88]int8
+}
+
+type Flock_t struct {
+       Start  int64
+       Len    int64
+       Pid    int32
+       Type   int16
+       Whence int16
+       Sysid  int32
+}
+
+type Dirent struct {
+       Fileno uint32
+       Reclen uint16
+       Type   uint8
+       Namlen uint8
+       Name   [256]int8
+}
+
+type Fsid struct {
+       Val [2]int32
+}
+
+const (
+       FADV_NORMAL     = 0x0
+       FADV_RANDOM     = 0x1
+       FADV_SEQUENTIAL = 0x2
+       FADV_WILLNEED   = 0x3
+       FADV_DONTNEED   = 0x4
+       FADV_NOREUSE    = 0x5
+)
+
+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   [46]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  uint32
+}
+
+type IPMreq struct {
+       Multiaddr [4]byte /* in_addr */
+       Interface [4]byte /* in_addr */
+}
+
+type IPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
+type IPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Interface uint32
+}
+
+type Msghdr struct {
+       Name       *byte
+       Namelen    uint32
+       Iov        *Iovec
+       Iovlen     int32
+       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 IPv6MTUInfo struct {
+       Addr RawSockaddrInet6
+       Mtu  uint32
+}
+
+type ICMPv6Filter struct {
+       Filt [8]uint32
+}
+
+const (
+       SizeofSockaddrInet4    = 0x10
+       SizeofSockaddrInet6    = 0x1c
+       SizeofSockaddrAny      = 0x6c
+       SizeofSockaddrUnix     = 0x6a
+       SizeofSockaddrDatalink = 0x36
+       SizeofLinger           = 0x8
+       SizeofIPMreq           = 0x8
+       SizeofIPMreqn          = 0xc
+       SizeofIPv6Mreq         = 0x14
+       SizeofMsghdr           = 0x1c
+       SizeofCmsghdr          = 0xc
+       SizeofInet6Pktinfo     = 0x14
+       SizeofIPv6MTUInfo      = 0x20
+       SizeofICMPv6Filter     = 0x20
+)
+
+const (
+       PTRACE_TRACEME = 0x0
+       PTRACE_CONT    = 0x7
+       PTRACE_KILL    = 0x8
+)
+
+type Kevent_t struct {
+       Ident  uint32
+       Filter int16
+       Flags  uint16
+       Fflags uint32
+       Data   int32
+       Udata  *byte
+}
+
+type FdSet struct {
+       X__fds_bits [32]uint32
+}
+
+const (
+       sizeofIfMsghdr         = 0x64
+       SizeofIfMsghdr         = 0x60
+       sizeofIfData           = 0x54
+       SizeofIfData           = 0x50
+       SizeofIfaMsghdr        = 0x14
+       SizeofIfmaMsghdr       = 0x10
+       SizeofIfAnnounceMsghdr = 0x18
+       SizeofRtMsghdr         = 0x5c
+       SizeofRtMetrics        = 0x38
+)
+
+type ifMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Data      ifData
+}
+
+type IfMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Data      IfData
+}
+
+type ifData struct {
+       Type        uint8
+       Physical    uint8
+       Addrlen     uint8
+       Hdrlen      uint8
+       Link_state  uint8
+       Vhid        uint8
+       Baudrate_pf uint8
+       Datalen     uint8
+       Mtu         uint32
+       Metric      uint32
+       Baudrate    uint32
+       Ipackets    uint32
+       Ierrors     uint32
+       Opackets    uint32
+       Oerrors     uint32
+       Collisions  uint32
+       Ibytes      uint32
+       Obytes      uint32
+       Imcasts     uint32
+       Omcasts     uint32
+       Iqdrops     uint32
+       Noproto     uint32
+       Hwassist    uint64
+       Epoch       int32
+       Lastchange  Timeval
+}
+
+type IfData struct {
+       Type        uint8
+       Physical    uint8
+       Addrlen     uint8
+       Hdrlen      uint8
+       Link_state  uint8
+       Spare_char1 uint8
+       Spare_char2 uint8
+       Datalen     uint8
+       Mtu         uint32
+       Metric      uint32
+       Baudrate    uint32
+       Ipackets    uint32
+       Ierrors     uint32
+       Opackets    uint32
+       Oerrors     uint32
+       Collisions  uint32
+       Ibytes      uint32
+       Obytes      uint32
+       Imcasts     uint32
+       Omcasts     uint32
+       Iqdrops     uint32
+       Noproto     uint32
+       Hwassist    uint32
+       Epoch       int32
+       Lastchange  Timeval
+}
+
+type IfaMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Metric    int32
+}
+
+type IfmaMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+}
+
+type IfAnnounceMsghdr struct {
+       Msglen  uint16
+       Version uint8
+       Type    uint8
+       Index   uint16
+       Name    [16]int8
+       What    uint16
+}
+
+type RtMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Flags     int32
+       Addrs     int32
+       Pid       int32
+       Seq       int32
+       Errno     int32
+       Fmask     int32
+       Inits     uint32
+       Rmx       RtMetrics
+}
+
+type RtMetrics struct {
+       Locks    uint32
+       Mtu      uint32
+       Hopcount uint32
+       Expire   uint32
+       Recvpipe uint32
+       Sendpipe uint32
+       Ssthresh uint32
+       Rtt      uint32
+       Rttvar   uint32
+       Pksent   uint32
+       Weight   uint32
+       Filler   [3]uint32
+}
+
+const (
+       SizeofBpfVersion    = 0x4
+       SizeofBpfStat       = 0x8
+       SizeofBpfZbuf       = 0xc
+       SizeofBpfProgram    = 0x8
+       SizeofBpfInsn       = 0x8
+       SizeofBpfHdr        = 0x14
+       SizeofBpfZbufHeader = 0x20
+)
+
+type BpfVersion struct {
+       Major uint16
+       Minor uint16
+}
+
+type BpfStat struct {
+       Recv uint32
+       Drop uint32
+}
+
+type BpfZbuf struct {
+       Bufa   *byte
+       Bufb   *byte
+       Buflen uint32
+}
+
+type BpfProgram struct {
+       Len   uint32
+       Insns *BpfInsn
+}
+
+type BpfInsn struct {
+       Code uint16
+       Jt   uint8
+       Jf   uint8
+       K    uint32
+}
+
+type BpfHdr struct {
+       Tstamp    Timeval
+       Caplen    uint32
+       Datalen   uint32
+       Hdrlen    uint16
+       Pad_cgo_0 [2]byte
+}
+
+type BpfZbufHeader struct {
+       Kernel_gen uint32
+       Kernel_len uint32
+       User_gen   uint32
+       X_bzh_pad  [5]uint32
+}
+
+type Termios struct {
+       Iflag  uint32
+       Oflag  uint32
+       Cflag  uint32
+       Lflag  uint32
+       Cc     [20]uint8
+       Ispeed uint32
+       Ospeed uint32
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go
new file mode 100644 (file)
index 0000000..e5feb20
--- /dev/null
@@ -0,0 +1,505 @@
+// +build amd64,freebsd
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_freebsd.go
+
+package unix
+
+const (
+       sizeofPtr      = 0x8
+       sizeofShort    = 0x2
+       sizeofInt      = 0x4
+       sizeofLong     = 0x8
+       sizeofLongLong = 0x8
+)
+
+type (
+       _C_short     int16
+       _C_int       int32
+       _C_long      int64
+       _C_long_long int64
+)
+
+type Timespec struct {
+       Sec  int64
+       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 int64
+       Max int64
+}
+
+type _Gid_t uint32
+
+const (
+       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
+)
+
+type Stat_t struct {
+       Dev           uint32
+       Ino           uint32
+       Mode          uint16
+       Nlink         uint16
+       Uid           uint32
+       Gid           uint32
+       Rdev          uint32
+       Atimespec     Timespec
+       Mtimespec     Timespec
+       Ctimespec     Timespec
+       Size          int64
+       Blocks        int64
+       Blksize       uint32
+       Flags         uint32
+       Gen           uint32
+       Lspare        int32
+       Birthtimespec Timespec
+}
+
+type Statfs_t struct {
+       Version     uint32
+       Type        uint32
+       Flags       uint64
+       Bsize       uint64
+       Iosize      uint64
+       Blocks      uint64
+       Bfree       uint64
+       Bavail      int64
+       Files       uint64
+       Ffree       int64
+       Syncwrites  uint64
+       Asyncwrites uint64
+       Syncreads   uint64
+       Asyncreads  uint64
+       Spare       [10]uint64
+       Namemax     uint32
+       Owner       uint32
+       Fsid        Fsid
+       Charspare   [80]int8
+       Fstypename  [16]int8
+       Mntfromname [88]int8
+       Mntonname   [88]int8
+}
+
+type Flock_t struct {
+       Start     int64
+       Len       int64
+       Pid       int32
+       Type      int16
+       Whence    int16
+       Sysid     int32
+       Pad_cgo_0 [4]byte
+}
+
+type Dirent struct {
+       Fileno uint32
+       Reclen uint16
+       Type   uint8
+       Namlen uint8
+       Name   [256]int8
+}
+
+type Fsid struct {
+       Val [2]int32
+}
+
+const (
+       FADV_NORMAL     = 0x0
+       FADV_RANDOM     = 0x1
+       FADV_SEQUENTIAL = 0x2
+       FADV_WILLNEED   = 0x3
+       FADV_DONTNEED   = 0x4
+       FADV_NOREUSE    = 0x5
+)
+
+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   [46]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 IPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
+type IPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Interface uint32
+}
+
+type Msghdr struct {
+       Name       *byte
+       Namelen    uint32
+       Pad_cgo_0  [4]byte
+       Iov        *Iovec
+       Iovlen     int32
+       Pad_cgo_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 IPv6MTUInfo struct {
+       Addr RawSockaddrInet6
+       Mtu  uint32
+}
+
+type ICMPv6Filter struct {
+       Filt [8]uint32
+}
+
+const (
+       SizeofSockaddrInet4    = 0x10
+       SizeofSockaddrInet6    = 0x1c
+       SizeofSockaddrAny      = 0x6c
+       SizeofSockaddrUnix     = 0x6a
+       SizeofSockaddrDatalink = 0x36
+       SizeofLinger           = 0x8
+       SizeofIPMreq           = 0x8
+       SizeofIPMreqn          = 0xc
+       SizeofIPv6Mreq         = 0x14
+       SizeofMsghdr           = 0x30
+       SizeofCmsghdr          = 0xc
+       SizeofInet6Pktinfo     = 0x14
+       SizeofIPv6MTUInfo      = 0x20
+       SizeofICMPv6Filter     = 0x20
+)
+
+const (
+       PTRACE_TRACEME = 0x0
+       PTRACE_CONT    = 0x7
+       PTRACE_KILL    = 0x8
+)
+
+type Kevent_t struct {
+       Ident  uint64
+       Filter int16
+       Flags  uint16
+       Fflags uint32
+       Data   int64
+       Udata  *byte
+}
+
+type FdSet struct {
+       X__fds_bits [16]uint64
+}
+
+const (
+       sizeofIfMsghdr         = 0xa8
+       SizeofIfMsghdr         = 0xa8
+       sizeofIfData           = 0x98
+       SizeofIfData           = 0x98
+       SizeofIfaMsghdr        = 0x14
+       SizeofIfmaMsghdr       = 0x10
+       SizeofIfAnnounceMsghdr = 0x18
+       SizeofRtMsghdr         = 0x98
+       SizeofRtMetrics        = 0x70
+)
+
+type ifMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Data      ifData
+}
+
+type IfMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Data      IfData
+}
+
+type ifData struct {
+       Type        uint8
+       Physical    uint8
+       Addrlen     uint8
+       Hdrlen      uint8
+       Link_state  uint8
+       Vhid        uint8
+       Baudrate_pf uint8
+       Datalen     uint8
+       Mtu         uint64
+       Metric      uint64
+       Baudrate    uint64
+       Ipackets    uint64
+       Ierrors     uint64
+       Opackets    uint64
+       Oerrors     uint64
+       Collisions  uint64
+       Ibytes      uint64
+       Obytes      uint64
+       Imcasts     uint64
+       Omcasts     uint64
+       Iqdrops     uint64
+       Noproto     uint64
+       Hwassist    uint64
+       Epoch       int64
+       Lastchange  Timeval
+}
+
+type IfData struct {
+       Type        uint8
+       Physical    uint8
+       Addrlen     uint8
+       Hdrlen      uint8
+       Link_state  uint8
+       Spare_char1 uint8
+       Spare_char2 uint8
+       Datalen     uint8
+       Mtu         uint64
+       Metric      uint64
+       Baudrate    uint64
+       Ipackets    uint64
+       Ierrors     uint64
+       Opackets    uint64
+       Oerrors     uint64
+       Collisions  uint64
+       Ibytes      uint64
+       Obytes      uint64
+       Imcasts     uint64
+       Omcasts     uint64
+       Iqdrops     uint64
+       Noproto     uint64
+       Hwassist    uint64
+       Epoch       int64
+       Lastchange  Timeval
+}
+
+type IfaMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Metric    int32
+}
+
+type IfmaMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+}
+
+type IfAnnounceMsghdr struct {
+       Msglen  uint16
+       Version uint8
+       Type    uint8
+       Index   uint16
+       Name    [16]int8
+       What    uint16
+}
+
+type RtMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Flags     int32
+       Addrs     int32
+       Pid       int32
+       Seq       int32
+       Errno     int32
+       Fmask     int32
+       Inits     uint64
+       Rmx       RtMetrics
+}
+
+type RtMetrics struct {
+       Locks    uint64
+       Mtu      uint64
+       Hopcount uint64
+       Expire   uint64
+       Recvpipe uint64
+       Sendpipe uint64
+       Ssthresh uint64
+       Rtt      uint64
+       Rttvar   uint64
+       Pksent   uint64
+       Weight   uint64
+       Filler   [3]uint64
+}
+
+const (
+       SizeofBpfVersion    = 0x4
+       SizeofBpfStat       = 0x8
+       SizeofBpfZbuf       = 0x18
+       SizeofBpfProgram    = 0x10
+       SizeofBpfInsn       = 0x8
+       SizeofBpfHdr        = 0x20
+       SizeofBpfZbufHeader = 0x20
+)
+
+type BpfVersion struct {
+       Major uint16
+       Minor uint16
+}
+
+type BpfStat struct {
+       Recv uint32
+       Drop uint32
+}
+
+type BpfZbuf struct {
+       Bufa   *byte
+       Bufb   *byte
+       Buflen uint64
+}
+
+type BpfProgram struct {
+       Len       uint32
+       Pad_cgo_0 [4]byte
+       Insns     *BpfInsn
+}
+
+type BpfInsn struct {
+       Code uint16
+       Jt   uint8
+       Jf   uint8
+       K    uint32
+}
+
+type BpfHdr struct {
+       Tstamp    Timeval
+       Caplen    uint32
+       Datalen   uint32
+       Hdrlen    uint16
+       Pad_cgo_0 [6]byte
+}
+
+type BpfZbufHeader struct {
+       Kernel_gen uint32
+       Kernel_len uint32
+       User_gen   uint32
+       X_bzh_pad  [5]uint32
+}
+
+type Termios struct {
+       Iflag  uint32
+       Oflag  uint32
+       Cflag  uint32
+       Lflag  uint32
+       Cc     [20]uint8
+       Ispeed uint32
+       Ospeed uint32
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go
new file mode 100644 (file)
index 0000000..5472b54
--- /dev/null
@@ -0,0 +1,497 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -fsigned-char types_freebsd.go
+
+// +build arm,freebsd
+
+package unix
+
+const (
+       sizeofPtr      = 0x4
+       sizeofShort    = 0x2
+       sizeofInt      = 0x4
+       sizeofLong     = 0x4
+       sizeofLongLong = 0x8
+)
+
+type (
+       _C_short     int16
+       _C_int       int32
+       _C_long      int32
+       _C_long_long int64
+)
+
+type Timespec struct {
+       Sec       int64
+       Nsec      int32
+       Pad_cgo_0 [4]byte
+}
+
+type Timeval struct {
+       Sec       int64
+       Usec      int32
+       Pad_cgo_0 [4]byte
+}
+
+type Rusage struct {
+       Utime    Timeval
+       Stime    Timeval
+       Maxrss   int32
+       Ixrss    int32
+       Idrss    int32
+       Isrss    int32
+       Minflt   int32
+       Majflt   int32
+       Nswap    int32
+       Inblock  int32
+       Oublock  int32
+       Msgsnd   int32
+       Msgrcv   int32
+       Nsignals int32
+       Nvcsw    int32
+       Nivcsw   int32
+}
+
+type Rlimit struct {
+       Cur int64
+       Max int64
+}
+
+type _Gid_t uint32
+
+const (
+       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
+)
+
+type Stat_t struct {
+       Dev           uint32
+       Ino           uint32
+       Mode          uint16
+       Nlink         uint16
+       Uid           uint32
+       Gid           uint32
+       Rdev          uint32
+       Atimespec     Timespec
+       Mtimespec     Timespec
+       Ctimespec     Timespec
+       Size          int64
+       Blocks        int64
+       Blksize       uint32
+       Flags         uint32
+       Gen           uint32
+       Lspare        int32
+       Birthtimespec Timespec
+}
+
+type Statfs_t struct {
+       Version     uint32
+       Type        uint32
+       Flags       uint64
+       Bsize       uint64
+       Iosize      uint64
+       Blocks      uint64
+       Bfree       uint64
+       Bavail      int64
+       Files       uint64
+       Ffree       int64
+       Syncwrites  uint64
+       Asyncwrites uint64
+       Syncreads   uint64
+       Asyncreads  uint64
+       Spare       [10]uint64
+       Namemax     uint32
+       Owner       uint32
+       Fsid        Fsid
+       Charspare   [80]int8
+       Fstypename  [16]int8
+       Mntfromname [88]int8
+       Mntonname   [88]int8
+}
+
+type Flock_t struct {
+       Start     int64
+       Len       int64
+       Pid       int32
+       Type      int16
+       Whence    int16
+       Sysid     int32
+       Pad_cgo_0 [4]byte
+}
+
+type Dirent struct {
+       Fileno uint32
+       Reclen uint16
+       Type   uint8
+       Namlen uint8
+       Name   [256]int8
+}
+
+type Fsid struct {
+       Val [2]int32
+}
+
+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   [46]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  uint32
+}
+
+type IPMreq struct {
+       Multiaddr [4]byte /* in_addr */
+       Interface [4]byte /* in_addr */
+}
+
+type IPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
+type IPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Interface uint32
+}
+
+type Msghdr struct {
+       Name       *byte
+       Namelen    uint32
+       Iov        *Iovec
+       Iovlen     int32
+       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 IPv6MTUInfo struct {
+       Addr RawSockaddrInet6
+       Mtu  uint32
+}
+
+type ICMPv6Filter struct {
+       Filt [8]uint32
+}
+
+const (
+       SizeofSockaddrInet4    = 0x10
+       SizeofSockaddrInet6    = 0x1c
+       SizeofSockaddrAny      = 0x6c
+       SizeofSockaddrUnix     = 0x6a
+       SizeofSockaddrDatalink = 0x36
+       SizeofLinger           = 0x8
+       SizeofIPMreq           = 0x8
+       SizeofIPMreqn          = 0xc
+       SizeofIPv6Mreq         = 0x14
+       SizeofMsghdr           = 0x1c
+       SizeofCmsghdr          = 0xc
+       SizeofInet6Pktinfo     = 0x14
+       SizeofIPv6MTUInfo      = 0x20
+       SizeofICMPv6Filter     = 0x20
+)
+
+const (
+       PTRACE_TRACEME = 0x0
+       PTRACE_CONT    = 0x7
+       PTRACE_KILL    = 0x8
+)
+
+type Kevent_t struct {
+       Ident  uint32
+       Filter int16
+       Flags  uint16
+       Fflags uint32
+       Data   int32
+       Udata  *byte
+}
+
+type FdSet struct {
+       X__fds_bits [32]uint32
+}
+
+const (
+       sizeofIfMsghdr         = 0x70
+       SizeofIfMsghdr         = 0x70
+       sizeofIfData           = 0x60
+       SizeofIfData           = 0x60
+       SizeofIfaMsghdr        = 0x14
+       SizeofIfmaMsghdr       = 0x10
+       SizeofIfAnnounceMsghdr = 0x18
+       SizeofRtMsghdr         = 0x5c
+       SizeofRtMetrics        = 0x38
+)
+
+type ifMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Data      ifData
+}
+
+type IfMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Data      IfData
+}
+
+type ifData struct {
+       Type        uint8
+       Physical    uint8
+       Addrlen     uint8
+       Hdrlen      uint8
+       Link_state  uint8
+       Vhid        uint8
+       Baudrate_pf uint8
+       Datalen     uint8
+       Mtu         uint32
+       Metric      uint32
+       Baudrate    uint32
+       Ipackets    uint32
+       Ierrors     uint32
+       Opackets    uint32
+       Oerrors     uint32
+       Collisions  uint32
+       Ibytes      uint32
+       Obytes      uint32
+       Imcasts     uint32
+       Omcasts     uint32
+       Iqdrops     uint32
+       Noproto     uint32
+       Hwassist    uint64
+       Epoch       int64
+       Lastchange  Timeval
+}
+
+type IfData struct {
+       Type        uint8
+       Physical    uint8
+       Addrlen     uint8
+       Hdrlen      uint8
+       Link_state  uint8
+       Spare_char1 uint8
+       Spare_char2 uint8
+       Datalen     uint8
+       Mtu         uint32
+       Metric      uint32
+       Baudrate    uint32
+       Ipackets    uint32
+       Ierrors     uint32
+       Opackets    uint32
+       Oerrors     uint32
+       Collisions  uint32
+       Ibytes      uint32
+       Obytes      uint32
+       Imcasts     uint32
+       Omcasts     uint32
+       Iqdrops     uint32
+       Noproto     uint32
+       Hwassist    uint32
+       Pad_cgo_0   [4]byte
+       Epoch       int64
+       Lastchange  Timeval
+}
+
+type IfaMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Metric    int32
+}
+
+type IfmaMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+}
+
+type IfAnnounceMsghdr struct {
+       Msglen  uint16
+       Version uint8
+       Type    uint8
+       Index   uint16
+       Name    [16]int8
+       What    uint16
+}
+
+type RtMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Flags     int32
+       Addrs     int32
+       Pid       int32
+       Seq       int32
+       Errno     int32
+       Fmask     int32
+       Inits     uint32
+       Rmx       RtMetrics
+}
+
+type RtMetrics struct {
+       Locks    uint32
+       Mtu      uint32
+       Hopcount uint32
+       Expire   uint32
+       Recvpipe uint32
+       Sendpipe uint32
+       Ssthresh uint32
+       Rtt      uint32
+       Rttvar   uint32
+       Pksent   uint32
+       Weight   uint32
+       Filler   [3]uint32
+}
+
+const (
+       SizeofBpfVersion    = 0x4
+       SizeofBpfStat       = 0x8
+       SizeofBpfZbuf       = 0xc
+       SizeofBpfProgram    = 0x8
+       SizeofBpfInsn       = 0x8
+       SizeofBpfHdr        = 0x20
+       SizeofBpfZbufHeader = 0x20
+)
+
+type BpfVersion struct {
+       Major uint16
+       Minor uint16
+}
+
+type BpfStat struct {
+       Recv uint32
+       Drop uint32
+}
+
+type BpfZbuf struct {
+       Bufa   *byte
+       Bufb   *byte
+       Buflen uint32
+}
+
+type BpfProgram struct {
+       Len   uint32
+       Insns *BpfInsn
+}
+
+type BpfInsn struct {
+       Code uint16
+       Jt   uint8
+       Jf   uint8
+       K    uint32
+}
+
+type BpfHdr struct {
+       Tstamp    Timeval
+       Caplen    uint32
+       Datalen   uint32
+       Hdrlen    uint16
+       Pad_cgo_0 [6]byte
+}
+
+type BpfZbufHeader struct {
+       Kernel_gen uint32
+       Kernel_len uint32
+       User_gen   uint32
+       X_bzh_pad  [5]uint32
+}
+
+type Termios struct {
+       Iflag  uint32
+       Oflag  uint32
+       Cflag  uint32
+       Lflag  uint32
+       Cc     [20]uint8
+       Ispeed uint32
+       Ospeed uint32
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go
new file mode 100644 (file)
index 0000000..cf5db0e
--- /dev/null
@@ -0,0 +1,590 @@
+// +build 386,linux
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_linux.go
+
+package unix
+
+const (
+       sizeofPtr      = 0x4
+       sizeofShort    = 0x2
+       sizeofInt      = 0x4
+       sizeofLong     = 0x4
+       sizeofLongLong = 0x8
+       PathMax        = 0x1000
+)
+
+type (
+       _C_short     int16
+       _C_int       int32
+       _C_long      int32
+       _C_long_long int64
+)
+
+type Timespec struct {
+       Sec  int32
+       Nsec int32
+}
+
+type Timeval struct {
+       Sec  int32
+       Usec int32
+}
+
+type Timex struct {
+       Modes     uint32
+       Offset    int32
+       Freq      int32
+       Maxerror  int32
+       Esterror  int32
+       Status    int32
+       Constant  int32
+       Precision int32
+       Tolerance int32
+       Time      Timeval
+       Tick      int32
+       Ppsfreq   int32
+       Jitter    int32
+       Shift     int32
+       Stabil    int32
+       Jitcnt    int32
+       Calcnt    int32
+       Errcnt    int32
+       Stbcnt    int32
+       Tai       int32
+       Pad_cgo_0 [44]byte
+}
+
+type Time_t int32
+
+type Tms struct {
+       Utime  int32
+       Stime  int32
+       Cutime int32
+       Cstime int32
+}
+
+type Utimbuf struct {
+       Actime  int32
+       Modtime int32
+}
+
+type Rusage struct {
+       Utime    Timeval
+       Stime    Timeval
+       Maxrss   int32
+       Ixrss    int32
+       Idrss    int32
+       Isrss    int32
+       Minflt   int32
+       Majflt   int32
+       Nswap    int32
+       Inblock  int32
+       Oublock  int32
+       Msgsnd   int32
+       Msgrcv   int32
+       Nsignals int32
+       Nvcsw    int32
+       Nivcsw   int32
+}
+
+type Rlimit struct {
+       Cur uint64
+       Max uint64
+}
+
+type _Gid_t uint32
+
+type Stat_t struct {
+       Dev       uint64
+       X__pad1   uint16
+       Pad_cgo_0 [2]byte
+       X__st_ino uint32
+       Mode      uint32
+       Nlink     uint32
+       Uid       uint32
+       Gid       uint32
+       Rdev      uint64
+       X__pad2   uint16
+       Pad_cgo_1 [2]byte
+       Size      int64
+       Blksize   int32
+       Blocks    int64
+       Atim      Timespec
+       Mtim      Timespec
+       Ctim      Timespec
+       Ino       uint64
+}
+
+type Statfs_t struct {
+       Type    int32
+       Bsize   int32
+       Blocks  uint64
+       Bfree   uint64
+       Bavail  uint64
+       Files   uint64
+       Ffree   uint64
+       Fsid    Fsid
+       Namelen int32
+       Frsize  int32
+       Flags   int32
+       Spare   [4]int32
+}
+
+type Dirent struct {
+       Ino       uint64
+       Off       int64
+       Reclen    uint16
+       Type      uint8
+       Name      [256]int8
+       Pad_cgo_0 [1]byte
+}
+
+type Fsid struct {
+       X__val [2]int32
+}
+
+type Flock_t struct {
+       Type   int16
+       Whence int16
+       Start  int64
+       Len    int64
+       Pid    int32
+}
+
+type RawSockaddrInet4 struct {
+       Family uint16
+       Port   uint16
+       Addr   [4]byte /* in_addr */
+       Zero   [8]uint8
+}
+
+type RawSockaddrInet6 struct {
+       Family   uint16
+       Port     uint16
+       Flowinfo uint32
+       Addr     [16]byte /* in6_addr */
+       Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+       Family uint16
+       Path   [108]int8
+}
+
+type RawSockaddrLinklayer struct {
+       Family   uint16
+       Protocol uint16
+       Ifindex  int32
+       Hatype   uint16
+       Pkttype  uint8
+       Halen    uint8
+       Addr     [8]uint8
+}
+
+type RawSockaddrNetlink struct {
+       Family uint16
+       Pad    uint16
+       Pid    uint32
+       Groups uint32
+}
+
+type RawSockaddr struct {
+       Family uint16
+       Data   [14]int8
+}
+
+type RawSockaddrAny struct {
+       Addr RawSockaddr
+       Pad  [96]int8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+       Onoff  int32
+       Linger int32
+}
+
+type Iovec struct {
+       Base *byte
+       Len  uint32
+}
+
+type IPMreq struct {
+       Multiaddr [4]byte /* in_addr */
+       Interface [4]byte /* in_addr */
+}
+
+type IPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
+type IPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Interface uint32
+}
+
+type Msghdr struct {
+       Name       *byte
+       Namelen    uint32
+       Iov        *Iovec
+       Iovlen     uint32
+       Control    *byte
+       Controllen uint32
+       Flags      int32
+}
+
+type Cmsghdr struct {
+       Len          uint32
+       Level        int32
+       Type         int32
+       X__cmsg_data [0]uint8
+}
+
+type Inet4Pktinfo struct {
+       Ifindex  int32
+       Spec_dst [4]byte /* in_addr */
+       Addr     [4]byte /* in_addr */
+}
+
+type Inet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+       Addr RawSockaddrInet6
+       Mtu  uint32
+}
+
+type ICMPv6Filter struct {
+       Data [8]uint32
+}
+
+type Ucred struct {
+       Pid int32
+       Uid uint32
+       Gid uint32
+}
+
+type TCPInfo struct {
+       State          uint8
+       Ca_state       uint8
+       Retransmits    uint8
+       Probes         uint8
+       Backoff        uint8
+       Options        uint8
+       Pad_cgo_0      [2]byte
+       Rto            uint32
+       Ato            uint32
+       Snd_mss        uint32
+       Rcv_mss        uint32
+       Unacked        uint32
+       Sacked         uint32
+       Lost           uint32
+       Retrans        uint32
+       Fackets        uint32
+       Last_data_sent uint32
+       Last_ack_sent  uint32
+       Last_data_recv uint32
+       Last_ack_recv  uint32
+       Pmtu           uint32
+       Rcv_ssthresh   uint32
+       Rtt            uint32
+       Rttvar         uint32
+       Snd_ssthresh   uint32
+       Snd_cwnd       uint32
+       Advmss         uint32
+       Reordering     uint32
+       Rcv_rtt        uint32
+       Rcv_space      uint32
+       Total_retrans  uint32
+}
+
+const (
+       SizeofSockaddrInet4     = 0x10
+       SizeofSockaddrInet6     = 0x1c
+       SizeofSockaddrAny       = 0x70
+       SizeofSockaddrUnix      = 0x6e
+       SizeofSockaddrLinklayer = 0x14
+       SizeofSockaddrNetlink   = 0xc
+       SizeofLinger            = 0x8
+       SizeofIPMreq            = 0x8
+       SizeofIPMreqn           = 0xc
+       SizeofIPv6Mreq          = 0x14
+       SizeofMsghdr            = 0x1c
+       SizeofCmsghdr           = 0xc
+       SizeofInet4Pktinfo      = 0xc
+       SizeofInet6Pktinfo      = 0x14
+       SizeofIPv6MTUInfo       = 0x20
+       SizeofICMPv6Filter      = 0x20
+       SizeofUcred             = 0xc
+       SizeofTCPInfo           = 0x68
+)
+
+const (
+       IFA_UNSPEC          = 0x0
+       IFA_ADDRESS         = 0x1
+       IFA_LOCAL           = 0x2
+       IFA_LABEL           = 0x3
+       IFA_BROADCAST       = 0x4
+       IFA_ANYCAST         = 0x5
+       IFA_CACHEINFO       = 0x6
+       IFA_MULTICAST       = 0x7
+       IFLA_UNSPEC         = 0x0
+       IFLA_ADDRESS        = 0x1
+       IFLA_BROADCAST      = 0x2
+       IFLA_IFNAME         = 0x3
+       IFLA_MTU            = 0x4
+       IFLA_LINK           = 0x5
+       IFLA_QDISC          = 0x6
+       IFLA_STATS          = 0x7
+       IFLA_COST           = 0x8
+       IFLA_PRIORITY       = 0x9
+       IFLA_MASTER         = 0xa
+       IFLA_WIRELESS       = 0xb
+       IFLA_PROTINFO       = 0xc
+       IFLA_TXQLEN         = 0xd
+       IFLA_MAP            = 0xe
+       IFLA_WEIGHT         = 0xf
+       IFLA_OPERSTATE      = 0x10
+       IFLA_LINKMODE       = 0x11
+       IFLA_LINKINFO       = 0x12
+       IFLA_NET_NS_PID     = 0x13
+       IFLA_IFALIAS        = 0x14
+       IFLA_MAX            = 0x1d
+       RT_SCOPE_UNIVERSE   = 0x0
+       RT_SCOPE_SITE       = 0xc8
+       RT_SCOPE_LINK       = 0xfd
+       RT_SCOPE_HOST       = 0xfe
+       RT_SCOPE_NOWHERE    = 0xff
+       RT_TABLE_UNSPEC     = 0x0
+       RT_TABLE_COMPAT     = 0xfc
+       RT_TABLE_DEFAULT    = 0xfd
+       RT_TABLE_MAIN       = 0xfe
+       RT_TABLE_LOCAL      = 0xff
+       RT_TABLE_MAX        = 0xffffffff
+       RTA_UNSPEC          = 0x0
+       RTA_DST             = 0x1
+       RTA_SRC             = 0x2
+       RTA_IIF             = 0x3
+       RTA_OIF             = 0x4
+       RTA_GATEWAY         = 0x5
+       RTA_PRIORITY        = 0x6
+       RTA_PREFSRC         = 0x7
+       RTA_METRICS         = 0x8
+       RTA_MULTIPATH       = 0x9
+       RTA_FLOW            = 0xb
+       RTA_CACHEINFO       = 0xc
+       RTA_TABLE           = 0xf
+       RTN_UNSPEC          = 0x0
+       RTN_UNICAST         = 0x1
+       RTN_LOCAL           = 0x2
+       RTN_BROADCAST       = 0x3
+       RTN_ANYCAST         = 0x4
+       RTN_MULTICAST       = 0x5
+       RTN_BLACKHOLE       = 0x6
+       RTN_UNREACHABLE     = 0x7
+       RTN_PROHIBIT        = 0x8
+       RTN_THROW           = 0x9
+       RTN_NAT             = 0xa
+       RTN_XRESOLVE        = 0xb
+       RTNLGRP_NONE        = 0x0
+       RTNLGRP_LINK        = 0x1
+       RTNLGRP_NOTIFY      = 0x2
+       RTNLGRP_NEIGH       = 0x3
+       RTNLGRP_TC          = 0x4
+       RTNLGRP_IPV4_IFADDR = 0x5
+       RTNLGRP_IPV4_MROUTE = 0x6
+       RTNLGRP_IPV4_ROUTE  = 0x7
+       RTNLGRP_IPV4_RULE   = 0x8
+       RTNLGRP_IPV6_IFADDR = 0x9
+       RTNLGRP_IPV6_MROUTE = 0xa
+       RTNLGRP_IPV6_ROUTE  = 0xb
+       RTNLGRP_IPV6_IFINFO = 0xc
+       RTNLGRP_IPV6_PREFIX = 0x12
+       RTNLGRP_IPV6_RULE   = 0x13
+       RTNLGRP_ND_USEROPT  = 0x14
+       SizeofNlMsghdr      = 0x10
+       SizeofNlMsgerr      = 0x14
+       SizeofRtGenmsg      = 0x1
+       SizeofNlAttr        = 0x4
+       SizeofRtAttr        = 0x4
+       SizeofIfInfomsg     = 0x10
+       SizeofIfAddrmsg     = 0x8
+       SizeofRtMsg         = 0xc
+       SizeofRtNexthop     = 0x8
+)
+
+type NlMsghdr struct {
+       Len   uint32
+       Type  uint16
+       Flags uint16
+       Seq   uint32
+       Pid   uint32
+}
+
+type NlMsgerr struct {
+       Error int32
+       Msg   NlMsghdr
+}
+
+type RtGenmsg struct {
+       Family uint8
+}
+
+type NlAttr struct {
+       Len  uint16
+       Type uint16
+}
+
+type RtAttr struct {
+       Len  uint16
+       Type uint16
+}
+
+type IfInfomsg struct {
+       Family     uint8
+       X__ifi_pad uint8
+       Type       uint16
+       Index      int32
+       Flags      uint32
+       Change     uint32
+}
+
+type IfAddrmsg struct {
+       Family    uint8
+       Prefixlen uint8
+       Flags     uint8
+       Scope     uint8
+       Index     uint32
+}
+
+type RtMsg struct {
+       Family   uint8
+       Dst_len  uint8
+       Src_len  uint8
+       Tos      uint8
+       Table    uint8
+       Protocol uint8
+       Scope    uint8
+       Type     uint8
+       Flags    uint32
+}
+
+type RtNexthop struct {
+       Len     uint16
+       Flags   uint8
+       Hops    uint8
+       Ifindex int32
+}
+
+const (
+       SizeofSockFilter = 0x8
+       SizeofSockFprog  = 0x8
+)
+
+type SockFilter struct {
+       Code uint16
+       Jt   uint8
+       Jf   uint8
+       K    uint32
+}
+
+type SockFprog struct {
+       Len       uint16
+       Pad_cgo_0 [2]byte
+       Filter    *SockFilter
+}
+
+type InotifyEvent struct {
+       Wd     int32
+       Mask   uint32
+       Cookie uint32
+       Len    uint32
+       Name   [0]int8
+}
+
+const SizeofInotifyEvent = 0x10
+
+type PtraceRegs struct {
+       Ebx      int32
+       Ecx      int32
+       Edx      int32
+       Esi      int32
+       Edi      int32
+       Ebp      int32
+       Eax      int32
+       Xds      int32
+       Xes      int32
+       Xfs      int32
+       Xgs      int32
+       Orig_eax int32
+       Eip      int32
+       Xcs      int32
+       Eflags   int32
+       Esp      int32
+       Xss      int32
+}
+
+type FdSet struct {
+       Bits [32]int32
+}
+
+type Sysinfo_t struct {
+       Uptime    int32
+       Loads     [3]uint32
+       Totalram  uint32
+       Freeram   uint32
+       Sharedram uint32
+       Bufferram uint32
+       Totalswap uint32
+       Freeswap  uint32
+       Procs     uint16
+       Pad       uint16
+       Totalhigh uint32
+       Freehigh  uint32
+       Unit      uint32
+       X_f       [8]int8
+}
+
+type Utsname struct {
+       Sysname    [65]int8
+       Nodename   [65]int8
+       Release    [65]int8
+       Version    [65]int8
+       Machine    [65]int8
+       Domainname [65]int8
+}
+
+type Ustat_t struct {
+       Tfree  int32
+       Tinode uint32
+       Fname  [6]int8
+       Fpack  [6]int8
+}
+
+type EpollEvent struct {
+       Events uint32
+       Fd     int32
+       Pad    int32
+}
+
+const (
+       AT_FDCWD            = -0x64
+       AT_SYMLINK_NOFOLLOW = 0x100
+       AT_REMOVEDIR        = 0x200
+)
+
+type Termios struct {
+       Iflag  uint32
+       Oflag  uint32
+       Cflag  uint32
+       Lflag  uint32
+       Line   uint8
+       Cc     [19]uint8
+       Ispeed uint32
+       Ospeed uint32
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go
new file mode 100644 (file)
index 0000000..ac27784
--- /dev/null
@@ -0,0 +1,608 @@
+// +build amd64,linux
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_linux.go
+
+package unix
+
+const (
+       sizeofPtr      = 0x8
+       sizeofShort    = 0x2
+       sizeofInt      = 0x4
+       sizeofLong     = 0x8
+       sizeofLongLong = 0x8
+       PathMax        = 0x1000
+)
+
+type (
+       _C_short     int16
+       _C_int       int32
+       _C_long      int64
+       _C_long_long int64
+)
+
+type Timespec struct {
+       Sec  int64
+       Nsec int64
+}
+
+type Timeval struct {
+       Sec  int64
+       Usec int64
+}
+
+type Timex struct {
+       Modes     uint32
+       Pad_cgo_0 [4]byte
+       Offset    int64
+       Freq      int64
+       Maxerror  int64
+       Esterror  int64
+       Status    int32
+       Pad_cgo_1 [4]byte
+       Constant  int64
+       Precision int64
+       Tolerance int64
+       Time      Timeval
+       Tick      int64
+       Ppsfreq   int64
+       Jitter    int64
+       Shift     int32
+       Pad_cgo_2 [4]byte
+       Stabil    int64
+       Jitcnt    int64
+       Calcnt    int64
+       Errcnt    int64
+       Stbcnt    int64
+       Tai       int32
+       Pad_cgo_3 [44]byte
+}
+
+type Time_t int64
+
+type Tms struct {
+       Utime  int64
+       Stime  int64
+       Cutime int64
+       Cstime int64
+}
+
+type Utimbuf struct {
+       Actime  int64
+       Modtime 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       uint64
+       Ino       uint64
+       Nlink     uint64
+       Mode      uint32
+       Uid       uint32
+       Gid       uint32
+       X__pad0   int32
+       Rdev      uint64
+       Size      int64
+       Blksize   int64
+       Blocks    int64
+       Atim      Timespec
+       Mtim      Timespec
+       Ctim      Timespec
+       X__unused [3]int64
+}
+
+type Statfs_t struct {
+       Type    int64
+       Bsize   int64
+       Blocks  uint64
+       Bfree   uint64
+       Bavail  uint64
+       Files   uint64
+       Ffree   uint64
+       Fsid    Fsid
+       Namelen int64
+       Frsize  int64
+       Flags   int64
+       Spare   [4]int64
+}
+
+type Dirent struct {
+       Ino       uint64
+       Off       int64
+       Reclen    uint16
+       Type      uint8
+       Name      [256]int8
+       Pad_cgo_0 [5]byte
+}
+
+type Fsid struct {
+       X__val [2]int32
+}
+
+type Flock_t struct {
+       Type      int16
+       Whence    int16
+       Pad_cgo_0 [4]byte
+       Start     int64
+       Len       int64
+       Pid       int32
+       Pad_cgo_1 [4]byte
+}
+
+type RawSockaddrInet4 struct {
+       Family uint16
+       Port   uint16
+       Addr   [4]byte /* in_addr */
+       Zero   [8]uint8
+}
+
+type RawSockaddrInet6 struct {
+       Family   uint16
+       Port     uint16
+       Flowinfo uint32
+       Addr     [16]byte /* in6_addr */
+       Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+       Family uint16
+       Path   [108]int8
+}
+
+type RawSockaddrLinklayer struct {
+       Family   uint16
+       Protocol uint16
+       Ifindex  int32
+       Hatype   uint16
+       Pkttype  uint8
+       Halen    uint8
+       Addr     [8]uint8
+}
+
+type RawSockaddrNetlink struct {
+       Family uint16
+       Pad    uint16
+       Pid    uint32
+       Groups uint32
+}
+
+type RawSockaddr struct {
+       Family uint16
+       Data   [14]int8
+}
+
+type RawSockaddrAny struct {
+       Addr RawSockaddr
+       Pad  [96]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 IPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
+type IPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Interface uint32
+}
+
+type Msghdr struct {
+       Name       *byte
+       Namelen    uint32
+       Pad_cgo_0  [4]byte
+       Iov        *Iovec
+       Iovlen     uint64
+       Control    *byte
+       Controllen uint64
+       Flags      int32
+       Pad_cgo_1  [4]byte
+}
+
+type Cmsghdr struct {
+       Len          uint64
+       Level        int32
+       Type         int32
+       X__cmsg_data [0]uint8
+}
+
+type Inet4Pktinfo struct {
+       Ifindex  int32
+       Spec_dst [4]byte /* in_addr */
+       Addr     [4]byte /* in_addr */
+}
+
+type Inet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+       Addr RawSockaddrInet6
+       Mtu  uint32
+}
+
+type ICMPv6Filter struct {
+       Data [8]uint32
+}
+
+type Ucred struct {
+       Pid int32
+       Uid uint32
+       Gid uint32
+}
+
+type TCPInfo struct {
+       State          uint8
+       Ca_state       uint8
+       Retransmits    uint8
+       Probes         uint8
+       Backoff        uint8
+       Options        uint8
+       Pad_cgo_0      [2]byte
+       Rto            uint32
+       Ato            uint32
+       Snd_mss        uint32
+       Rcv_mss        uint32
+       Unacked        uint32
+       Sacked         uint32
+       Lost           uint32
+       Retrans        uint32
+       Fackets        uint32
+       Last_data_sent uint32
+       Last_ack_sent  uint32
+       Last_data_recv uint32
+       Last_ack_recv  uint32
+       Pmtu           uint32
+       Rcv_ssthresh   uint32
+       Rtt            uint32
+       Rttvar         uint32
+       Snd_ssthresh   uint32
+       Snd_cwnd       uint32
+       Advmss         uint32
+       Reordering     uint32
+       Rcv_rtt        uint32
+       Rcv_space      uint32
+       Total_retrans  uint32
+}
+
+const (
+       SizeofSockaddrInet4     = 0x10
+       SizeofSockaddrInet6     = 0x1c
+       SizeofSockaddrAny       = 0x70
+       SizeofSockaddrUnix      = 0x6e
+       SizeofSockaddrLinklayer = 0x14
+       SizeofSockaddrNetlink   = 0xc
+       SizeofLinger            = 0x8
+       SizeofIPMreq            = 0x8
+       SizeofIPMreqn           = 0xc
+       SizeofIPv6Mreq          = 0x14
+       SizeofMsghdr            = 0x38
+       SizeofCmsghdr           = 0x10
+       SizeofInet4Pktinfo      = 0xc
+       SizeofInet6Pktinfo      = 0x14
+       SizeofIPv6MTUInfo       = 0x20
+       SizeofICMPv6Filter      = 0x20
+       SizeofUcred             = 0xc
+       SizeofTCPInfo           = 0x68
+)
+
+const (
+       IFA_UNSPEC          = 0x0
+       IFA_ADDRESS         = 0x1
+       IFA_LOCAL           = 0x2
+       IFA_LABEL           = 0x3
+       IFA_BROADCAST       = 0x4
+       IFA_ANYCAST         = 0x5
+       IFA_CACHEINFO       = 0x6
+       IFA_MULTICAST       = 0x7
+       IFLA_UNSPEC         = 0x0
+       IFLA_ADDRESS        = 0x1
+       IFLA_BROADCAST      = 0x2
+       IFLA_IFNAME         = 0x3
+       IFLA_MTU            = 0x4
+       IFLA_LINK           = 0x5
+       IFLA_QDISC          = 0x6
+       IFLA_STATS          = 0x7
+       IFLA_COST           = 0x8
+       IFLA_PRIORITY       = 0x9
+       IFLA_MASTER         = 0xa
+       IFLA_WIRELESS       = 0xb
+       IFLA_PROTINFO       = 0xc
+       IFLA_TXQLEN         = 0xd
+       IFLA_MAP            = 0xe
+       IFLA_WEIGHT         = 0xf
+       IFLA_OPERSTATE      = 0x10
+       IFLA_LINKMODE       = 0x11
+       IFLA_LINKINFO       = 0x12
+       IFLA_NET_NS_PID     = 0x13
+       IFLA_IFALIAS        = 0x14
+       IFLA_MAX            = 0x1d
+       RT_SCOPE_UNIVERSE   = 0x0
+       RT_SCOPE_SITE       = 0xc8
+       RT_SCOPE_LINK       = 0xfd
+       RT_SCOPE_HOST       = 0xfe
+       RT_SCOPE_NOWHERE    = 0xff
+       RT_TABLE_UNSPEC     = 0x0
+       RT_TABLE_COMPAT     = 0xfc
+       RT_TABLE_DEFAULT    = 0xfd
+       RT_TABLE_MAIN       = 0xfe
+       RT_TABLE_LOCAL      = 0xff
+       RT_TABLE_MAX        = 0xffffffff
+       RTA_UNSPEC          = 0x0
+       RTA_DST             = 0x1
+       RTA_SRC             = 0x2
+       RTA_IIF             = 0x3
+       RTA_OIF             = 0x4
+       RTA_GATEWAY         = 0x5
+       RTA_PRIORITY        = 0x6
+       RTA_PREFSRC         = 0x7
+       RTA_METRICS         = 0x8
+       RTA_MULTIPATH       = 0x9
+       RTA_FLOW            = 0xb
+       RTA_CACHEINFO       = 0xc
+       RTA_TABLE           = 0xf
+       RTN_UNSPEC          = 0x0
+       RTN_UNICAST         = 0x1
+       RTN_LOCAL           = 0x2
+       RTN_BROADCAST       = 0x3
+       RTN_ANYCAST         = 0x4
+       RTN_MULTICAST       = 0x5
+       RTN_BLACKHOLE       = 0x6
+       RTN_UNREACHABLE     = 0x7
+       RTN_PROHIBIT        = 0x8
+       RTN_THROW           = 0x9
+       RTN_NAT             = 0xa
+       RTN_XRESOLVE        = 0xb
+       RTNLGRP_NONE        = 0x0
+       RTNLGRP_LINK        = 0x1
+       RTNLGRP_NOTIFY      = 0x2
+       RTNLGRP_NEIGH       = 0x3
+       RTNLGRP_TC          = 0x4
+       RTNLGRP_IPV4_IFADDR = 0x5
+       RTNLGRP_IPV4_MROUTE = 0x6
+       RTNLGRP_IPV4_ROUTE  = 0x7
+       RTNLGRP_IPV4_RULE   = 0x8
+       RTNLGRP_IPV6_IFADDR = 0x9
+       RTNLGRP_IPV6_MROUTE = 0xa
+       RTNLGRP_IPV6_ROUTE  = 0xb
+       RTNLGRP_IPV6_IFINFO = 0xc
+       RTNLGRP_IPV6_PREFIX = 0x12
+       RTNLGRP_IPV6_RULE   = 0x13
+       RTNLGRP_ND_USEROPT  = 0x14
+       SizeofNlMsghdr      = 0x10
+       SizeofNlMsgerr      = 0x14
+       SizeofRtGenmsg      = 0x1
+       SizeofNlAttr        = 0x4
+       SizeofRtAttr        = 0x4
+       SizeofIfInfomsg     = 0x10
+       SizeofIfAddrmsg     = 0x8
+       SizeofRtMsg         = 0xc
+       SizeofRtNexthop     = 0x8
+)
+
+type NlMsghdr struct {
+       Len   uint32
+       Type  uint16
+       Flags uint16
+       Seq   uint32
+       Pid   uint32
+}
+
+type NlMsgerr struct {
+       Error int32
+       Msg   NlMsghdr
+}
+
+type RtGenmsg struct {
+       Family uint8
+}
+
+type NlAttr struct {
+       Len  uint16
+       Type uint16
+}
+
+type RtAttr struct {
+       Len  uint16
+       Type uint16
+}
+
+type IfInfomsg struct {
+       Family     uint8
+       X__ifi_pad uint8
+       Type       uint16
+       Index      int32
+       Flags      uint32
+       Change     uint32
+}
+
+type IfAddrmsg struct {
+       Family    uint8
+       Prefixlen uint8
+       Flags     uint8
+       Scope     uint8
+       Index     uint32
+}
+
+type RtMsg struct {
+       Family   uint8
+       Dst_len  uint8
+       Src_len  uint8
+       Tos      uint8
+       Table    uint8
+       Protocol uint8
+       Scope    uint8
+       Type     uint8
+       Flags    uint32
+}
+
+type RtNexthop struct {
+       Len     uint16
+       Flags   uint8
+       Hops    uint8
+       Ifindex int32
+}
+
+const (
+       SizeofSockFilter = 0x8
+       SizeofSockFprog  = 0x10
+)
+
+type SockFilter struct {
+       Code uint16
+       Jt   uint8
+       Jf   uint8
+       K    uint32
+}
+
+type SockFprog struct {
+       Len       uint16
+       Pad_cgo_0 [6]byte
+       Filter    *SockFilter
+}
+
+type InotifyEvent struct {
+       Wd     int32
+       Mask   uint32
+       Cookie uint32
+       Len    uint32
+       Name   [0]int8
+}
+
+const SizeofInotifyEvent = 0x10
+
+type PtraceRegs struct {
+       R15      uint64
+       R14      uint64
+       R13      uint64
+       R12      uint64
+       Rbp      uint64
+       Rbx      uint64
+       R11      uint64
+       R10      uint64
+       R9       uint64
+       R8       uint64
+       Rax      uint64
+       Rcx      uint64
+       Rdx      uint64
+       Rsi      uint64
+       Rdi      uint64
+       Orig_rax uint64
+       Rip      uint64
+       Cs       uint64
+       Eflags   uint64
+       Rsp      uint64
+       Ss       uint64
+       Fs_base  uint64
+       Gs_base  uint64
+       Ds       uint64
+       Es       uint64
+       Fs       uint64
+       Gs       uint64
+}
+
+type FdSet struct {
+       Bits [16]int64
+}
+
+type Sysinfo_t struct {
+       Uptime    int64
+       Loads     [3]uint64
+       Totalram  uint64
+       Freeram   uint64
+       Sharedram uint64
+       Bufferram uint64
+       Totalswap uint64
+       Freeswap  uint64
+       Procs     uint16
+       Pad       uint16
+       Pad_cgo_0 [4]byte
+       Totalhigh uint64
+       Freehigh  uint64
+       Unit      uint32
+       X_f       [0]int8
+       Pad_cgo_1 [4]byte
+}
+
+type Utsname struct {
+       Sysname    [65]int8
+       Nodename   [65]int8
+       Release    [65]int8
+       Version    [65]int8
+       Machine    [65]int8
+       Domainname [65]int8
+}
+
+type Ustat_t struct {
+       Tfree     int32
+       Pad_cgo_0 [4]byte
+       Tinode    uint64
+       Fname     [6]int8
+       Fpack     [6]int8
+       Pad_cgo_1 [4]byte
+}
+
+type EpollEvent struct {
+       Events uint32
+       Fd     int32
+       Pad    int32
+}
+
+const (
+       AT_FDCWD            = -0x64
+       AT_SYMLINK_NOFOLLOW = 0x100
+       AT_REMOVEDIR        = 0x200
+)
+
+type Termios struct {
+       Iflag  uint32
+       Oflag  uint32
+       Cflag  uint32
+       Lflag  uint32
+       Line   uint8
+       Cc     [19]uint8
+       Ispeed uint32
+       Ospeed uint32
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go
new file mode 100644 (file)
index 0000000..b318bb8
--- /dev/null
@@ -0,0 +1,579 @@
+// +build arm,linux
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_linux.go
+
+package unix
+
+const (
+       sizeofPtr      = 0x4
+       sizeofShort    = 0x2
+       sizeofInt      = 0x4
+       sizeofLong     = 0x4
+       sizeofLongLong = 0x8
+       PathMax        = 0x1000
+)
+
+type (
+       _C_short     int16
+       _C_int       int32
+       _C_long      int32
+       _C_long_long int64
+)
+
+type Timespec struct {
+       Sec  int32
+       Nsec int32
+}
+
+type Timeval struct {
+       Sec  int32
+       Usec int32
+}
+
+type Timex struct {
+       Modes     uint32
+       Offset    int32
+       Freq      int32
+       Maxerror  int32
+       Esterror  int32
+       Status    int32
+       Constant  int32
+       Precision int32
+       Tolerance int32
+       Time      Timeval
+       Tick      int32
+       Ppsfreq   int32
+       Jitter    int32
+       Shift     int32
+       Stabil    int32
+       Jitcnt    int32
+       Calcnt    int32
+       Errcnt    int32
+       Stbcnt    int32
+       Tai       int32
+       Pad_cgo_0 [44]byte
+}
+
+type Time_t int32
+
+type Tms struct {
+       Utime  int32
+       Stime  int32
+       Cutime int32
+       Cstime int32
+}
+
+type Utimbuf struct {
+       Actime  int32
+       Modtime int32
+}
+
+type Rusage struct {
+       Utime    Timeval
+       Stime    Timeval
+       Maxrss   int32
+       Ixrss    int32
+       Idrss    int32
+       Isrss    int32
+       Minflt   int32
+       Majflt   int32
+       Nswap    int32
+       Inblock  int32
+       Oublock  int32
+       Msgsnd   int32
+       Msgrcv   int32
+       Nsignals int32
+       Nvcsw    int32
+       Nivcsw   int32
+}
+
+type Rlimit struct {
+       Cur uint64
+       Max uint64
+}
+
+type _Gid_t uint32
+
+type Stat_t struct {
+       Dev       uint64
+       X__pad1   uint16
+       Pad_cgo_0 [2]byte
+       X__st_ino uint32
+       Mode      uint32
+       Nlink     uint32
+       Uid       uint32
+       Gid       uint32
+       Rdev      uint64
+       X__pad2   uint16
+       Pad_cgo_1 [6]byte
+       Size      int64
+       Blksize   int32
+       Pad_cgo_2 [4]byte
+       Blocks    int64
+       Atim      Timespec
+       Mtim      Timespec
+       Ctim      Timespec
+       Ino       uint64
+}
+
+type Statfs_t struct {
+       Type      int32
+       Bsize     int32
+       Blocks    uint64
+       Bfree     uint64
+       Bavail    uint64
+       Files     uint64
+       Ffree     uint64
+       Fsid      Fsid
+       Namelen   int32
+       Frsize    int32
+       Flags     int32
+       Spare     [4]int32
+       Pad_cgo_0 [4]byte
+}
+
+type Dirent struct {
+       Ino       uint64
+       Off       int64
+       Reclen    uint16
+       Type      uint8
+       Name      [256]uint8
+       Pad_cgo_0 [5]byte
+}
+
+type Fsid struct {
+       X__val [2]int32
+}
+
+type Flock_t struct {
+       Type      int16
+       Whence    int16
+       Pad_cgo_0 [4]byte
+       Start     int64
+       Len       int64
+       Pid       int32
+       Pad_cgo_1 [4]byte
+}
+
+type RawSockaddrInet4 struct {
+       Family uint16
+       Port   uint16
+       Addr   [4]byte /* in_addr */
+       Zero   [8]uint8
+}
+
+type RawSockaddrInet6 struct {
+       Family   uint16
+       Port     uint16
+       Flowinfo uint32
+       Addr     [16]byte /* in6_addr */
+       Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+       Family uint16
+       Path   [108]int8
+}
+
+type RawSockaddrLinklayer struct {
+       Family   uint16
+       Protocol uint16
+       Ifindex  int32
+       Hatype   uint16
+       Pkttype  uint8
+       Halen    uint8
+       Addr     [8]uint8
+}
+
+type RawSockaddrNetlink struct {
+       Family uint16
+       Pad    uint16
+       Pid    uint32
+       Groups uint32
+}
+
+type RawSockaddr struct {
+       Family uint16
+       Data   [14]uint8
+}
+
+type RawSockaddrAny struct {
+       Addr RawSockaddr
+       Pad  [96]uint8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+       Onoff  int32
+       Linger int32
+}
+
+type Iovec struct {
+       Base *byte
+       Len  uint32
+}
+
+type IPMreq struct {
+       Multiaddr [4]byte /* in_addr */
+       Interface [4]byte /* in_addr */
+}
+
+type IPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
+type IPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Interface uint32
+}
+
+type Msghdr struct {
+       Name       *byte
+       Namelen    uint32
+       Iov        *Iovec
+       Iovlen     uint32
+       Control    *byte
+       Controllen uint32
+       Flags      int32
+}
+
+type Cmsghdr struct {
+       Len          uint32
+       Level        int32
+       Type         int32
+       X__cmsg_data [0]uint8
+}
+
+type Inet4Pktinfo struct {
+       Ifindex  int32
+       Spec_dst [4]byte /* in_addr */
+       Addr     [4]byte /* in_addr */
+}
+
+type Inet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+       Addr RawSockaddrInet6
+       Mtu  uint32
+}
+
+type ICMPv6Filter struct {
+       Data [8]uint32
+}
+
+type Ucred struct {
+       Pid int32
+       Uid uint32
+       Gid uint32
+}
+
+type TCPInfo struct {
+       State          uint8
+       Ca_state       uint8
+       Retransmits    uint8
+       Probes         uint8
+       Backoff        uint8
+       Options        uint8
+       Pad_cgo_0      [2]byte
+       Rto            uint32
+       Ato            uint32
+       Snd_mss        uint32
+       Rcv_mss        uint32
+       Unacked        uint32
+       Sacked         uint32
+       Lost           uint32
+       Retrans        uint32
+       Fackets        uint32
+       Last_data_sent uint32
+       Last_ack_sent  uint32
+       Last_data_recv uint32
+       Last_ack_recv  uint32
+       Pmtu           uint32
+       Rcv_ssthresh   uint32
+       Rtt            uint32
+       Rttvar         uint32
+       Snd_ssthresh   uint32
+       Snd_cwnd       uint32
+       Advmss         uint32
+       Reordering     uint32
+       Rcv_rtt        uint32
+       Rcv_space      uint32
+       Total_retrans  uint32
+}
+
+const (
+       SizeofSockaddrInet4     = 0x10
+       SizeofSockaddrInet6     = 0x1c
+       SizeofSockaddrAny       = 0x70
+       SizeofSockaddrUnix      = 0x6e
+       SizeofSockaddrLinklayer = 0x14
+       SizeofSockaddrNetlink   = 0xc
+       SizeofLinger            = 0x8
+       SizeofIPMreq            = 0x8
+       SizeofIPMreqn           = 0xc
+       SizeofIPv6Mreq          = 0x14
+       SizeofMsghdr            = 0x1c
+       SizeofCmsghdr           = 0xc
+       SizeofInet4Pktinfo      = 0xc
+       SizeofInet6Pktinfo      = 0x14
+       SizeofIPv6MTUInfo       = 0x20
+       SizeofICMPv6Filter      = 0x20
+       SizeofUcred             = 0xc
+       SizeofTCPInfo           = 0x68
+)
+
+const (
+       IFA_UNSPEC          = 0x0
+       IFA_ADDRESS         = 0x1
+       IFA_LOCAL           = 0x2
+       IFA_LABEL           = 0x3
+       IFA_BROADCAST       = 0x4
+       IFA_ANYCAST         = 0x5
+       IFA_CACHEINFO       = 0x6
+       IFA_MULTICAST       = 0x7
+       IFLA_UNSPEC         = 0x0
+       IFLA_ADDRESS        = 0x1
+       IFLA_BROADCAST      = 0x2
+       IFLA_IFNAME         = 0x3
+       IFLA_MTU            = 0x4
+       IFLA_LINK           = 0x5
+       IFLA_QDISC          = 0x6
+       IFLA_STATS          = 0x7
+       IFLA_COST           = 0x8
+       IFLA_PRIORITY       = 0x9
+       IFLA_MASTER         = 0xa
+       IFLA_WIRELESS       = 0xb
+       IFLA_PROTINFO       = 0xc
+       IFLA_TXQLEN         = 0xd
+       IFLA_MAP            = 0xe
+       IFLA_WEIGHT         = 0xf
+       IFLA_OPERSTATE      = 0x10
+       IFLA_LINKMODE       = 0x11
+       IFLA_LINKINFO       = 0x12
+       IFLA_NET_NS_PID     = 0x13
+       IFLA_IFALIAS        = 0x14
+       IFLA_MAX            = 0x1d
+       RT_SCOPE_UNIVERSE   = 0x0
+       RT_SCOPE_SITE       = 0xc8
+       RT_SCOPE_LINK       = 0xfd
+       RT_SCOPE_HOST       = 0xfe
+       RT_SCOPE_NOWHERE    = 0xff
+       RT_TABLE_UNSPEC     = 0x0
+       RT_TABLE_COMPAT     = 0xfc
+       RT_TABLE_DEFAULT    = 0xfd
+       RT_TABLE_MAIN       = 0xfe
+       RT_TABLE_LOCAL      = 0xff
+       RT_TABLE_MAX        = 0xffffffff
+       RTA_UNSPEC          = 0x0
+       RTA_DST             = 0x1
+       RTA_SRC             = 0x2
+       RTA_IIF             = 0x3
+       RTA_OIF             = 0x4
+       RTA_GATEWAY         = 0x5
+       RTA_PRIORITY        = 0x6
+       RTA_PREFSRC         = 0x7
+       RTA_METRICS         = 0x8
+       RTA_MULTIPATH       = 0x9
+       RTA_FLOW            = 0xb
+       RTA_CACHEINFO       = 0xc
+       RTA_TABLE           = 0xf
+       RTN_UNSPEC          = 0x0
+       RTN_UNICAST         = 0x1
+       RTN_LOCAL           = 0x2
+       RTN_BROADCAST       = 0x3
+       RTN_ANYCAST         = 0x4
+       RTN_MULTICAST       = 0x5
+       RTN_BLACKHOLE       = 0x6
+       RTN_UNREACHABLE     = 0x7
+       RTN_PROHIBIT        = 0x8
+       RTN_THROW           = 0x9
+       RTN_NAT             = 0xa
+       RTN_XRESOLVE        = 0xb
+       RTNLGRP_NONE        = 0x0
+       RTNLGRP_LINK        = 0x1
+       RTNLGRP_NOTIFY      = 0x2
+       RTNLGRP_NEIGH       = 0x3
+       RTNLGRP_TC          = 0x4
+       RTNLGRP_IPV4_IFADDR = 0x5
+       RTNLGRP_IPV4_MROUTE = 0x6
+       RTNLGRP_IPV4_ROUTE  = 0x7
+       RTNLGRP_IPV4_RULE   = 0x8
+       RTNLGRP_IPV6_IFADDR = 0x9
+       RTNLGRP_IPV6_MROUTE = 0xa
+       RTNLGRP_IPV6_ROUTE  = 0xb
+       RTNLGRP_IPV6_IFINFO = 0xc
+       RTNLGRP_IPV6_PREFIX = 0x12
+       RTNLGRP_IPV6_RULE   = 0x13
+       RTNLGRP_ND_USEROPT  = 0x14
+       SizeofNlMsghdr      = 0x10
+       SizeofNlMsgerr      = 0x14
+       SizeofRtGenmsg      = 0x1
+       SizeofNlAttr        = 0x4
+       SizeofRtAttr        = 0x4
+       SizeofIfInfomsg     = 0x10
+       SizeofIfAddrmsg     = 0x8
+       SizeofRtMsg         = 0xc
+       SizeofRtNexthop     = 0x8
+)
+
+type NlMsghdr struct {
+       Len   uint32
+       Type  uint16
+       Flags uint16
+       Seq   uint32
+       Pid   uint32
+}
+
+type NlMsgerr struct {
+       Error int32
+       Msg   NlMsghdr
+}
+
+type RtGenmsg struct {
+       Family uint8
+}
+
+type NlAttr struct {
+       Len  uint16
+       Type uint16
+}
+
+type RtAttr struct {
+       Len  uint16
+       Type uint16
+}
+
+type IfInfomsg struct {
+       Family     uint8
+       X__ifi_pad uint8
+       Type       uint16
+       Index      int32
+       Flags      uint32
+       Change     uint32
+}
+
+type IfAddrmsg struct {
+       Family    uint8
+       Prefixlen uint8
+       Flags     uint8
+       Scope     uint8
+       Index     uint32
+}
+
+type RtMsg struct {
+       Family   uint8
+       Dst_len  uint8
+       Src_len  uint8
+       Tos      uint8
+       Table    uint8
+       Protocol uint8
+       Scope    uint8
+       Type     uint8
+       Flags    uint32
+}
+
+type RtNexthop struct {
+       Len     uint16
+       Flags   uint8
+       Hops    uint8
+       Ifindex int32
+}
+
+const (
+       SizeofSockFilter = 0x8
+       SizeofSockFprog  = 0x8
+)
+
+type SockFilter struct {
+       Code uint16
+       Jt   uint8
+       Jf   uint8
+       K    uint32
+}
+
+type SockFprog struct {
+       Len       uint16
+       Pad_cgo_0 [2]byte
+       Filter    *SockFilter
+}
+
+type InotifyEvent struct {
+       Wd     int32
+       Mask   uint32
+       Cookie uint32
+       Len    uint32
+       Name   [0]uint8
+}
+
+const SizeofInotifyEvent = 0x10
+
+type PtraceRegs struct {
+       Uregs [18]uint32
+}
+
+type FdSet struct {
+       Bits [32]int32
+}
+
+type Sysinfo_t struct {
+       Uptime    int32
+       Loads     [3]uint32
+       Totalram  uint32
+       Freeram   uint32
+       Sharedram uint32
+       Bufferram uint32
+       Totalswap uint32
+       Freeswap  uint32
+       Procs     uint16
+       Pad       uint16
+       Totalhigh uint32
+       Freehigh  uint32
+       Unit      uint32
+       X_f       [8]uint8
+}
+
+type Utsname struct {
+       Sysname    [65]uint8
+       Nodename   [65]uint8
+       Release    [65]uint8
+       Version    [65]uint8
+       Machine    [65]uint8
+       Domainname [65]uint8
+}
+
+type Ustat_t struct {
+       Tfree  int32
+       Tinode uint32
+       Fname  [6]uint8
+       Fpack  [6]uint8
+}
+
+type EpollEvent struct {
+       Events uint32
+       PadFd  int32
+       Fd     int32
+       Pad    int32
+}
+
+const (
+       AT_FDCWD            = -0x64
+       AT_SYMLINK_NOFOLLOW = 0x100
+       AT_REMOVEDIR        = 0x200
+)
+
+type Termios struct {
+       Iflag  uint32
+       Oflag  uint32
+       Cflag  uint32
+       Lflag  uint32
+       Line   uint8
+       Cc     [19]uint8
+       Ispeed uint32
+       Ospeed uint32
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go
new file mode 100644 (file)
index 0000000..a159aad
--- /dev/null
@@ -0,0 +1,595 @@
+// +build arm64,linux
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs -- -fsigned-char types_linux.go
+
+package unix
+
+const (
+       sizeofPtr      = 0x8
+       sizeofShort    = 0x2
+       sizeofInt      = 0x4
+       sizeofLong     = 0x8
+       sizeofLongLong = 0x8
+       PathMax        = 0x1000
+)
+
+type (
+       _C_short     int16
+       _C_int       int32
+       _C_long      int64
+       _C_long_long int64
+)
+
+type Timespec struct {
+       Sec  int64
+       Nsec int64
+}
+
+type Timeval struct {
+       Sec  int64
+       Usec int64
+}
+
+type Timex struct {
+       Modes     uint32
+       Pad_cgo_0 [4]byte
+       Offset    int64
+       Freq      int64
+       Maxerror  int64
+       Esterror  int64
+       Status    int32
+       Pad_cgo_1 [4]byte
+       Constant  int64
+       Precision int64
+       Tolerance int64
+       Time      Timeval
+       Tick      int64
+       Ppsfreq   int64
+       Jitter    int64
+       Shift     int32
+       Pad_cgo_2 [4]byte
+       Stabil    int64
+       Jitcnt    int64
+       Calcnt    int64
+       Errcnt    int64
+       Stbcnt    int64
+       Tai       int32
+       Pad_cgo_3 [44]byte
+}
+
+type Time_t int64
+
+type Tms struct {
+       Utime  int64
+       Stime  int64
+       Cutime int64
+       Cstime int64
+}
+
+type Utimbuf struct {
+       Actime  int64
+       Modtime 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               uint64
+       Ino               uint64
+       Mode              uint32
+       Nlink             uint32
+       Uid               uint32
+       Gid               uint32
+       Rdev              uint64
+       X__pad1           uint64
+       Size              int64
+       Blksize           int32
+       X__pad2           int32
+       Blocks            int64
+       Atim              Timespec
+       Mtim              Timespec
+       Ctim              Timespec
+       X__glibc_reserved [2]int32
+}
+
+type Statfs_t struct {
+       Type    int64
+       Bsize   int64
+       Blocks  uint64
+       Bfree   uint64
+       Bavail  uint64
+       Files   uint64
+       Ffree   uint64
+       Fsid    Fsid
+       Namelen int64
+       Frsize  int64
+       Flags   int64
+       Spare   [4]int64
+}
+
+type Dirent struct {
+       Ino       uint64
+       Off       int64
+       Reclen    uint16
+       Type      uint8
+       Name      [256]int8
+       Pad_cgo_0 [5]byte
+}
+
+type Fsid struct {
+       X__val [2]int32
+}
+
+type Flock_t struct {
+       Type      int16
+       Whence    int16
+       Pad_cgo_0 [4]byte
+       Start     int64
+       Len       int64
+       Pid       int32
+       Pad_cgo_1 [4]byte
+}
+
+const (
+       FADV_NORMAL     = 0x0
+       FADV_RANDOM     = 0x1
+       FADV_SEQUENTIAL = 0x2
+       FADV_WILLNEED   = 0x3
+       FADV_DONTNEED   = 0x4
+       FADV_NOREUSE    = 0x5
+)
+
+type RawSockaddrInet4 struct {
+       Family uint16
+       Port   uint16
+       Addr   [4]byte /* in_addr */
+       Zero   [8]uint8
+}
+
+type RawSockaddrInet6 struct {
+       Family   uint16
+       Port     uint16
+       Flowinfo uint32
+       Addr     [16]byte /* in6_addr */
+       Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+       Family uint16
+       Path   [108]int8
+}
+
+type RawSockaddrLinklayer struct {
+       Family   uint16
+       Protocol uint16
+       Ifindex  int32
+       Hatype   uint16
+       Pkttype  uint8
+       Halen    uint8
+       Addr     [8]uint8
+}
+
+type RawSockaddrNetlink struct {
+       Family uint16
+       Pad    uint16
+       Pid    uint32
+       Groups uint32
+}
+
+type RawSockaddr struct {
+       Family uint16
+       Data   [14]int8
+}
+
+type RawSockaddrAny struct {
+       Addr RawSockaddr
+       Pad  [96]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 IPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
+type IPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Interface uint32
+}
+
+type Msghdr struct {
+       Name       *byte
+       Namelen    uint32
+       Pad_cgo_0  [4]byte
+       Iov        *Iovec
+       Iovlen     uint64
+       Control    *byte
+       Controllen uint64
+       Flags      int32
+       Pad_cgo_1  [4]byte
+}
+
+type Cmsghdr struct {
+       Len          uint64
+       Level        int32
+       Type         int32
+       X__cmsg_data [0]uint8
+}
+
+type Inet4Pktinfo struct {
+       Ifindex  int32
+       Spec_dst [4]byte /* in_addr */
+       Addr     [4]byte /* in_addr */
+}
+
+type Inet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+       Addr RawSockaddrInet6
+       Mtu  uint32
+}
+
+type ICMPv6Filter struct {
+       Data [8]uint32
+}
+
+type Ucred struct {
+       Pid int32
+       Uid uint32
+       Gid uint32
+}
+
+type TCPInfo struct {
+       State          uint8
+       Ca_state       uint8
+       Retransmits    uint8
+       Probes         uint8
+       Backoff        uint8
+       Options        uint8
+       Pad_cgo_0      [2]byte
+       Rto            uint32
+       Ato            uint32
+       Snd_mss        uint32
+       Rcv_mss        uint32
+       Unacked        uint32
+       Sacked         uint32
+       Lost           uint32
+       Retrans        uint32
+       Fackets        uint32
+       Last_data_sent uint32
+       Last_ack_sent  uint32
+       Last_data_recv uint32
+       Last_ack_recv  uint32
+       Pmtu           uint32
+       Rcv_ssthresh   uint32
+       Rtt            uint32
+       Rttvar         uint32
+       Snd_ssthresh   uint32
+       Snd_cwnd       uint32
+       Advmss         uint32
+       Reordering     uint32
+       Rcv_rtt        uint32
+       Rcv_space      uint32
+       Total_retrans  uint32
+}
+
+const (
+       SizeofSockaddrInet4     = 0x10
+       SizeofSockaddrInet6     = 0x1c
+       SizeofSockaddrAny       = 0x70
+       SizeofSockaddrUnix      = 0x6e
+       SizeofSockaddrLinklayer = 0x14
+       SizeofSockaddrNetlink   = 0xc
+       SizeofLinger            = 0x8
+       SizeofIPMreq            = 0x8
+       SizeofIPMreqn           = 0xc
+       SizeofIPv6Mreq          = 0x14
+       SizeofMsghdr            = 0x38
+       SizeofCmsghdr           = 0x10
+       SizeofInet4Pktinfo      = 0xc
+       SizeofInet6Pktinfo      = 0x14
+       SizeofIPv6MTUInfo       = 0x20
+       SizeofICMPv6Filter      = 0x20
+       SizeofUcred             = 0xc
+       SizeofTCPInfo           = 0x68
+)
+
+const (
+       IFA_UNSPEC          = 0x0
+       IFA_ADDRESS         = 0x1
+       IFA_LOCAL           = 0x2
+       IFA_LABEL           = 0x3
+       IFA_BROADCAST       = 0x4
+       IFA_ANYCAST         = 0x5
+       IFA_CACHEINFO       = 0x6
+       IFA_MULTICAST       = 0x7
+       IFLA_UNSPEC         = 0x0
+       IFLA_ADDRESS        = 0x1
+       IFLA_BROADCAST      = 0x2
+       IFLA_IFNAME         = 0x3
+       IFLA_MTU            = 0x4
+       IFLA_LINK           = 0x5
+       IFLA_QDISC          = 0x6
+       IFLA_STATS          = 0x7
+       IFLA_COST           = 0x8
+       IFLA_PRIORITY       = 0x9
+       IFLA_MASTER         = 0xa
+       IFLA_WIRELESS       = 0xb
+       IFLA_PROTINFO       = 0xc
+       IFLA_TXQLEN         = 0xd
+       IFLA_MAP            = 0xe
+       IFLA_WEIGHT         = 0xf
+       IFLA_OPERSTATE      = 0x10
+       IFLA_LINKMODE       = 0x11
+       IFLA_LINKINFO       = 0x12
+       IFLA_NET_NS_PID     = 0x13
+       IFLA_IFALIAS        = 0x14
+       IFLA_MAX            = 0x22
+       RT_SCOPE_UNIVERSE   = 0x0
+       RT_SCOPE_SITE       = 0xc8
+       RT_SCOPE_LINK       = 0xfd
+       RT_SCOPE_HOST       = 0xfe
+       RT_SCOPE_NOWHERE    = 0xff
+       RT_TABLE_UNSPEC     = 0x0
+       RT_TABLE_COMPAT     = 0xfc
+       RT_TABLE_DEFAULT    = 0xfd
+       RT_TABLE_MAIN       = 0xfe
+       RT_TABLE_LOCAL      = 0xff
+       RT_TABLE_MAX        = 0xffffffff
+       RTA_UNSPEC          = 0x0
+       RTA_DST             = 0x1
+       RTA_SRC             = 0x2
+       RTA_IIF             = 0x3
+       RTA_OIF             = 0x4
+       RTA_GATEWAY         = 0x5
+       RTA_PRIORITY        = 0x6
+       RTA_PREFSRC         = 0x7
+       RTA_METRICS         = 0x8
+       RTA_MULTIPATH       = 0x9
+       RTA_FLOW            = 0xb
+       RTA_CACHEINFO       = 0xc
+       RTA_TABLE           = 0xf
+       RTN_UNSPEC          = 0x0
+       RTN_UNICAST         = 0x1
+       RTN_LOCAL           = 0x2
+       RTN_BROADCAST       = 0x3
+       RTN_ANYCAST         = 0x4
+       RTN_MULTICAST       = 0x5
+       RTN_BLACKHOLE       = 0x6
+       RTN_UNREACHABLE     = 0x7
+       RTN_PROHIBIT        = 0x8
+       RTN_THROW           = 0x9
+       RTN_NAT             = 0xa
+       RTN_XRESOLVE        = 0xb
+       RTNLGRP_NONE        = 0x0
+       RTNLGRP_LINK        = 0x1
+       RTNLGRP_NOTIFY      = 0x2
+       RTNLGRP_NEIGH       = 0x3
+       RTNLGRP_TC          = 0x4
+       RTNLGRP_IPV4_IFADDR = 0x5
+       RTNLGRP_IPV4_MROUTE = 0x6
+       RTNLGRP_IPV4_ROUTE  = 0x7
+       RTNLGRP_IPV4_RULE   = 0x8
+       RTNLGRP_IPV6_IFADDR = 0x9
+       RTNLGRP_IPV6_MROUTE = 0xa
+       RTNLGRP_IPV6_ROUTE  = 0xb
+       RTNLGRP_IPV6_IFINFO = 0xc
+       RTNLGRP_IPV6_PREFIX = 0x12
+       RTNLGRP_IPV6_RULE   = 0x13
+       RTNLGRP_ND_USEROPT  = 0x14
+       SizeofNlMsghdr      = 0x10
+       SizeofNlMsgerr      = 0x14
+       SizeofRtGenmsg      = 0x1
+       SizeofNlAttr        = 0x4
+       SizeofRtAttr        = 0x4
+       SizeofIfInfomsg     = 0x10
+       SizeofIfAddrmsg     = 0x8
+       SizeofRtMsg         = 0xc
+       SizeofRtNexthop     = 0x8
+)
+
+type NlMsghdr struct {
+       Len   uint32
+       Type  uint16
+       Flags uint16
+       Seq   uint32
+       Pid   uint32
+}
+
+type NlMsgerr struct {
+       Error int32
+       Msg   NlMsghdr
+}
+
+type RtGenmsg struct {
+       Family uint8
+}
+
+type NlAttr struct {
+       Len  uint16
+       Type uint16
+}
+
+type RtAttr struct {
+       Len  uint16
+       Type uint16
+}
+
+type IfInfomsg struct {
+       Family     uint8
+       X__ifi_pad uint8
+       Type       uint16
+       Index      int32
+       Flags      uint32
+       Change     uint32
+}
+
+type IfAddrmsg struct {
+       Family    uint8
+       Prefixlen uint8
+       Flags     uint8
+       Scope     uint8
+       Index     uint32
+}
+
+type RtMsg struct {
+       Family   uint8
+       Dst_len  uint8
+       Src_len  uint8
+       Tos      uint8
+       Table    uint8
+       Protocol uint8
+       Scope    uint8
+       Type     uint8
+       Flags    uint32
+}
+
+type RtNexthop struct {
+       Len     uint16
+       Flags   uint8
+       Hops    uint8
+       Ifindex int32
+}
+
+const (
+       SizeofSockFilter = 0x8
+       SizeofSockFprog  = 0x10
+)
+
+type SockFilter struct {
+       Code uint16
+       Jt   uint8
+       Jf   uint8
+       K    uint32
+}
+
+type SockFprog struct {
+       Len       uint16
+       Pad_cgo_0 [6]byte
+       Filter    *SockFilter
+}
+
+type InotifyEvent struct {
+       Wd     int32
+       Mask   uint32
+       Cookie uint32
+       Len    uint32
+       Name   [0]int8
+}
+
+const SizeofInotifyEvent = 0x10
+
+type PtraceRegs struct {
+       Regs   [31]uint64
+       Sp     uint64
+       Pc     uint64
+       Pstate uint64
+}
+
+type FdSet struct {
+       Bits [16]int64
+}
+
+type Sysinfo_t struct {
+       Uptime    int64
+       Loads     [3]uint64
+       Totalram  uint64
+       Freeram   uint64
+       Sharedram uint64
+       Bufferram uint64
+       Totalswap uint64
+       Freeswap  uint64
+       Procs     uint16
+       Pad       uint16
+       Pad_cgo_0 [4]byte
+       Totalhigh uint64
+       Freehigh  uint64
+       Unit      uint32
+       X_f       [0]int8
+       Pad_cgo_1 [4]byte
+}
+
+type Utsname struct {
+       Sysname    [65]int8
+       Nodename   [65]int8
+       Release    [65]int8
+       Version    [65]int8
+       Machine    [65]int8
+       Domainname [65]int8
+}
+
+type Ustat_t struct {
+       Tfree     int32
+       Pad_cgo_0 [4]byte
+       Tinode    uint64
+       Fname     [6]int8
+       Fpack     [6]int8
+       Pad_cgo_1 [4]byte
+}
+
+type EpollEvent struct {
+       Events uint32
+       Fd     int32
+       Pad    int32
+}
+
+const (
+       AT_FDCWD            = -0x64
+       AT_REMOVEDIR        = 0x200
+       AT_SYMLINK_NOFOLLOW = 0x100
+)
+
+type Termios struct {
+       Iflag  uint32
+       Oflag  uint32
+       Cflag  uint32
+       Lflag  uint32
+       Line   uint8
+       Cc     [19]uint8
+       Ispeed uint32
+       Ospeed uint32
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go
new file mode 100644 (file)
index 0000000..0c5c918
--- /dev/null
@@ -0,0 +1,599 @@
+// +build mips64,linux
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_linux.go
+
+package unix
+
+const (
+       sizeofPtr      = 0x8
+       sizeofShort    = 0x2
+       sizeofInt      = 0x4
+       sizeofLong     = 0x8
+       sizeofLongLong = 0x8
+       PathMax        = 0x1000
+)
+
+type (
+       _C_short     int16
+       _C_int       int32
+       _C_long      int64
+       _C_long_long int64
+)
+
+type Timespec struct {
+       Sec  int64
+       Nsec int64
+}
+
+type Timeval struct {
+       Sec  int64
+       Usec int64
+}
+
+type Timex struct {
+       Modes     uint32
+       Pad_cgo_0 [4]byte
+       Offset    int64
+       Freq      int64
+       Maxerror  int64
+       Esterror  int64
+       Status    int32
+       Pad_cgo_1 [4]byte
+       Constant  int64
+       Precision int64
+       Tolerance int64
+       Time      Timeval
+       Tick      int64
+       Ppsfreq   int64
+       Jitter    int64
+       Shift     int32
+       Pad_cgo_2 [4]byte
+       Stabil    int64
+       Jitcnt    int64
+       Calcnt    int64
+       Errcnt    int64
+       Stbcnt    int64
+       Tai       int32
+       Pad_cgo_3 [44]byte
+}
+
+type Time_t int64
+
+type Tms struct {
+       Utime  int64
+       Stime  int64
+       Cutime int64
+       Cstime int64
+}
+
+type Utimbuf struct {
+       Actime  int64
+       Modtime 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     uint32
+       Pad1    [3]int32
+       Ino     uint64
+       Mode    uint32
+       Nlink   uint32
+       Uid     uint32
+       Gid     uint32
+       Rdev    uint32
+       Pad2    [3]uint32
+       Size    int64
+       Atim    Timespec
+       Mtim    Timespec
+       Ctim    Timespec
+       Blksize uint32
+       Pad4    uint32
+       Blocks  int64
+}
+
+type Statfs_t struct {
+       Type    int64
+       Bsize   int64
+       Frsize  int64
+       Blocks  uint64
+       Bfree   uint64
+       Files   uint64
+       Ffree   uint64
+       Bavail  uint64
+       Fsid    Fsid
+       Namelen int64
+       Flags   int64
+       Spare   [5]int64
+}
+
+type Dirent struct {
+       Ino       uint64
+       Off       int64
+       Reclen    uint16
+       Type      uint8
+       Name      [256]int8
+       Pad_cgo_0 [5]byte
+}
+
+type Fsid struct {
+       X__val [2]int32
+}
+
+type Flock_t struct {
+       Type      int16
+       Whence    int16
+       Pad_cgo_0 [4]byte
+       Start     int64
+       Len       int64
+       Pid       int32
+       Pad_cgo_1 [4]byte
+}
+
+const (
+       FADV_NORMAL     = 0x0
+       FADV_RANDOM     = 0x1
+       FADV_SEQUENTIAL = 0x2
+       FADV_WILLNEED   = 0x3
+       FADV_DONTNEED   = 0x4
+       FADV_NOREUSE    = 0x5
+)
+
+type RawSockaddrInet4 struct {
+       Family uint16
+       Port   uint16
+       Addr   [4]byte /* in_addr */
+       Zero   [8]uint8
+}
+
+type RawSockaddrInet6 struct {
+       Family   uint16
+       Port     uint16
+       Flowinfo uint32
+       Addr     [16]byte /* in6_addr */
+       Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+       Family uint16
+       Path   [108]int8
+}
+
+type RawSockaddrLinklayer struct {
+       Family   uint16
+       Protocol uint16
+       Ifindex  int32
+       Hatype   uint16
+       Pkttype  uint8
+       Halen    uint8
+       Addr     [8]uint8
+}
+
+type RawSockaddrNetlink struct {
+       Family uint16
+       Pad    uint16
+       Pid    uint32
+       Groups uint32
+}
+
+type RawSockaddr struct {
+       Family uint16
+       Data   [14]int8
+}
+
+type RawSockaddrAny struct {
+       Addr RawSockaddr
+       Pad  [96]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 IPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
+type IPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Interface uint32
+}
+
+type Msghdr struct {
+       Name       *byte
+       Namelen    uint32
+       Pad_cgo_0  [4]byte
+       Iov        *Iovec
+       Iovlen     uint64
+       Control    *byte
+       Controllen uint64
+       Flags      int32
+       Pad_cgo_1  [4]byte
+}
+
+type Cmsghdr struct {
+       Len   uint64
+       Level int32
+       Type  int32
+}
+
+type Inet4Pktinfo struct {
+       Ifindex  int32
+       Spec_dst [4]byte /* in_addr */
+       Addr     [4]byte /* in_addr */
+}
+
+type Inet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+       Addr RawSockaddrInet6
+       Mtu  uint32
+}
+
+type ICMPv6Filter struct {
+       Data [8]uint32
+}
+
+type Ucred struct {
+       Pid int32
+       Uid uint32
+       Gid uint32
+}
+
+type TCPInfo struct {
+       State          uint8
+       Ca_state       uint8
+       Retransmits    uint8
+       Probes         uint8
+       Backoff        uint8
+       Options        uint8
+       Pad_cgo_0      [2]byte
+       Rto            uint32
+       Ato            uint32
+       Snd_mss        uint32
+       Rcv_mss        uint32
+       Unacked        uint32
+       Sacked         uint32
+       Lost           uint32
+       Retrans        uint32
+       Fackets        uint32
+       Last_data_sent uint32
+       Last_ack_sent  uint32
+       Last_data_recv uint32
+       Last_ack_recv  uint32
+       Pmtu           uint32
+       Rcv_ssthresh   uint32
+       Rtt            uint32
+       Rttvar         uint32
+       Snd_ssthresh   uint32
+       Snd_cwnd       uint32
+       Advmss         uint32
+       Reordering     uint32
+       Rcv_rtt        uint32
+       Rcv_space      uint32
+       Total_retrans  uint32
+}
+
+const (
+       SizeofSockaddrInet4     = 0x10
+       SizeofSockaddrInet6     = 0x1c
+       SizeofSockaddrAny       = 0x70
+       SizeofSockaddrUnix      = 0x6e
+       SizeofSockaddrLinklayer = 0x14
+       SizeofSockaddrNetlink   = 0xc
+       SizeofLinger            = 0x8
+       SizeofIPMreq            = 0x8
+       SizeofIPMreqn           = 0xc
+       SizeofIPv6Mreq          = 0x14
+       SizeofMsghdr            = 0x38
+       SizeofCmsghdr           = 0x10
+       SizeofInet4Pktinfo      = 0xc
+       SizeofInet6Pktinfo      = 0x14
+       SizeofIPv6MTUInfo       = 0x20
+       SizeofICMPv6Filter      = 0x20
+       SizeofUcred             = 0xc
+       SizeofTCPInfo           = 0x68
+)
+
+const (
+       IFA_UNSPEC          = 0x0
+       IFA_ADDRESS         = 0x1
+       IFA_LOCAL           = 0x2
+       IFA_LABEL           = 0x3
+       IFA_BROADCAST       = 0x4
+       IFA_ANYCAST         = 0x5
+       IFA_CACHEINFO       = 0x6
+       IFA_MULTICAST       = 0x7
+       IFLA_UNSPEC         = 0x0
+       IFLA_ADDRESS        = 0x1
+       IFLA_BROADCAST      = 0x2
+       IFLA_IFNAME         = 0x3
+       IFLA_MTU            = 0x4
+       IFLA_LINK           = 0x5
+       IFLA_QDISC          = 0x6
+       IFLA_STATS          = 0x7
+       IFLA_COST           = 0x8
+       IFLA_PRIORITY       = 0x9
+       IFLA_MASTER         = 0xa
+       IFLA_WIRELESS       = 0xb
+       IFLA_PROTINFO       = 0xc
+       IFLA_TXQLEN         = 0xd
+       IFLA_MAP            = 0xe
+       IFLA_WEIGHT         = 0xf
+       IFLA_OPERSTATE      = 0x10
+       IFLA_LINKMODE       = 0x11
+       IFLA_LINKINFO       = 0x12
+       IFLA_NET_NS_PID     = 0x13
+       IFLA_IFALIAS        = 0x14
+       IFLA_MAX            = 0x27
+       RT_SCOPE_UNIVERSE   = 0x0
+       RT_SCOPE_SITE       = 0xc8
+       RT_SCOPE_LINK       = 0xfd
+       RT_SCOPE_HOST       = 0xfe
+       RT_SCOPE_NOWHERE    = 0xff
+       RT_TABLE_UNSPEC     = 0x0
+       RT_TABLE_COMPAT     = 0xfc
+       RT_TABLE_DEFAULT    = 0xfd
+       RT_TABLE_MAIN       = 0xfe
+       RT_TABLE_LOCAL      = 0xff
+       RT_TABLE_MAX        = 0xffffffff
+       RTA_UNSPEC          = 0x0
+       RTA_DST             = 0x1
+       RTA_SRC             = 0x2
+       RTA_IIF             = 0x3
+       RTA_OIF             = 0x4
+       RTA_GATEWAY         = 0x5
+       RTA_PRIORITY        = 0x6
+       RTA_PREFSRC         = 0x7
+       RTA_METRICS         = 0x8
+       RTA_MULTIPATH       = 0x9
+       RTA_FLOW            = 0xb
+       RTA_CACHEINFO       = 0xc
+       RTA_TABLE           = 0xf
+       RTN_UNSPEC          = 0x0
+       RTN_UNICAST         = 0x1
+       RTN_LOCAL           = 0x2
+       RTN_BROADCAST       = 0x3
+       RTN_ANYCAST         = 0x4
+       RTN_MULTICAST       = 0x5
+       RTN_BLACKHOLE       = 0x6
+       RTN_UNREACHABLE     = 0x7
+       RTN_PROHIBIT        = 0x8
+       RTN_THROW           = 0x9
+       RTN_NAT             = 0xa
+       RTN_XRESOLVE        = 0xb
+       RTNLGRP_NONE        = 0x0
+       RTNLGRP_LINK        = 0x1
+       RTNLGRP_NOTIFY      = 0x2
+       RTNLGRP_NEIGH       = 0x3
+       RTNLGRP_TC          = 0x4
+       RTNLGRP_IPV4_IFADDR = 0x5
+       RTNLGRP_IPV4_MROUTE = 0x6
+       RTNLGRP_IPV4_ROUTE  = 0x7
+       RTNLGRP_IPV4_RULE   = 0x8
+       RTNLGRP_IPV6_IFADDR = 0x9
+       RTNLGRP_IPV6_MROUTE = 0xa
+       RTNLGRP_IPV6_ROUTE  = 0xb
+       RTNLGRP_IPV6_IFINFO = 0xc
+       RTNLGRP_IPV6_PREFIX = 0x12
+       RTNLGRP_IPV6_RULE   = 0x13
+       RTNLGRP_ND_USEROPT  = 0x14
+       SizeofNlMsghdr      = 0x10
+       SizeofNlMsgerr      = 0x14
+       SizeofRtGenmsg      = 0x1
+       SizeofNlAttr        = 0x4
+       SizeofRtAttr        = 0x4
+       SizeofIfInfomsg     = 0x10
+       SizeofIfAddrmsg     = 0x8
+       SizeofRtMsg         = 0xc
+       SizeofRtNexthop     = 0x8
+)
+
+type NlMsghdr struct {
+       Len   uint32
+       Type  uint16
+       Flags uint16
+       Seq   uint32
+       Pid   uint32
+}
+
+type NlMsgerr struct {
+       Error int32
+       Msg   NlMsghdr
+}
+
+type RtGenmsg struct {
+       Family uint8
+}
+
+type NlAttr struct {
+       Len  uint16
+       Type uint16
+}
+
+type RtAttr struct {
+       Len  uint16
+       Type uint16
+}
+
+type IfInfomsg struct {
+       Family     uint8
+       X__ifi_pad uint8
+       Type       uint16
+       Index      int32
+       Flags      uint32
+       Change     uint32
+}
+
+type IfAddrmsg struct {
+       Family    uint8
+       Prefixlen uint8
+       Flags     uint8
+       Scope     uint8
+       Index     uint32
+}
+
+type RtMsg struct {
+       Family   uint8
+       Dst_len  uint8
+       Src_len  uint8
+       Tos      uint8
+       Table    uint8
+       Protocol uint8
+       Scope    uint8
+       Type     uint8
+       Flags    uint32
+}
+
+type RtNexthop struct {
+       Len     uint16
+       Flags   uint8
+       Hops    uint8
+       Ifindex int32
+}
+
+const (
+       SizeofSockFilter = 0x8
+       SizeofSockFprog  = 0x10
+)
+
+type SockFilter struct {
+       Code uint16
+       Jt   uint8
+       Jf   uint8
+       K    uint32
+}
+
+type SockFprog struct {
+       Len       uint16
+       Pad_cgo_0 [6]byte
+       Filter    *SockFilter
+}
+
+type InotifyEvent struct {
+       Wd     int32
+       Mask   uint32
+       Cookie uint32
+       Len    uint32
+}
+
+const SizeofInotifyEvent = 0x10
+
+type PtraceRegs struct {
+       Regs        [102]uint64
+       U_tsize     uint64
+       U_dsize     uint64
+       U_ssize     uint64
+       Start_code  uint64
+       Start_data  uint64
+       Start_stack uint64
+       Signal      int64
+       U_ar0       uint64
+       Magic       uint64
+       U_comm      [32]int8
+}
+
+type FdSet struct {
+       Bits [16]int64
+}
+
+type Sysinfo_t struct {
+       Uptime    int64
+       Loads     [3]uint64
+       Totalram  uint64
+       Freeram   uint64
+       Sharedram uint64
+       Bufferram uint64
+       Totalswap uint64
+       Freeswap  uint64
+       Procs     uint16
+       Pad       uint16
+       Pad_cgo_0 [4]byte
+       Totalhigh uint64
+       Freehigh  uint64
+       Unit      uint32
+       X_f       [0]int8
+       Pad_cgo_1 [4]byte
+}
+
+type Utsname struct {
+       Sysname    [65]int8
+       Nodename   [65]int8
+       Release    [65]int8
+       Version    [65]int8
+       Machine    [65]int8
+       Domainname [65]int8
+}
+
+type Ustat_t struct {
+       Tfree     int32
+       Pad_cgo_0 [4]byte
+       Tinode    uint64
+       Fname     [6]int8
+       Fpack     [6]int8
+       Pad_cgo_1 [4]byte
+}
+
+type EpollEvent struct {
+       Events uint32
+       Fd     int32
+       Pad    int32
+}
+
+const (
+       AT_FDCWD            = -0x64
+       AT_REMOVEDIR        = 0x200
+       AT_SYMLINK_NOFOLLOW = 0x100
+)
+
+type Termios struct {
+       Iflag     uint32
+       Oflag     uint32
+       Cflag     uint32
+       Lflag     uint32
+       Line      uint8
+       Cc        [32]uint8
+       Pad_cgo_0 [3]byte
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go
new file mode 100644 (file)
index 0000000..7c0c803
--- /dev/null
@@ -0,0 +1,599 @@
+// +build mips64le,linux
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_linux.go
+
+package unix
+
+const (
+       sizeofPtr      = 0x8
+       sizeofShort    = 0x2
+       sizeofInt      = 0x4
+       sizeofLong     = 0x8
+       sizeofLongLong = 0x8
+       PathMax        = 0x1000
+)
+
+type (
+       _C_short     int16
+       _C_int       int32
+       _C_long      int64
+       _C_long_long int64
+)
+
+type Timespec struct {
+       Sec  int64
+       Nsec int64
+}
+
+type Timeval struct {
+       Sec  int64
+       Usec int64
+}
+
+type Timex struct {
+       Modes     uint32
+       Pad_cgo_0 [4]byte
+       Offset    int64
+       Freq      int64
+       Maxerror  int64
+       Esterror  int64
+       Status    int32
+       Pad_cgo_1 [4]byte
+       Constant  int64
+       Precision int64
+       Tolerance int64
+       Time      Timeval
+       Tick      int64
+       Ppsfreq   int64
+       Jitter    int64
+       Shift     int32
+       Pad_cgo_2 [4]byte
+       Stabil    int64
+       Jitcnt    int64
+       Calcnt    int64
+       Errcnt    int64
+       Stbcnt    int64
+       Tai       int32
+       Pad_cgo_3 [44]byte
+}
+
+type Time_t int64
+
+type Tms struct {
+       Utime  int64
+       Stime  int64
+       Cutime int64
+       Cstime int64
+}
+
+type Utimbuf struct {
+       Actime  int64
+       Modtime 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     uint32
+       Pad1    [3]int32
+       Ino     uint64
+       Mode    uint32
+       Nlink   uint32
+       Uid     uint32
+       Gid     uint32
+       Rdev    uint32
+       Pad2    [3]uint32
+       Size    int64
+       Atim    Timespec
+       Mtim    Timespec
+       Ctim    Timespec
+       Blksize uint32
+       Pad4    uint32
+       Blocks  int64
+}
+
+type Statfs_t struct {
+       Type    int64
+       Bsize   int64
+       Frsize  int64
+       Blocks  uint64
+       Bfree   uint64
+       Files   uint64
+       Ffree   uint64
+       Bavail  uint64
+       Fsid    Fsid
+       Namelen int64
+       Flags   int64
+       Spare   [5]int64
+}
+
+type Dirent struct {
+       Ino       uint64
+       Off       int64
+       Reclen    uint16
+       Type      uint8
+       Name      [256]int8
+       Pad_cgo_0 [5]byte
+}
+
+type Fsid struct {
+       X__val [2]int32
+}
+
+type Flock_t struct {
+       Type      int16
+       Whence    int16
+       Pad_cgo_0 [4]byte
+       Start     int64
+       Len       int64
+       Pid       int32
+       Pad_cgo_1 [4]byte
+}
+
+const (
+       FADV_NORMAL     = 0x0
+       FADV_RANDOM     = 0x1
+       FADV_SEQUENTIAL = 0x2
+       FADV_WILLNEED   = 0x3
+       FADV_DONTNEED   = 0x4
+       FADV_NOREUSE    = 0x5
+)
+
+type RawSockaddrInet4 struct {
+       Family uint16
+       Port   uint16
+       Addr   [4]byte /* in_addr */
+       Zero   [8]uint8
+}
+
+type RawSockaddrInet6 struct {
+       Family   uint16
+       Port     uint16
+       Flowinfo uint32
+       Addr     [16]byte /* in6_addr */
+       Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+       Family uint16
+       Path   [108]int8
+}
+
+type RawSockaddrLinklayer struct {
+       Family   uint16
+       Protocol uint16
+       Ifindex  int32
+       Hatype   uint16
+       Pkttype  uint8
+       Halen    uint8
+       Addr     [8]uint8
+}
+
+type RawSockaddrNetlink struct {
+       Family uint16
+       Pad    uint16
+       Pid    uint32
+       Groups uint32
+}
+
+type RawSockaddr struct {
+       Family uint16
+       Data   [14]int8
+}
+
+type RawSockaddrAny struct {
+       Addr RawSockaddr
+       Pad  [96]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 IPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
+type IPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Interface uint32
+}
+
+type Msghdr struct {
+       Name       *byte
+       Namelen    uint32
+       Pad_cgo_0  [4]byte
+       Iov        *Iovec
+       Iovlen     uint64
+       Control    *byte
+       Controllen uint64
+       Flags      int32
+       Pad_cgo_1  [4]byte
+}
+
+type Cmsghdr struct {
+       Len   uint64
+       Level int32
+       Type  int32
+}
+
+type Inet4Pktinfo struct {
+       Ifindex  int32
+       Spec_dst [4]byte /* in_addr */
+       Addr     [4]byte /* in_addr */
+}
+
+type Inet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+       Addr RawSockaddrInet6
+       Mtu  uint32
+}
+
+type ICMPv6Filter struct {
+       Data [8]uint32
+}
+
+type Ucred struct {
+       Pid int32
+       Uid uint32
+       Gid uint32
+}
+
+type TCPInfo struct {
+       State          uint8
+       Ca_state       uint8
+       Retransmits    uint8
+       Probes         uint8
+       Backoff        uint8
+       Options        uint8
+       Pad_cgo_0      [2]byte
+       Rto            uint32
+       Ato            uint32
+       Snd_mss        uint32
+       Rcv_mss        uint32
+       Unacked        uint32
+       Sacked         uint32
+       Lost           uint32
+       Retrans        uint32
+       Fackets        uint32
+       Last_data_sent uint32
+       Last_ack_sent  uint32
+       Last_data_recv uint32
+       Last_ack_recv  uint32
+       Pmtu           uint32
+       Rcv_ssthresh   uint32
+       Rtt            uint32
+       Rttvar         uint32
+       Snd_ssthresh   uint32
+       Snd_cwnd       uint32
+       Advmss         uint32
+       Reordering     uint32
+       Rcv_rtt        uint32
+       Rcv_space      uint32
+       Total_retrans  uint32
+}
+
+const (
+       SizeofSockaddrInet4     = 0x10
+       SizeofSockaddrInet6     = 0x1c
+       SizeofSockaddrAny       = 0x70
+       SizeofSockaddrUnix      = 0x6e
+       SizeofSockaddrLinklayer = 0x14
+       SizeofSockaddrNetlink   = 0xc
+       SizeofLinger            = 0x8
+       SizeofIPMreq            = 0x8
+       SizeofIPMreqn           = 0xc
+       SizeofIPv6Mreq          = 0x14
+       SizeofMsghdr            = 0x38
+       SizeofCmsghdr           = 0x10
+       SizeofInet4Pktinfo      = 0xc
+       SizeofInet6Pktinfo      = 0x14
+       SizeofIPv6MTUInfo       = 0x20
+       SizeofICMPv6Filter      = 0x20
+       SizeofUcred             = 0xc
+       SizeofTCPInfo           = 0x68
+)
+
+const (
+       IFA_UNSPEC          = 0x0
+       IFA_ADDRESS         = 0x1
+       IFA_LOCAL           = 0x2
+       IFA_LABEL           = 0x3
+       IFA_BROADCAST       = 0x4
+       IFA_ANYCAST         = 0x5
+       IFA_CACHEINFO       = 0x6
+       IFA_MULTICAST       = 0x7
+       IFLA_UNSPEC         = 0x0
+       IFLA_ADDRESS        = 0x1
+       IFLA_BROADCAST      = 0x2
+       IFLA_IFNAME         = 0x3
+       IFLA_MTU            = 0x4
+       IFLA_LINK           = 0x5
+       IFLA_QDISC          = 0x6
+       IFLA_STATS          = 0x7
+       IFLA_COST           = 0x8
+       IFLA_PRIORITY       = 0x9
+       IFLA_MASTER         = 0xa
+       IFLA_WIRELESS       = 0xb
+       IFLA_PROTINFO       = 0xc
+       IFLA_TXQLEN         = 0xd
+       IFLA_MAP            = 0xe
+       IFLA_WEIGHT         = 0xf
+       IFLA_OPERSTATE      = 0x10
+       IFLA_LINKMODE       = 0x11
+       IFLA_LINKINFO       = 0x12
+       IFLA_NET_NS_PID     = 0x13
+       IFLA_IFALIAS        = 0x14
+       IFLA_MAX            = 0x27
+       RT_SCOPE_UNIVERSE   = 0x0
+       RT_SCOPE_SITE       = 0xc8
+       RT_SCOPE_LINK       = 0xfd
+       RT_SCOPE_HOST       = 0xfe
+       RT_SCOPE_NOWHERE    = 0xff
+       RT_TABLE_UNSPEC     = 0x0
+       RT_TABLE_COMPAT     = 0xfc
+       RT_TABLE_DEFAULT    = 0xfd
+       RT_TABLE_MAIN       = 0xfe
+       RT_TABLE_LOCAL      = 0xff
+       RT_TABLE_MAX        = 0xffffffff
+       RTA_UNSPEC          = 0x0
+       RTA_DST             = 0x1
+       RTA_SRC             = 0x2
+       RTA_IIF             = 0x3
+       RTA_OIF             = 0x4
+       RTA_GATEWAY         = 0x5
+       RTA_PRIORITY        = 0x6
+       RTA_PREFSRC         = 0x7
+       RTA_METRICS         = 0x8
+       RTA_MULTIPATH       = 0x9
+       RTA_FLOW            = 0xb
+       RTA_CACHEINFO       = 0xc
+       RTA_TABLE           = 0xf
+       RTN_UNSPEC          = 0x0
+       RTN_UNICAST         = 0x1
+       RTN_LOCAL           = 0x2
+       RTN_BROADCAST       = 0x3
+       RTN_ANYCAST         = 0x4
+       RTN_MULTICAST       = 0x5
+       RTN_BLACKHOLE       = 0x6
+       RTN_UNREACHABLE     = 0x7
+       RTN_PROHIBIT        = 0x8
+       RTN_THROW           = 0x9
+       RTN_NAT             = 0xa
+       RTN_XRESOLVE        = 0xb
+       RTNLGRP_NONE        = 0x0
+       RTNLGRP_LINK        = 0x1
+       RTNLGRP_NOTIFY      = 0x2
+       RTNLGRP_NEIGH       = 0x3
+       RTNLGRP_TC          = 0x4
+       RTNLGRP_IPV4_IFADDR = 0x5
+       RTNLGRP_IPV4_MROUTE = 0x6
+       RTNLGRP_IPV4_ROUTE  = 0x7
+       RTNLGRP_IPV4_RULE   = 0x8
+       RTNLGRP_IPV6_IFADDR = 0x9
+       RTNLGRP_IPV6_MROUTE = 0xa
+       RTNLGRP_IPV6_ROUTE  = 0xb
+       RTNLGRP_IPV6_IFINFO = 0xc
+       RTNLGRP_IPV6_PREFIX = 0x12
+       RTNLGRP_IPV6_RULE   = 0x13
+       RTNLGRP_ND_USEROPT  = 0x14
+       SizeofNlMsghdr      = 0x10
+       SizeofNlMsgerr      = 0x14
+       SizeofRtGenmsg      = 0x1
+       SizeofNlAttr        = 0x4
+       SizeofRtAttr        = 0x4
+       SizeofIfInfomsg     = 0x10
+       SizeofIfAddrmsg     = 0x8
+       SizeofRtMsg         = 0xc
+       SizeofRtNexthop     = 0x8
+)
+
+type NlMsghdr struct {
+       Len   uint32
+       Type  uint16
+       Flags uint16
+       Seq   uint32
+       Pid   uint32
+}
+
+type NlMsgerr struct {
+       Error int32
+       Msg   NlMsghdr
+}
+
+type RtGenmsg struct {
+       Family uint8
+}
+
+type NlAttr struct {
+       Len  uint16
+       Type uint16
+}
+
+type RtAttr struct {
+       Len  uint16
+       Type uint16
+}
+
+type IfInfomsg struct {
+       Family     uint8
+       X__ifi_pad uint8
+       Type       uint16
+       Index      int32
+       Flags      uint32
+       Change     uint32
+}
+
+type IfAddrmsg struct {
+       Family    uint8
+       Prefixlen uint8
+       Flags     uint8
+       Scope     uint8
+       Index     uint32
+}
+
+type RtMsg struct {
+       Family   uint8
+       Dst_len  uint8
+       Src_len  uint8
+       Tos      uint8
+       Table    uint8
+       Protocol uint8
+       Scope    uint8
+       Type     uint8
+       Flags    uint32
+}
+
+type RtNexthop struct {
+       Len     uint16
+       Flags   uint8
+       Hops    uint8
+       Ifindex int32
+}
+
+const (
+       SizeofSockFilter = 0x8
+       SizeofSockFprog  = 0x10
+)
+
+type SockFilter struct {
+       Code uint16
+       Jt   uint8
+       Jf   uint8
+       K    uint32
+}
+
+type SockFprog struct {
+       Len       uint16
+       Pad_cgo_0 [6]byte
+       Filter    *SockFilter
+}
+
+type InotifyEvent struct {
+       Wd     int32
+       Mask   uint32
+       Cookie uint32
+       Len    uint32
+}
+
+const SizeofInotifyEvent = 0x10
+
+type PtraceRegs struct {
+       Regs        [102]uint64
+       U_tsize     uint64
+       U_dsize     uint64
+       U_ssize     uint64
+       Start_code  uint64
+       Start_data  uint64
+       Start_stack uint64
+       Signal      int64
+       U_ar0       uint64
+       Magic       uint64
+       U_comm      [32]int8
+}
+
+type FdSet struct {
+       Bits [16]int64
+}
+
+type Sysinfo_t struct {
+       Uptime    int64
+       Loads     [3]uint64
+       Totalram  uint64
+       Freeram   uint64
+       Sharedram uint64
+       Bufferram uint64
+       Totalswap uint64
+       Freeswap  uint64
+       Procs     uint16
+       Pad       uint16
+       Pad_cgo_0 [4]byte
+       Totalhigh uint64
+       Freehigh  uint64
+       Unit      uint32
+       X_f       [0]int8
+       Pad_cgo_1 [4]byte
+}
+
+type Utsname struct {
+       Sysname    [65]int8
+       Nodename   [65]int8
+       Release    [65]int8
+       Version    [65]int8
+       Machine    [65]int8
+       Domainname [65]int8
+}
+
+type Ustat_t struct {
+       Tfree     int32
+       Pad_cgo_0 [4]byte
+       Tinode    uint64
+       Fname     [6]int8
+       Fpack     [6]int8
+       Pad_cgo_1 [4]byte
+}
+
+type EpollEvent struct {
+       Events uint32
+       Fd     int32
+       Pad    int32
+}
+
+const (
+       AT_FDCWD            = -0x64
+       AT_REMOVEDIR        = 0x200
+       AT_SYMLINK_NOFOLLOW = 0x100
+)
+
+type Termios struct {
+       Iflag     uint32
+       Oflag     uint32
+       Cflag     uint32
+       Lflag     uint32
+       Line      uint8
+       Cc        [32]uint8
+       Pad_cgo_0 [3]byte
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go
new file mode 100644 (file)
index 0000000..b14cbfe
--- /dev/null
@@ -0,0 +1,605 @@
+// +build ppc64,linux
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_linux.go
+
+package unix
+
+const (
+       sizeofPtr      = 0x8
+       sizeofShort    = 0x2
+       sizeofInt      = 0x4
+       sizeofLong     = 0x8
+       sizeofLongLong = 0x8
+       PathMax        = 0x1000
+)
+
+type (
+       _C_short     int16
+       _C_int       int32
+       _C_long      int64
+       _C_long_long int64
+)
+
+type Timespec struct {
+       Sec  int64
+       Nsec int64
+}
+
+type Timeval struct {
+       Sec  int64
+       Usec int64
+}
+
+type Timex struct {
+       Modes     uint32
+       Pad_cgo_0 [4]byte
+       Offset    int64
+       Freq      int64
+       Maxerror  int64
+       Esterror  int64
+       Status    int32
+       Pad_cgo_1 [4]byte
+       Constant  int64
+       Precision int64
+       Tolerance int64
+       Time      Timeval
+       Tick      int64
+       Ppsfreq   int64
+       Jitter    int64
+       Shift     int32
+       Pad_cgo_2 [4]byte
+       Stabil    int64
+       Jitcnt    int64
+       Calcnt    int64
+       Errcnt    int64
+       Stbcnt    int64
+       Tai       int32
+       Pad_cgo_3 [44]byte
+}
+
+type Time_t int64
+
+type Tms struct {
+       Utime  int64
+       Stime  int64
+       Cutime int64
+       Cstime int64
+}
+
+type Utimbuf struct {
+       Actime  int64
+       Modtime 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                uint64
+       Ino                uint64
+       Nlink              uint64
+       Mode               uint32
+       Uid                uint32
+       Gid                uint32
+       X__pad2            int32
+       Rdev               uint64
+       Size               int64
+       Blksize            int64
+       Blocks             int64
+       Atim               Timespec
+       Mtim               Timespec
+       Ctim               Timespec
+       X__glibc_reserved4 uint64
+       X__glibc_reserved5 uint64
+       X__glibc_reserved6 uint64
+}
+
+type Statfs_t struct {
+       Type    int64
+       Bsize   int64
+       Blocks  uint64
+       Bfree   uint64
+       Bavail  uint64
+       Files   uint64
+       Ffree   uint64
+       Fsid    Fsid
+       Namelen int64
+       Frsize  int64
+       Flags   int64
+       Spare   [4]int64
+}
+
+type Dirent struct {
+       Ino       uint64
+       Off       int64
+       Reclen    uint16
+       Type      uint8
+       Name      [256]uint8
+       Pad_cgo_0 [5]byte
+}
+
+type Fsid struct {
+       X__val [2]int32
+}
+
+type Flock_t struct {
+       Type      int16
+       Whence    int16
+       Pad_cgo_0 [4]byte
+       Start     int64
+       Len       int64
+       Pid       int32
+       Pad_cgo_1 [4]byte
+}
+
+const (
+       FADV_NORMAL     = 0x0
+       FADV_RANDOM     = 0x1
+       FADV_SEQUENTIAL = 0x2
+       FADV_WILLNEED   = 0x3
+       FADV_DONTNEED   = 0x4
+       FADV_NOREUSE    = 0x5
+)
+
+type RawSockaddrInet4 struct {
+       Family uint16
+       Port   uint16
+       Addr   [4]byte /* in_addr */
+       Zero   [8]uint8
+}
+
+type RawSockaddrInet6 struct {
+       Family   uint16
+       Port     uint16
+       Flowinfo uint32
+       Addr     [16]byte /* in6_addr */
+       Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+       Family uint16
+       Path   [108]int8
+}
+
+type RawSockaddrLinklayer struct {
+       Family   uint16
+       Protocol uint16
+       Ifindex  int32
+       Hatype   uint16
+       Pkttype  uint8
+       Halen    uint8
+       Addr     [8]uint8
+}
+
+type RawSockaddrNetlink struct {
+       Family uint16
+       Pad    uint16
+       Pid    uint32
+       Groups uint32
+}
+
+type RawSockaddr struct {
+       Family uint16
+       Data   [14]uint8
+}
+
+type RawSockaddrAny struct {
+       Addr RawSockaddr
+       Pad  [96]uint8
+}
+
+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 IPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
+type IPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Interface uint32
+}
+
+type Msghdr struct {
+       Name       *byte
+       Namelen    uint32
+       Pad_cgo_0  [4]byte
+       Iov        *Iovec
+       Iovlen     uint64
+       Control    *byte
+       Controllen uint64
+       Flags      int32
+       Pad_cgo_1  [4]byte
+}
+
+type Cmsghdr struct {
+       Len          uint64
+       Level        int32
+       Type         int32
+       X__cmsg_data [0]uint8
+}
+
+type Inet4Pktinfo struct {
+       Ifindex  int32
+       Spec_dst [4]byte /* in_addr */
+       Addr     [4]byte /* in_addr */
+}
+
+type Inet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+       Addr RawSockaddrInet6
+       Mtu  uint32
+}
+
+type ICMPv6Filter struct {
+       Data [8]uint32
+}
+
+type Ucred struct {
+       Pid int32
+       Uid uint32
+       Gid uint32
+}
+
+type TCPInfo struct {
+       State          uint8
+       Ca_state       uint8
+       Retransmits    uint8
+       Probes         uint8
+       Backoff        uint8
+       Options        uint8
+       Pad_cgo_0      [2]byte
+       Rto            uint32
+       Ato            uint32
+       Snd_mss        uint32
+       Rcv_mss        uint32
+       Unacked        uint32
+       Sacked         uint32
+       Lost           uint32
+       Retrans        uint32
+       Fackets        uint32
+       Last_data_sent uint32
+       Last_ack_sent  uint32
+       Last_data_recv uint32
+       Last_ack_recv  uint32
+       Pmtu           uint32
+       Rcv_ssthresh   uint32
+       Rtt            uint32
+       Rttvar         uint32
+       Snd_ssthresh   uint32
+       Snd_cwnd       uint32
+       Advmss         uint32
+       Reordering     uint32
+       Rcv_rtt        uint32
+       Rcv_space      uint32
+       Total_retrans  uint32
+}
+
+const (
+       SizeofSockaddrInet4     = 0x10
+       SizeofSockaddrInet6     = 0x1c
+       SizeofSockaddrAny       = 0x70
+       SizeofSockaddrUnix      = 0x6e
+       SizeofSockaddrLinklayer = 0x14
+       SizeofSockaddrNetlink   = 0xc
+       SizeofLinger            = 0x8
+       SizeofIPMreq            = 0x8
+       SizeofIPMreqn           = 0xc
+       SizeofIPv6Mreq          = 0x14
+       SizeofMsghdr            = 0x38
+       SizeofCmsghdr           = 0x10
+       SizeofInet4Pktinfo      = 0xc
+       SizeofInet6Pktinfo      = 0x14
+       SizeofIPv6MTUInfo       = 0x20
+       SizeofICMPv6Filter      = 0x20
+       SizeofUcred             = 0xc
+       SizeofTCPInfo           = 0x68
+)
+
+const (
+       IFA_UNSPEC          = 0x0
+       IFA_ADDRESS         = 0x1
+       IFA_LOCAL           = 0x2
+       IFA_LABEL           = 0x3
+       IFA_BROADCAST       = 0x4
+       IFA_ANYCAST         = 0x5
+       IFA_CACHEINFO       = 0x6
+       IFA_MULTICAST       = 0x7
+       IFLA_UNSPEC         = 0x0
+       IFLA_ADDRESS        = 0x1
+       IFLA_BROADCAST      = 0x2
+       IFLA_IFNAME         = 0x3
+       IFLA_MTU            = 0x4
+       IFLA_LINK           = 0x5
+       IFLA_QDISC          = 0x6
+       IFLA_STATS          = 0x7
+       IFLA_COST           = 0x8
+       IFLA_PRIORITY       = 0x9
+       IFLA_MASTER         = 0xa
+       IFLA_WIRELESS       = 0xb
+       IFLA_PROTINFO       = 0xc
+       IFLA_TXQLEN         = 0xd
+       IFLA_MAP            = 0xe
+       IFLA_WEIGHT         = 0xf
+       IFLA_OPERSTATE      = 0x10
+       IFLA_LINKMODE       = 0x11
+       IFLA_LINKINFO       = 0x12
+       IFLA_NET_NS_PID     = 0x13
+       IFLA_IFALIAS        = 0x14
+       IFLA_MAX            = 0x23
+       RT_SCOPE_UNIVERSE   = 0x0
+       RT_SCOPE_SITE       = 0xc8
+       RT_SCOPE_LINK       = 0xfd
+       RT_SCOPE_HOST       = 0xfe
+       RT_SCOPE_NOWHERE    = 0xff
+       RT_TABLE_UNSPEC     = 0x0
+       RT_TABLE_COMPAT     = 0xfc
+       RT_TABLE_DEFAULT    = 0xfd
+       RT_TABLE_MAIN       = 0xfe
+       RT_TABLE_LOCAL      = 0xff
+       RT_TABLE_MAX        = 0xffffffff
+       RTA_UNSPEC          = 0x0
+       RTA_DST             = 0x1
+       RTA_SRC             = 0x2
+       RTA_IIF             = 0x3
+       RTA_OIF             = 0x4
+       RTA_GATEWAY         = 0x5
+       RTA_PRIORITY        = 0x6
+       RTA_PREFSRC         = 0x7
+       RTA_METRICS         = 0x8
+       RTA_MULTIPATH       = 0x9
+       RTA_FLOW            = 0xb
+       RTA_CACHEINFO       = 0xc
+       RTA_TABLE           = 0xf
+       RTN_UNSPEC          = 0x0
+       RTN_UNICAST         = 0x1
+       RTN_LOCAL           = 0x2
+       RTN_BROADCAST       = 0x3
+       RTN_ANYCAST         = 0x4
+       RTN_MULTICAST       = 0x5
+       RTN_BLACKHOLE       = 0x6
+       RTN_UNREACHABLE     = 0x7
+       RTN_PROHIBIT        = 0x8
+       RTN_THROW           = 0x9
+       RTN_NAT             = 0xa
+       RTN_XRESOLVE        = 0xb
+       RTNLGRP_NONE        = 0x0
+       RTNLGRP_LINK        = 0x1
+       RTNLGRP_NOTIFY      = 0x2
+       RTNLGRP_NEIGH       = 0x3
+       RTNLGRP_TC          = 0x4
+       RTNLGRP_IPV4_IFADDR = 0x5
+       RTNLGRP_IPV4_MROUTE = 0x6
+       RTNLGRP_IPV4_ROUTE  = 0x7
+       RTNLGRP_IPV4_RULE   = 0x8
+       RTNLGRP_IPV6_IFADDR = 0x9
+       RTNLGRP_IPV6_MROUTE = 0xa
+       RTNLGRP_IPV6_ROUTE  = 0xb
+       RTNLGRP_IPV6_IFINFO = 0xc
+       RTNLGRP_IPV6_PREFIX = 0x12
+       RTNLGRP_IPV6_RULE   = 0x13
+       RTNLGRP_ND_USEROPT  = 0x14
+       SizeofNlMsghdr      = 0x10
+       SizeofNlMsgerr      = 0x14
+       SizeofRtGenmsg      = 0x1
+       SizeofNlAttr        = 0x4
+       SizeofRtAttr        = 0x4
+       SizeofIfInfomsg     = 0x10
+       SizeofIfAddrmsg     = 0x8
+       SizeofRtMsg         = 0xc
+       SizeofRtNexthop     = 0x8
+)
+
+type NlMsghdr struct {
+       Len   uint32
+       Type  uint16
+       Flags uint16
+       Seq   uint32
+       Pid   uint32
+}
+
+type NlMsgerr struct {
+       Error int32
+       Msg   NlMsghdr
+}
+
+type RtGenmsg struct {
+       Family uint8
+}
+
+type NlAttr struct {
+       Len  uint16
+       Type uint16
+}
+
+type RtAttr struct {
+       Len  uint16
+       Type uint16
+}
+
+type IfInfomsg struct {
+       Family     uint8
+       X__ifi_pad uint8
+       Type       uint16
+       Index      int32
+       Flags      uint32
+       Change     uint32
+}
+
+type IfAddrmsg struct {
+       Family    uint8
+       Prefixlen uint8
+       Flags     uint8
+       Scope     uint8
+       Index     uint32
+}
+
+type RtMsg struct {
+       Family   uint8
+       Dst_len  uint8
+       Src_len  uint8
+       Tos      uint8
+       Table    uint8
+       Protocol uint8
+       Scope    uint8
+       Type     uint8
+       Flags    uint32
+}
+
+type RtNexthop struct {
+       Len     uint16
+       Flags   uint8
+       Hops    uint8
+       Ifindex int32
+}
+
+const (
+       SizeofSockFilter = 0x8
+       SizeofSockFprog  = 0x10
+)
+
+type SockFilter struct {
+       Code uint16
+       Jt   uint8
+       Jf   uint8
+       K    uint32
+}
+
+type SockFprog struct {
+       Len       uint16
+       Pad_cgo_0 [6]byte
+       Filter    *SockFilter
+}
+
+type InotifyEvent struct {
+       Wd     int32
+       Mask   uint32
+       Cookie uint32
+       Len    uint32
+       Name   [0]uint8
+}
+
+const SizeofInotifyEvent = 0x10
+
+type PtraceRegs struct {
+       Gpr       [32]uint64
+       Nip       uint64
+       Msr       uint64
+       Orig_gpr3 uint64
+       Ctr       uint64
+       Link      uint64
+       Xer       uint64
+       Ccr       uint64
+       Softe     uint64
+       Trap      uint64
+       Dar       uint64
+       Dsisr     uint64
+       Result    uint64
+}
+
+type FdSet struct {
+       Bits [16]int64
+}
+
+type Sysinfo_t struct {
+       Uptime    int64
+       Loads     [3]uint64
+       Totalram  uint64
+       Freeram   uint64
+       Sharedram uint64
+       Bufferram uint64
+       Totalswap uint64
+       Freeswap  uint64
+       Procs     uint16
+       Pad       uint16
+       Pad_cgo_0 [4]byte
+       Totalhigh uint64
+       Freehigh  uint64
+       Unit      uint32
+       X_f       [0]uint8
+       Pad_cgo_1 [4]byte
+}
+
+type Utsname struct {
+       Sysname    [65]uint8
+       Nodename   [65]uint8
+       Release    [65]uint8
+       Version    [65]uint8
+       Machine    [65]uint8
+       Domainname [65]uint8
+}
+
+type Ustat_t struct {
+       Tfree     int32
+       Pad_cgo_0 [4]byte
+       Tinode    uint64
+       Fname     [6]uint8
+       Fpack     [6]uint8
+       Pad_cgo_1 [4]byte
+}
+
+type EpollEvent struct {
+       Events uint32
+       Fd     int32
+       Pad    int32
+}
+
+const (
+       AT_FDCWD            = -0x64
+       AT_REMOVEDIR        = 0x200
+       AT_SYMLINK_NOFOLLOW = 0x100
+)
+
+type Termios struct {
+       Iflag  uint32
+       Oflag  uint32
+       Cflag  uint32
+       Lflag  uint32
+       Cc     [19]uint8
+       Line   uint8
+       Ispeed uint32
+       Ospeed uint32
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go
new file mode 100644 (file)
index 0000000..22c96a2
--- /dev/null
@@ -0,0 +1,605 @@
+// +build ppc64le,linux
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_linux.go
+
+package unix
+
+const (
+       sizeofPtr      = 0x8
+       sizeofShort    = 0x2
+       sizeofInt      = 0x4
+       sizeofLong     = 0x8
+       sizeofLongLong = 0x8
+       PathMax        = 0x1000
+)
+
+type (
+       _C_short     int16
+       _C_int       int32
+       _C_long      int64
+       _C_long_long int64
+)
+
+type Timespec struct {
+       Sec  int64
+       Nsec int64
+}
+
+type Timeval struct {
+       Sec  int64
+       Usec int64
+}
+
+type Timex struct {
+       Modes     uint32
+       Pad_cgo_0 [4]byte
+       Offset    int64
+       Freq      int64
+       Maxerror  int64
+       Esterror  int64
+       Status    int32
+       Pad_cgo_1 [4]byte
+       Constant  int64
+       Precision int64
+       Tolerance int64
+       Time      Timeval
+       Tick      int64
+       Ppsfreq   int64
+       Jitter    int64
+       Shift     int32
+       Pad_cgo_2 [4]byte
+       Stabil    int64
+       Jitcnt    int64
+       Calcnt    int64
+       Errcnt    int64
+       Stbcnt    int64
+       Tai       int32
+       Pad_cgo_3 [44]byte
+}
+
+type Time_t int64
+
+type Tms struct {
+       Utime  int64
+       Stime  int64
+       Cutime int64
+       Cstime int64
+}
+
+type Utimbuf struct {
+       Actime  int64
+       Modtime 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                uint64
+       Ino                uint64
+       Nlink              uint64
+       Mode               uint32
+       Uid                uint32
+       Gid                uint32
+       X__pad2            int32
+       Rdev               uint64
+       Size               int64
+       Blksize            int64
+       Blocks             int64
+       Atim               Timespec
+       Mtim               Timespec
+       Ctim               Timespec
+       X__glibc_reserved4 uint64
+       X__glibc_reserved5 uint64
+       X__glibc_reserved6 uint64
+}
+
+type Statfs_t struct {
+       Type    int64
+       Bsize   int64
+       Blocks  uint64
+       Bfree   uint64
+       Bavail  uint64
+       Files   uint64
+       Ffree   uint64
+       Fsid    Fsid
+       Namelen int64
+       Frsize  int64
+       Flags   int64
+       Spare   [4]int64
+}
+
+type Dirent struct {
+       Ino       uint64
+       Off       int64
+       Reclen    uint16
+       Type      uint8
+       Name      [256]uint8
+       Pad_cgo_0 [5]byte
+}
+
+type Fsid struct {
+       X__val [2]int32
+}
+
+type Flock_t struct {
+       Type      int16
+       Whence    int16
+       Pad_cgo_0 [4]byte
+       Start     int64
+       Len       int64
+       Pid       int32
+       Pad_cgo_1 [4]byte
+}
+
+const (
+       FADV_NORMAL     = 0x0
+       FADV_RANDOM     = 0x1
+       FADV_SEQUENTIAL = 0x2
+       FADV_WILLNEED   = 0x3
+       FADV_DONTNEED   = 0x4
+       FADV_NOREUSE    = 0x5
+)
+
+type RawSockaddrInet4 struct {
+       Family uint16
+       Port   uint16
+       Addr   [4]byte /* in_addr */
+       Zero   [8]uint8
+}
+
+type RawSockaddrInet6 struct {
+       Family   uint16
+       Port     uint16
+       Flowinfo uint32
+       Addr     [16]byte /* in6_addr */
+       Scope_id uint32
+}
+
+type RawSockaddrUnix struct {
+       Family uint16
+       Path   [108]int8
+}
+
+type RawSockaddrLinklayer struct {
+       Family   uint16
+       Protocol uint16
+       Ifindex  int32
+       Hatype   uint16
+       Pkttype  uint8
+       Halen    uint8
+       Addr     [8]uint8
+}
+
+type RawSockaddrNetlink struct {
+       Family uint16
+       Pad    uint16
+       Pid    uint32
+       Groups uint32
+}
+
+type RawSockaddr struct {
+       Family uint16
+       Data   [14]uint8
+}
+
+type RawSockaddrAny struct {
+       Addr RawSockaddr
+       Pad  [96]uint8
+}
+
+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 IPMreqn struct {
+       Multiaddr [4]byte /* in_addr */
+       Address   [4]byte /* in_addr */
+       Ifindex   int32
+}
+
+type IPv6Mreq struct {
+       Multiaddr [16]byte /* in6_addr */
+       Interface uint32
+}
+
+type Msghdr struct {
+       Name       *byte
+       Namelen    uint32
+       Pad_cgo_0  [4]byte
+       Iov        *Iovec
+       Iovlen     uint64
+       Control    *byte
+       Controllen uint64
+       Flags      int32
+       Pad_cgo_1  [4]byte
+}
+
+type Cmsghdr struct {
+       Len          uint64
+       Level        int32
+       Type         int32
+       X__cmsg_data [0]uint8
+}
+
+type Inet4Pktinfo struct {
+       Ifindex  int32
+       Spec_dst [4]byte /* in_addr */
+       Addr     [4]byte /* in_addr */
+}
+
+type Inet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+       Addr RawSockaddrInet6
+       Mtu  uint32
+}
+
+type ICMPv6Filter struct {
+       Data [8]uint32
+}
+
+type Ucred struct {
+       Pid int32
+       Uid uint32
+       Gid uint32
+}
+
+type TCPInfo struct {
+       State          uint8
+       Ca_state       uint8
+       Retransmits    uint8
+       Probes         uint8
+       Backoff        uint8
+       Options        uint8
+       Pad_cgo_0      [2]byte
+       Rto            uint32
+       Ato            uint32
+       Snd_mss        uint32
+       Rcv_mss        uint32
+       Unacked        uint32
+       Sacked         uint32
+       Lost           uint32
+       Retrans        uint32
+       Fackets        uint32
+       Last_data_sent uint32
+       Last_ack_sent  uint32
+       Last_data_recv uint32
+       Last_ack_recv  uint32
+       Pmtu           uint32
+       Rcv_ssthresh   uint32
+       Rtt            uint32
+       Rttvar         uint32
+       Snd_ssthresh   uint32
+       Snd_cwnd       uint32
+       Advmss         uint32
+       Reordering     uint32
+       Rcv_rtt        uint32
+       Rcv_space      uint32
+       Total_retrans  uint32
+}
+
+const (
+       SizeofSockaddrInet4     = 0x10
+       SizeofSockaddrInet6     = 0x1c
+       SizeofSockaddrAny       = 0x70
+       SizeofSockaddrUnix      = 0x6e
+       SizeofSockaddrLinklayer = 0x14
+       SizeofSockaddrNetlink   = 0xc
+       SizeofLinger            = 0x8
+       SizeofIPMreq            = 0x8
+       SizeofIPMreqn           = 0xc
+       SizeofIPv6Mreq          = 0x14
+       SizeofMsghdr            = 0x38
+       SizeofCmsghdr           = 0x10
+       SizeofInet4Pktinfo      = 0xc
+       SizeofInet6Pktinfo      = 0x14
+       SizeofIPv6MTUInfo       = 0x20
+       SizeofICMPv6Filter      = 0x20
+       SizeofUcred             = 0xc
+       SizeofTCPInfo           = 0x68
+)
+
+const (
+       IFA_UNSPEC          = 0x0
+       IFA_ADDRESS         = 0x1
+       IFA_LOCAL           = 0x2
+       IFA_LABEL           = 0x3
+       IFA_BROADCAST       = 0x4
+       IFA_ANYCAST         = 0x5
+       IFA_CACHEINFO       = 0x6
+       IFA_MULTICAST       = 0x7
+       IFLA_UNSPEC         = 0x0
+       IFLA_ADDRESS        = 0x1
+       IFLA_BROADCAST      = 0x2
+       IFLA_IFNAME         = 0x3
+       IFLA_MTU            = 0x4
+       IFLA_LINK           = 0x5
+       IFLA_QDISC          = 0x6
+       IFLA_STATS          = 0x7
+       IFLA_COST           = 0x8
+       IFLA_PRIORITY       = 0x9
+       IFLA_MASTER         = 0xa
+       IFLA_WIRELESS       = 0xb
+       IFLA_PROTINFO       = 0xc
+       IFLA_TXQLEN         = 0xd
+       IFLA_MAP            = 0xe
+       IFLA_WEIGHT         = 0xf
+       IFLA_OPERSTATE      = 0x10
+       IFLA_LINKMODE       = 0x11
+       IFLA_LINKINFO       = 0x12
+       IFLA_NET_NS_PID     = 0x13
+       IFLA_IFALIAS        = 0x14
+       IFLA_MAX            = 0x22
+       RT_SCOPE_UNIVERSE   = 0x0
+       RT_SCOPE_SITE       = 0xc8
+       RT_SCOPE_LINK       = 0xfd
+       RT_SCOPE_HOST       = 0xfe
+       RT_SCOPE_NOWHERE    = 0xff
+       RT_TABLE_UNSPEC     = 0x0
+       RT_TABLE_COMPAT     = 0xfc
+       RT_TABLE_DEFAULT    = 0xfd
+       RT_TABLE_MAIN       = 0xfe
+       RT_TABLE_LOCAL      = 0xff
+       RT_TABLE_MAX        = 0xffffffff
+       RTA_UNSPEC          = 0x0
+       RTA_DST             = 0x1
+       RTA_SRC             = 0x2
+       RTA_IIF             = 0x3
+       RTA_OIF             = 0x4
+       RTA_GATEWAY         = 0x5
+       RTA_PRIORITY        = 0x6
+       RTA_PREFSRC         = 0x7
+       RTA_METRICS         = 0x8
+       RTA_MULTIPATH       = 0x9
+       RTA_FLOW            = 0xb
+       RTA_CACHEINFO       = 0xc
+       RTA_TABLE           = 0xf
+       RTN_UNSPEC          = 0x0
+       RTN_UNICAST         = 0x1
+       RTN_LOCAL           = 0x2
+       RTN_BROADCAST       = 0x3
+       RTN_ANYCAST         = 0x4
+       RTN_MULTICAST       = 0x5
+       RTN_BLACKHOLE       = 0x6
+       RTN_UNREACHABLE     = 0x7
+       RTN_PROHIBIT        = 0x8
+       RTN_THROW           = 0x9
+       RTN_NAT             = 0xa
+       RTN_XRESOLVE        = 0xb
+       RTNLGRP_NONE        = 0x0
+       RTNLGRP_LINK        = 0x1
+       RTNLGRP_NOTIFY      = 0x2
+       RTNLGRP_NEIGH       = 0x3
+       RTNLGRP_TC          = 0x4
+       RTNLGRP_IPV4_IFADDR = 0x5
+       RTNLGRP_IPV4_MROUTE = 0x6
+       RTNLGRP_IPV4_ROUTE  = 0x7
+       RTNLGRP_IPV4_RULE   = 0x8
+       RTNLGRP_IPV6_IFADDR = 0x9
+       RTNLGRP_IPV6_MROUTE = 0xa
+       RTNLGRP_IPV6_ROUTE  = 0xb
+       RTNLGRP_IPV6_IFINFO = 0xc
+       RTNLGRP_IPV6_PREFIX = 0x12
+       RTNLGRP_IPV6_RULE   = 0x13
+       RTNLGRP_ND_USEROPT  = 0x14
+       SizeofNlMsghdr      = 0x10
+       SizeofNlMsgerr      = 0x14
+       SizeofRtGenmsg      = 0x1
+       SizeofNlAttr        = 0x4
+       SizeofRtAttr        = 0x4
+       SizeofIfInfomsg     = 0x10
+       SizeofIfAddrmsg     = 0x8
+       SizeofRtMsg         = 0xc
+       SizeofRtNexthop     = 0x8
+)
+
+type NlMsghdr struct {
+       Len   uint32
+       Type  uint16
+       Flags uint16
+       Seq   uint32
+       Pid   uint32
+}
+
+type NlMsgerr struct {
+       Error int32
+       Msg   NlMsghdr
+}
+
+type RtGenmsg struct {
+       Family uint8
+}
+
+type NlAttr struct {
+       Len  uint16
+       Type uint16
+}
+
+type RtAttr struct {
+       Len  uint16
+       Type uint16
+}
+
+type IfInfomsg struct {
+       Family     uint8
+       X__ifi_pad uint8
+       Type       uint16
+       Index      int32
+       Flags      uint32
+       Change     uint32
+}
+
+type IfAddrmsg struct {
+       Family    uint8
+       Prefixlen uint8
+       Flags     uint8
+       Scope     uint8
+       Index     uint32
+}
+
+type RtMsg struct {
+       Family   uint8
+       Dst_len  uint8
+       Src_len  uint8
+       Tos      uint8
+       Table    uint8
+       Protocol uint8
+       Scope    uint8
+       Type     uint8
+       Flags    uint32
+}
+
+type RtNexthop struct {
+       Len     uint16
+       Flags   uint8
+       Hops    uint8
+       Ifindex int32
+}
+
+const (
+       SizeofSockFilter = 0x8
+       SizeofSockFprog  = 0x10
+)
+
+type SockFilter struct {
+       Code uint16
+       Jt   uint8
+       Jf   uint8
+       K    uint32
+}
+
+type SockFprog struct {
+       Len       uint16
+       Pad_cgo_0 [6]byte
+       Filter    *SockFilter
+}
+
+type InotifyEvent struct {
+       Wd     int32
+       Mask   uint32
+       Cookie uint32
+       Len    uint32
+       Name   [0]uint8
+}
+
+const SizeofInotifyEvent = 0x10
+
+type PtraceRegs struct {
+       Gpr       [32]uint64
+       Nip       uint64
+       Msr       uint64
+       Orig_gpr3 uint64
+       Ctr       uint64
+       Link      uint64
+       Xer       uint64
+       Ccr       uint64
+       Softe     uint64
+       Trap      uint64
+       Dar       uint64
+       Dsisr     uint64
+       Result    uint64
+}
+
+type FdSet struct {
+       Bits [16]int64
+}
+
+type Sysinfo_t struct {
+       Uptime    int64
+       Loads     [3]uint64
+       Totalram  uint64
+       Freeram   uint64
+       Sharedram uint64
+       Bufferram uint64
+       Totalswap uint64
+       Freeswap  uint64
+       Procs     uint16
+       Pad       uint16
+       Pad_cgo_0 [4]byte
+       Totalhigh uint64
+       Freehigh  uint64
+       Unit      uint32
+       X_f       [0]uint8
+       Pad_cgo_1 [4]byte
+}
+
+type Utsname struct {
+       Sysname    [65]uint8
+       Nodename   [65]uint8
+       Release    [65]uint8
+       Version    [65]uint8
+       Machine    [65]uint8
+       Domainname [65]uint8
+}
+
+type Ustat_t struct {
+       Tfree     int32
+       Pad_cgo_0 [4]byte
+       Tinode    uint64
+       Fname     [6]uint8
+       Fpack     [6]uint8
+       Pad_cgo_1 [4]byte
+}
+
+type EpollEvent struct {
+       Events uint32
+       Fd     int32
+       Pad    int32
+}
+
+const (
+       AT_FDCWD            = -0x64
+       AT_REMOVEDIR        = 0x200
+       AT_SYMLINK_NOFOLLOW = 0x100
+)
+
+type Termios struct {
+       Iflag  uint32
+       Oflag  uint32
+       Cflag  uint32
+       Lflag  uint32
+       Cc     [19]uint8
+       Line   uint8
+       Ispeed uint32
+       Ospeed uint32
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go
new file mode 100644 (file)
index 0000000..caf755f
--- /dev/null
@@ -0,0 +1,396 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_netbsd.go
+
+// +build 386,netbsd
+
+package unix
+
+const (
+       sizeofPtr      = 0x4
+       sizeofShort    = 0x2
+       sizeofInt      = 0x4
+       sizeofLong     = 0x4
+       sizeofLongLong = 0x8
+)
+
+type (
+       _C_short     int16
+       _C_int       int32
+       _C_long      int32
+       _C_long_long int64
+)
+
+type Timespec struct {
+       Sec  int64
+       Nsec int32
+}
+
+type Timeval struct {
+       Sec  int64
+       Usec int32
+}
+
+type Rusage struct {
+       Utime    Timeval
+       Stime    Timeval
+       Maxrss   int32
+       Ixrss    int32
+       Idrss    int32
+       Isrss    int32
+       Minflt   int32
+       Majflt   int32
+       Nswap    int32
+       Inblock  int32
+       Oublock  int32
+       Msgsnd   int32
+       Msgrcv   int32
+       Nsignals int32
+       Nvcsw    int32
+       Nivcsw   int32
+}
+
+type Rlimit struct {
+       Cur uint64
+       Max uint64
+}
+
+type _Gid_t uint32
+
+type Stat_t struct {
+       Dev           uint64
+       Mode          uint32
+       Ino           uint64
+       Nlink         uint32
+       Uid           uint32
+       Gid           uint32
+       Rdev          uint64
+       Atimespec     Timespec
+       Mtimespec     Timespec
+       Ctimespec     Timespec
+       Birthtimespec Timespec
+       Size          int64
+       Blocks        int64
+       Blksize       uint32
+       Flags         uint32
+       Gen           uint32
+       Spare         [2]uint32
+}
+
+type Statfs_t [0]byte
+
+type Flock_t struct {
+       Start  int64
+       Len    int64
+       Pid    int32
+       Type   int16
+       Whence int16
+}
+
+type Dirent struct {
+       Fileno    uint64
+       Reclen    uint16
+       Namlen    uint16
+       Type      uint8
+       Name      [512]int8
+       Pad_cgo_0 [3]byte
+}
+
+type Fsid struct {
+       X__fsid_val [2]int32
+}
+
+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   [12]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  uint32
+}
+
+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
+       Iov        *Iovec
+       Iovlen     int32
+       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 IPv6MTUInfo struct {
+       Addr RawSockaddrInet6
+       Mtu  uint32
+}
+
+type ICMPv6Filter struct {
+       Filt [8]uint32
+}
+
+const (
+       SizeofSockaddrInet4    = 0x10
+       SizeofSockaddrInet6    = 0x1c
+       SizeofSockaddrAny      = 0x6c
+       SizeofSockaddrUnix     = 0x6a
+       SizeofSockaddrDatalink = 0x14
+       SizeofLinger           = 0x8
+       SizeofIPMreq           = 0x8
+       SizeofIPv6Mreq         = 0x14
+       SizeofMsghdr           = 0x1c
+       SizeofCmsghdr          = 0xc
+       SizeofInet6Pktinfo     = 0x14
+       SizeofIPv6MTUInfo      = 0x20
+       SizeofICMPv6Filter     = 0x20
+)
+
+const (
+       PTRACE_TRACEME = 0x0
+       PTRACE_CONT    = 0x7
+       PTRACE_KILL    = 0x8
+)
+
+type Kevent_t struct {
+       Ident  uint32
+       Filter uint32
+       Flags  uint32
+       Fflags uint32
+       Data   int64
+       Udata  int32
+}
+
+type FdSet struct {
+       Bits [8]uint32
+}
+
+const (
+       SizeofIfMsghdr         = 0x98
+       SizeofIfData           = 0x84
+       SizeofIfaMsghdr        = 0x18
+       SizeofIfAnnounceMsghdr = 0x18
+       SizeofRtMsghdr         = 0x78
+       SizeofRtMetrics        = 0x50
+)
+
+type IfMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Data      IfData
+       Pad_cgo_1 [4]byte
+}
+
+type IfData struct {
+       Type       uint8
+       Addrlen    uint8
+       Hdrlen     uint8
+       Pad_cgo_0  [1]byte
+       Link_state int32
+       Mtu        uint64
+       Metric     uint64
+       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 Timespec
+}
+
+type IfaMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Metric    int32
+       Index     uint16
+       Pad_cgo_0 [6]byte
+}
+
+type IfAnnounceMsghdr struct {
+       Msglen  uint16
+       Version uint8
+       Type    uint8
+       Index   uint16
+       Name    [16]int8
+       What    uint16
+}
+
+type RtMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Flags     int32
+       Addrs     int32
+       Pid       int32
+       Seq       int32
+       Errno     int32
+       Use       int32
+       Inits     int32
+       Pad_cgo_1 [4]byte
+       Rmx       RtMetrics
+}
+
+type RtMetrics struct {
+       Locks    uint64
+       Mtu      uint64
+       Hopcount uint64
+       Recvpipe uint64
+       Sendpipe uint64
+       Ssthresh uint64
+       Rtt      uint64
+       Rttvar   uint64
+       Expire   int64
+       Pksent   int64
+}
+
+type Mclpool [0]byte
+
+const (
+       SizeofBpfVersion = 0x4
+       SizeofBpfStat    = 0x80
+       SizeofBpfProgram = 0x8
+       SizeofBpfInsn    = 0x8
+       SizeofBpfHdr     = 0x14
+)
+
+type BpfVersion struct {
+       Major uint16
+       Minor uint16
+}
+
+type BpfStat struct {
+       Recv    uint64
+       Drop    uint64
+       Capt    uint64
+       Padding [13]uint64
+}
+
+type BpfProgram struct {
+       Len   uint32
+       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_cgo_0 [2]byte
+}
+
+type BpfTimeval struct {
+       Sec  int32
+       Usec int32
+}
+
+type Termios struct {
+       Iflag  uint32
+       Oflag  uint32
+       Cflag  uint32
+       Lflag  uint32
+       Cc     [20]uint8
+       Ispeed int32
+       Ospeed int32
+}
+
+type Sysctlnode struct {
+       Flags           uint32
+       Num             int32
+       Name            [32]int8
+       Ver             uint32
+       X__rsvd         uint32
+       Un              [16]byte
+       X_sysctl_size   [8]byte
+       X_sysctl_func   [8]byte
+       X_sysctl_parent [8]byte
+       X_sysctl_desc   [8]byte
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go
new file mode 100644 (file)
index 0000000..91b4a53
--- /dev/null
@@ -0,0 +1,403 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_netbsd.go
+
+// +build amd64,netbsd
+
+package unix
+
+const (
+       sizeofPtr      = 0x8
+       sizeofShort    = 0x2
+       sizeofInt      = 0x4
+       sizeofLong     = 0x8
+       sizeofLongLong = 0x8
+)
+
+type (
+       _C_short     int16
+       _C_int       int32
+       _C_long      int64
+       _C_long_long int64
+)
+
+type Timespec struct {
+       Sec  int64
+       Nsec int64
+}
+
+type Timeval struct {
+       Sec       int64
+       Usec      int32
+       Pad_cgo_0 [4]byte
+}
+
+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           uint64
+       Mode          uint32
+       Pad_cgo_0     [4]byte
+       Ino           uint64
+       Nlink         uint32
+       Uid           uint32
+       Gid           uint32
+       Pad_cgo_1     [4]byte
+       Rdev          uint64
+       Atimespec     Timespec
+       Mtimespec     Timespec
+       Ctimespec     Timespec
+       Birthtimespec Timespec
+       Size          int64
+       Blocks        int64
+       Blksize       uint32
+       Flags         uint32
+       Gen           uint32
+       Spare         [2]uint32
+       Pad_cgo_2     [4]byte
+}
+
+type Statfs_t [0]byte
+
+type Flock_t struct {
+       Start  int64
+       Len    int64
+       Pid    int32
+       Type   int16
+       Whence int16
+}
+
+type Dirent struct {
+       Fileno    uint64
+       Reclen    uint16
+       Namlen    uint16
+       Type      uint8
+       Name      [512]int8
+       Pad_cgo_0 [3]byte
+}
+
+type Fsid struct {
+       X__fsid_val [2]int32
+}
+
+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   [12]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_cgo_0  [4]byte
+       Iov        *Iovec
+       Iovlen     int32
+       Pad_cgo_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 IPv6MTUInfo struct {
+       Addr RawSockaddrInet6
+       Mtu  uint32
+}
+
+type ICMPv6Filter struct {
+       Filt [8]uint32
+}
+
+const (
+       SizeofSockaddrInet4    = 0x10
+       SizeofSockaddrInet6    = 0x1c
+       SizeofSockaddrAny      = 0x6c
+       SizeofSockaddrUnix     = 0x6a
+       SizeofSockaddrDatalink = 0x14
+       SizeofLinger           = 0x8
+       SizeofIPMreq           = 0x8
+       SizeofIPv6Mreq         = 0x14
+       SizeofMsghdr           = 0x30
+       SizeofCmsghdr          = 0xc
+       SizeofInet6Pktinfo     = 0x14
+       SizeofIPv6MTUInfo      = 0x20
+       SizeofICMPv6Filter     = 0x20
+)
+
+const (
+       PTRACE_TRACEME = 0x0
+       PTRACE_CONT    = 0x7
+       PTRACE_KILL    = 0x8
+)
+
+type Kevent_t struct {
+       Ident     uint64
+       Filter    uint32
+       Flags     uint32
+       Fflags    uint32
+       Pad_cgo_0 [4]byte
+       Data      int64
+       Udata     int64
+}
+
+type FdSet struct {
+       Bits [8]uint32
+}
+
+const (
+       SizeofIfMsghdr         = 0x98
+       SizeofIfData           = 0x88
+       SizeofIfaMsghdr        = 0x18
+       SizeofIfAnnounceMsghdr = 0x18
+       SizeofRtMsghdr         = 0x78
+       SizeofRtMetrics        = 0x50
+)
+
+type IfMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Data      IfData
+}
+
+type IfData struct {
+       Type       uint8
+       Addrlen    uint8
+       Hdrlen     uint8
+       Pad_cgo_0  [1]byte
+       Link_state int32
+       Mtu        uint64
+       Metric     uint64
+       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 Timespec
+}
+
+type IfaMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Metric    int32
+       Index     uint16
+       Pad_cgo_0 [6]byte
+}
+
+type IfAnnounceMsghdr struct {
+       Msglen  uint16
+       Version uint8
+       Type    uint8
+       Index   uint16
+       Name    [16]int8
+       What    uint16
+}
+
+type RtMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Flags     int32
+       Addrs     int32
+       Pid       int32
+       Seq       int32
+       Errno     int32
+       Use       int32
+       Inits     int32
+       Pad_cgo_1 [4]byte
+       Rmx       RtMetrics
+}
+
+type RtMetrics struct {
+       Locks    uint64
+       Mtu      uint64
+       Hopcount uint64
+       Recvpipe uint64
+       Sendpipe uint64
+       Ssthresh uint64
+       Rtt      uint64
+       Rttvar   uint64
+       Expire   int64
+       Pksent   int64
+}
+
+type Mclpool [0]byte
+
+const (
+       SizeofBpfVersion = 0x4
+       SizeofBpfStat    = 0x80
+       SizeofBpfProgram = 0x10
+       SizeofBpfInsn    = 0x8
+       SizeofBpfHdr     = 0x20
+)
+
+type BpfVersion struct {
+       Major uint16
+       Minor uint16
+}
+
+type BpfStat struct {
+       Recv    uint64
+       Drop    uint64
+       Capt    uint64
+       Padding [13]uint64
+}
+
+type BpfProgram struct {
+       Len       uint32
+       Pad_cgo_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_cgo_0 [6]byte
+}
+
+type BpfTimeval struct {
+       Sec  int64
+       Usec int64
+}
+
+type Termios struct {
+       Iflag  uint32
+       Oflag  uint32
+       Cflag  uint32
+       Lflag  uint32
+       Cc     [20]uint8
+       Ispeed int32
+       Ospeed int32
+}
+
+type Sysctlnode struct {
+       Flags           uint32
+       Num             int32
+       Name            [32]int8
+       Ver             uint32
+       X__rsvd         uint32
+       Un              [16]byte
+       X_sysctl_size   [8]byte
+       X_sysctl_func   [8]byte
+       X_sysctl_parent [8]byte
+       X_sysctl_desc   [8]byte
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go
new file mode 100644 (file)
index 0000000..c0758f9
--- /dev/null
@@ -0,0 +1,401 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_netbsd.go
+
+// +build arm,netbsd
+
+package unix
+
+const (
+       sizeofPtr      = 0x4
+       sizeofShort    = 0x2
+       sizeofInt      = 0x4
+       sizeofLong     = 0x4
+       sizeofLongLong = 0x8
+)
+
+type (
+       _C_short     int16
+       _C_int       int32
+       _C_long      int32
+       _C_long_long int64
+)
+
+type Timespec struct {
+       Sec       int64
+       Nsec      int32
+       Pad_cgo_0 [4]byte
+}
+
+type Timeval struct {
+       Sec       int64
+       Usec      int32
+       Pad_cgo_0 [4]byte
+}
+
+type Rusage struct {
+       Utime    Timeval
+       Stime    Timeval
+       Maxrss   int32
+       Ixrss    int32
+       Idrss    int32
+       Isrss    int32
+       Minflt   int32
+       Majflt   int32
+       Nswap    int32
+       Inblock  int32
+       Oublock  int32
+       Msgsnd   int32
+       Msgrcv   int32
+       Nsignals int32
+       Nvcsw    int32
+       Nivcsw   int32
+}
+
+type Rlimit struct {
+       Cur uint64
+       Max uint64
+}
+
+type _Gid_t uint32
+
+type Stat_t struct {
+       Dev           uint64
+       Mode          uint32
+       Pad_cgo_0     [4]byte
+       Ino           uint64
+       Nlink         uint32
+       Uid           uint32
+       Gid           uint32
+       Pad_cgo_1     [4]byte
+       Rdev          uint64
+       Atimespec     Timespec
+       Mtimespec     Timespec
+       Ctimespec     Timespec
+       Birthtimespec Timespec
+       Size          int64
+       Blocks        int64
+       Blksize       uint32
+       Flags         uint32
+       Gen           uint32
+       Spare         [2]uint32
+       Pad_cgo_2     [4]byte
+}
+
+type Statfs_t [0]byte
+
+type Flock_t struct {
+       Start  int64
+       Len    int64
+       Pid    int32
+       Type   int16
+       Whence int16
+}
+
+type Dirent struct {
+       Fileno    uint64
+       Reclen    uint16
+       Namlen    uint16
+       Type      uint8
+       Name      [512]int8
+       Pad_cgo_0 [3]byte
+}
+
+type Fsid struct {
+       X__fsid_val [2]int32
+}
+
+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   [12]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  uint32
+}
+
+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
+       Iov        *Iovec
+       Iovlen     int32
+       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 IPv6MTUInfo struct {
+       Addr RawSockaddrInet6
+       Mtu  uint32
+}
+
+type ICMPv6Filter struct {
+       Filt [8]uint32
+}
+
+const (
+       SizeofSockaddrInet4    = 0x10
+       SizeofSockaddrInet6    = 0x1c
+       SizeofSockaddrAny      = 0x6c
+       SizeofSockaddrUnix     = 0x6a
+       SizeofSockaddrDatalink = 0x14
+       SizeofLinger           = 0x8
+       SizeofIPMreq           = 0x8
+       SizeofIPv6Mreq         = 0x14
+       SizeofMsghdr           = 0x1c
+       SizeofCmsghdr          = 0xc
+       SizeofInet6Pktinfo     = 0x14
+       SizeofIPv6MTUInfo      = 0x20
+       SizeofICMPv6Filter     = 0x20
+)
+
+const (
+       PTRACE_TRACEME = 0x0
+       PTRACE_CONT    = 0x7
+       PTRACE_KILL    = 0x8
+)
+
+type Kevent_t struct {
+       Ident     uint32
+       Filter    uint32
+       Flags     uint32
+       Fflags    uint32
+       Data      int64
+       Udata     int32
+       Pad_cgo_0 [4]byte
+}
+
+type FdSet struct {
+       Bits [8]uint32
+}
+
+const (
+       SizeofIfMsghdr         = 0x98
+       SizeofIfData           = 0x88
+       SizeofIfaMsghdr        = 0x18
+       SizeofIfAnnounceMsghdr = 0x18
+       SizeofRtMsghdr         = 0x78
+       SizeofRtMetrics        = 0x50
+)
+
+type IfMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Data      IfData
+}
+
+type IfData struct {
+       Type       uint8
+       Addrlen    uint8
+       Hdrlen     uint8
+       Pad_cgo_0  [1]byte
+       Link_state int32
+       Mtu        uint64
+       Metric     uint64
+       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 Timespec
+}
+
+type IfaMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Metric    int32
+       Index     uint16
+       Pad_cgo_0 [6]byte
+}
+
+type IfAnnounceMsghdr struct {
+       Msglen  uint16
+       Version uint8
+       Type    uint8
+       Index   uint16
+       Name    [16]int8
+       What    uint16
+}
+
+type RtMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Flags     int32
+       Addrs     int32
+       Pid       int32
+       Seq       int32
+       Errno     int32
+       Use       int32
+       Inits     int32
+       Pad_cgo_1 [4]byte
+       Rmx       RtMetrics
+}
+
+type RtMetrics struct {
+       Locks    uint64
+       Mtu      uint64
+       Hopcount uint64
+       Recvpipe uint64
+       Sendpipe uint64
+       Ssthresh uint64
+       Rtt      uint64
+       Rttvar   uint64
+       Expire   int64
+       Pksent   int64
+}
+
+type Mclpool [0]byte
+
+const (
+       SizeofBpfVersion = 0x4
+       SizeofBpfStat    = 0x80
+       SizeofBpfProgram = 0x8
+       SizeofBpfInsn    = 0x8
+       SizeofBpfHdr     = 0x14
+)
+
+type BpfVersion struct {
+       Major uint16
+       Minor uint16
+}
+
+type BpfStat struct {
+       Recv    uint64
+       Drop    uint64
+       Capt    uint64
+       Padding [13]uint64
+}
+
+type BpfProgram struct {
+       Len   uint32
+       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_cgo_0 [2]byte
+}
+
+type BpfTimeval struct {
+       Sec  int32
+       Usec int32
+}
+
+type Termios struct {
+       Iflag  uint32
+       Oflag  uint32
+       Cflag  uint32
+       Lflag  uint32
+       Cc     [20]uint8
+       Ispeed int32
+       Ospeed int32
+}
+
+type Sysctlnode struct {
+       Flags           uint32
+       Num             int32
+       Name            [32]int8
+       Ver             uint32
+       X__rsvd         uint32
+       Un              [16]byte
+       X_sysctl_size   [8]byte
+       X_sysctl_func   [8]byte
+       X_sysctl_parent [8]byte
+       X_sysctl_desc   [8]byte
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go
new file mode 100644 (file)
index 0000000..860a469
--- /dev/null
@@ -0,0 +1,441 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_openbsd.go
+
+// +build 386,openbsd
+
+package unix
+
+const (
+       sizeofPtr      = 0x4
+       sizeofShort    = 0x2
+       sizeofInt      = 0x4
+       sizeofLong     = 0x4
+       sizeofLongLong = 0x8
+)
+
+type (
+       _C_short     int16
+       _C_int       int32
+       _C_long      int32
+       _C_long_long int64
+)
+
+type Timespec struct {
+       Sec  int64
+       Nsec int32
+}
+
+type Timeval struct {
+       Sec  int64
+       Usec int32
+}
+
+type Rusage struct {
+       Utime    Timeval
+       Stime    Timeval
+       Maxrss   int32
+       Ixrss    int32
+       Idrss    int32
+       Isrss    int32
+       Minflt   int32
+       Majflt   int32
+       Nswap    int32
+       Inblock  int32
+       Oublock  int32
+       Msgsnd   int32
+       Msgrcv   int32
+       Nsignals int32
+       Nvcsw    int32
+       Nivcsw   int32
+}
+
+type Rlimit struct {
+       Cur uint64
+       Max uint64
+}
+
+type _Gid_t uint32
+
+const (
+       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
+)
+
+type Stat_t struct {
+       Mode           uint32
+       Dev            int32
+       Ino            uint64
+       Nlink          uint32
+       Uid            uint32
+       Gid            uint32
+       Rdev           int32
+       Atim           Timespec
+       Mtim           Timespec
+       Ctim           Timespec
+       Size           int64
+       Blocks         int64
+       Blksize        uint32
+       Flags          uint32
+       Gen            uint32
+       X__st_birthtim Timespec
+}
+
+type Statfs_t struct {
+       F_flags       uint32
+       F_bsize       uint32
+       F_iosize      uint32
+       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        Fsid
+       F_namemax     uint32
+       F_owner       uint32
+       F_ctime       uint64
+       F_fstypename  [16]int8
+       F_mntonname   [90]int8
+       F_mntfromname [90]int8
+       F_mntfromspec [90]int8
+       Pad_cgo_0     [2]byte
+       Mount_info    [160]byte
+}
+
+type Flock_t struct {
+       Start  int64
+       Len    int64
+       Pid    int32
+       Type   int16
+       Whence int16
+}
+
+type Dirent struct {
+       Fileno       uint64
+       Off          int64
+       Reclen       uint16
+       Type         uint8
+       Namlen       uint8
+       X__d_padding [4]uint8
+       Name         [256]int8
+}
+
+type Fsid struct {
+       Val [2]int32
+}
+
+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  uint32
+}
+
+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
+       Iov        *Iovec
+       Iovlen     uint32
+       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 IPv6MTUInfo struct {
+       Addr RawSockaddrInet6
+       Mtu  uint32
+}
+
+type ICMPv6Filter struct {
+       Filt [8]uint32
+}
+
+const (
+       SizeofSockaddrInet4    = 0x10
+       SizeofSockaddrInet6    = 0x1c
+       SizeofSockaddrAny      = 0x6c
+       SizeofSockaddrUnix     = 0x6a
+       SizeofSockaddrDatalink = 0x20
+       SizeofLinger           = 0x8
+       SizeofIPMreq           = 0x8
+       SizeofIPv6Mreq         = 0x14
+       SizeofMsghdr           = 0x1c
+       SizeofCmsghdr          = 0xc
+       SizeofInet6Pktinfo     = 0x14
+       SizeofIPv6MTUInfo      = 0x20
+       SizeofICMPv6Filter     = 0x20
+)
+
+const (
+       PTRACE_TRACEME = 0x0
+       PTRACE_CONT    = 0x7
+       PTRACE_KILL    = 0x8
+)
+
+type Kevent_t struct {
+       Ident  uint32
+       Filter int16
+       Flags  uint16
+       Fflags uint32
+       Data   int64
+       Udata  *byte
+}
+
+type FdSet struct {
+       Bits [32]uint32
+}
+
+const (
+       SizeofIfMsghdr         = 0xec
+       SizeofIfData           = 0xd4
+       SizeofIfaMsghdr        = 0x18
+       SizeofIfAnnounceMsghdr = 0x1a
+       SizeofRtMsghdr         = 0x60
+       SizeofRtMetrics        = 0x38
+)
+
+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
+       Capabilities uint32
+       Lastchange   Timeval
+       Mclpool      [7]Mclpool
+}
+
+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 IfAnnounceMsghdr struct {
+       Msglen  uint16
+       Version uint8
+       Type    uint8
+       Hdrlen  uint16
+       Index   uint16
+       What    uint16
+       Name    [16]int8
+}
+
+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
+       Expire   int64
+       Locks    uint32
+       Mtu      uint32
+       Refcnt   uint32
+       Hopcount uint32
+       Recvpipe uint32
+       Sendpipe uint32
+       Ssthresh uint32
+       Rtt      uint32
+       Rttvar   uint32
+       Pad      uint32
+}
+
+type Mclpool struct {
+       Grown int32
+       Alive uint16
+       Hwm   uint16
+       Cwm   uint16
+       Lwm   uint16
+}
+
+const (
+       SizeofBpfVersion = 0x4
+       SizeofBpfStat    = 0x8
+       SizeofBpfProgram = 0x8
+       SizeofBpfInsn    = 0x8
+       SizeofBpfHdr     = 0x14
+)
+
+type BpfVersion struct {
+       Major uint16
+       Minor uint16
+}
+
+type BpfStat struct {
+       Recv uint32
+       Drop uint32
+}
+
+type BpfProgram struct {
+       Len   uint32
+       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_cgo_0 [2]byte
+}
+
+type BpfTimeval struct {
+       Sec  uint32
+       Usec uint32
+}
+
+type Termios struct {
+       Iflag  uint32
+       Oflag  uint32
+       Cflag  uint32
+       Lflag  uint32
+       Cc     [20]uint8
+       Ispeed int32
+       Ospeed int32
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go
new file mode 100644 (file)
index 0000000..23c5272
--- /dev/null
@@ -0,0 +1,448 @@
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_openbsd.go
+
+// +build amd64,openbsd
+
+package unix
+
+const (
+       sizeofPtr      = 0x8
+       sizeofShort    = 0x2
+       sizeofInt      = 0x4
+       sizeofLong     = 0x8
+       sizeofLongLong = 0x8
+)
+
+type (
+       _C_short     int16
+       _C_int       int32
+       _C_long      int64
+       _C_long_long int64
+)
+
+type Timespec struct {
+       Sec  int64
+       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
+
+const (
+       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
+)
+
+type Stat_t struct {
+       Mode           uint32
+       Dev            int32
+       Ino            uint64
+       Nlink          uint32
+       Uid            uint32
+       Gid            uint32
+       Rdev           int32
+       Atim           Timespec
+       Mtim           Timespec
+       Ctim           Timespec
+       Size           int64
+       Blocks         int64
+       Blksize        uint32
+       Flags          uint32
+       Gen            uint32
+       Pad_cgo_0      [4]byte
+       X__st_birthtim Timespec
+}
+
+type Statfs_t struct {
+       F_flags       uint32
+       F_bsize       uint32
+       F_iosize      uint32
+       Pad_cgo_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        Fsid
+       F_namemax     uint32
+       F_owner       uint32
+       F_ctime       uint64
+       F_fstypename  [16]int8
+       F_mntonname   [90]int8
+       F_mntfromname [90]int8
+       F_mntfromspec [90]int8
+       Pad_cgo_1     [2]byte
+       Mount_info    [160]byte
+}
+
+type Flock_t struct {
+       Start  int64
+       Len    int64
+       Pid    int32
+       Type   int16
+       Whence int16
+}
+
+type Dirent struct {
+       Fileno       uint64
+       Off          int64
+       Reclen       uint16
+       Type         uint8
+       Namlen       uint8
+       X__d_padding [4]uint8
+       Name         [256]int8
+}
+
+type Fsid struct {
+       Val [2]int32
+}
+
+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_cgo_0  [4]byte
+       Iov        *Iovec
+       Iovlen     uint32
+       Pad_cgo_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 IPv6MTUInfo struct {
+       Addr RawSockaddrInet6
+       Mtu  uint32
+}
+
+type ICMPv6Filter struct {
+       Filt [8]uint32
+}
+
+const (
+       SizeofSockaddrInet4    = 0x10
+       SizeofSockaddrInet6    = 0x1c
+       SizeofSockaddrAny      = 0x6c
+       SizeofSockaddrUnix     = 0x6a
+       SizeofSockaddrDatalink = 0x20
+       SizeofLinger           = 0x8
+       SizeofIPMreq           = 0x8
+       SizeofIPv6Mreq         = 0x14
+       SizeofMsghdr           = 0x30
+       SizeofCmsghdr          = 0xc
+       SizeofInet6Pktinfo     = 0x14
+       SizeofIPv6MTUInfo      = 0x20
+       SizeofICMPv6Filter     = 0x20
+)
+
+const (
+       PTRACE_TRACEME = 0x0
+       PTRACE_CONT    = 0x7
+       PTRACE_KILL    = 0x8
+)
+
+type Kevent_t struct {
+       Ident  uint64
+       Filter int16
+       Flags  uint16
+       Fflags uint32
+       Data   int64
+       Udata  *byte
+}
+
+type FdSet struct {
+       Bits [32]uint32
+}
+
+const (
+       SizeofIfMsghdr         = 0xf8
+       SizeofIfData           = 0xe0
+       SizeofIfaMsghdr        = 0x18
+       SizeofIfAnnounceMsghdr = 0x1a
+       SizeofRtMsghdr         = 0x60
+       SizeofRtMetrics        = 0x38
+)
+
+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
+       Capabilities uint32
+       Pad_cgo_0    [4]byte
+       Lastchange   Timeval
+       Mclpool      [7]Mclpool
+       Pad_cgo_1    [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 IfAnnounceMsghdr struct {
+       Msglen  uint16
+       Version uint8
+       Type    uint8
+       Hdrlen  uint16
+       Index   uint16
+       What    uint16
+       Name    [16]int8
+}
+
+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
+       Expire   int64
+       Locks    uint32
+       Mtu      uint32
+       Refcnt   uint32
+       Hopcount uint32
+       Recvpipe uint32
+       Sendpipe uint32
+       Ssthresh uint32
+       Rtt      uint32
+       Rttvar   uint32
+       Pad      uint32
+}
+
+type Mclpool struct {
+       Grown int32
+       Alive uint16
+       Hwm   uint16
+       Cwm   uint16
+       Lwm   uint16
+}
+
+const (
+       SizeofBpfVersion = 0x4
+       SizeofBpfStat    = 0x8
+       SizeofBpfProgram = 0x10
+       SizeofBpfInsn    = 0x8
+       SizeofBpfHdr     = 0x14
+)
+
+type BpfVersion struct {
+       Major uint16
+       Minor uint16
+}
+
+type BpfStat struct {
+       Recv uint32
+       Drop uint32
+}
+
+type BpfProgram struct {
+       Len       uint32
+       Pad_cgo_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_cgo_0 [2]byte
+}
+
+type BpfTimeval struct {
+       Sec  uint32
+       Usec uint32
+}
+
+type Termios struct {
+       Iflag  uint32
+       Oflag  uint32
+       Cflag  uint32
+       Lflag  uint32
+       Cc     [20]uint8
+       Ispeed int32
+       Ospeed int32
+}
diff --git a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go
new file mode 100644 (file)
index 0000000..b3b928a
--- /dev/null
@@ -0,0 +1,422 @@
+// +build amd64,solaris
+// Created by cgo -godefs - DO NOT EDIT
+// cgo -godefs types_solaris.go
+
+package unix
+
+const (
+       sizeofPtr      = 0x8
+       sizeofShort    = 0x2
+       sizeofInt      = 0x4
+       sizeofLong     = 0x8
+       sizeofLongLong = 0x8
+       PathMax        = 0x400
+)
+
+type (
+       _C_short     int16
+       _C_int       int32
+       _C_long      int64
+       _C_long_long int64
+)
+
+type Timespec struct {
+       Sec  int64
+       Nsec int64
+}
+
+type Timeval struct {
+       Sec  int64
+       Usec int64
+}
+
+type Timeval32 struct {
+       Sec  int32
+       Usec int32
+}
+
+type Tms struct {
+       Utime  int64
+       Stime  int64
+       Cutime int64
+       Cstime int64
+}
+
+type Utimbuf struct {
+       Actime  int64
+       Modtime 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
+
+const (
+       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
+)
+
+type Stat_t struct {
+       Dev       uint64
+       Ino       uint64
+       Mode      uint32
+       Nlink     uint32
+       Uid       uint32
+       Gid       uint32
+       Rdev      uint64
+       Size      int64
+       Atim      Timespec
+       Mtim      Timespec
+       Ctim      Timespec
+       Blksize   int32
+       Pad_cgo_0 [4]byte
+       Blocks    int64
+       Fstype    [16]int8
+}
+
+type Flock_t struct {
+       Type      int16
+       Whence    int16
+       Pad_cgo_0 [4]byte
+       Start     int64
+       Len       int64
+       Sysid     int32
+       Pid       int32
+       Pad       [4]int64
+}
+
+type Dirent struct {
+       Ino       uint64
+       Off       int64
+       Reclen    uint16
+       Name      [1]int8
+       Pad_cgo_0 [5]byte
+}
+
+type RawSockaddrInet4 struct {
+       Family uint16
+       Port   uint16
+       Addr   [4]byte /* in_addr */
+       Zero   [8]int8
+}
+
+type RawSockaddrInet6 struct {
+       Family         uint16
+       Port           uint16
+       Flowinfo       uint32
+       Addr           [16]byte /* in6_addr */
+       Scope_id       uint32
+       X__sin6_src_id uint32
+}
+
+type RawSockaddrUnix struct {
+       Family uint16
+       Path   [108]int8
+}
+
+type RawSockaddrDatalink struct {
+       Family uint16
+       Index  uint16
+       Type   uint8
+       Nlen   uint8
+       Alen   uint8
+       Slen   uint8
+       Data   [244]int8
+}
+
+type RawSockaddr struct {
+       Family uint16
+       Data   [14]int8
+}
+
+type RawSockaddrAny struct {
+       Addr RawSockaddr
+       Pad  [236]int8
+}
+
+type _Socklen uint32
+
+type Linger struct {
+       Onoff  int32
+       Linger int32
+}
+
+type Iovec struct {
+       Base *int8
+       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_cgo_0    [4]byte
+       Iov          *Iovec
+       Iovlen       int32
+       Pad_cgo_1    [4]byte
+       Accrights    *int8
+       Accrightslen int32
+       Pad_cgo_2    [4]byte
+}
+
+type Cmsghdr struct {
+       Len   uint32
+       Level int32
+       Type  int32
+}
+
+type Inet6Pktinfo struct {
+       Addr    [16]byte /* in6_addr */
+       Ifindex uint32
+}
+
+type IPv6MTUInfo struct {
+       Addr RawSockaddrInet6
+       Mtu  uint32
+}
+
+type ICMPv6Filter struct {
+       X__icmp6_filt [8]uint32
+}
+
+const (
+       SizeofSockaddrInet4    = 0x10
+       SizeofSockaddrInet6    = 0x20
+       SizeofSockaddrAny      = 0xfc
+       SizeofSockaddrUnix     = 0x6e
+       SizeofSockaddrDatalink = 0xfc
+       SizeofLinger           = 0x8
+       SizeofIPMreq           = 0x8
+       SizeofIPv6Mreq         = 0x14
+       SizeofMsghdr           = 0x30
+       SizeofCmsghdr          = 0xc
+       SizeofInet6Pktinfo     = 0x14
+       SizeofIPv6MTUInfo      = 0x24
+       SizeofICMPv6Filter     = 0x20
+)
+
+type FdSet struct {
+       Bits [1024]int64
+}
+
+type Utsname struct {
+       Sysname  [257]int8
+       Nodename [257]int8
+       Release  [257]int8
+       Version  [257]int8
+       Machine  [257]int8
+}
+
+type Ustat_t struct {
+       Tfree     int64
+       Tinode    uint64
+       Fname     [6]int8
+       Fpack     [6]int8
+       Pad_cgo_0 [4]byte
+}
+
+const (
+       AT_FDCWD            = 0xffd19553
+       AT_SYMLINK_NOFOLLOW = 0x1000
+       AT_SYMLINK_FOLLOW   = 0x2000
+       AT_REMOVEDIR        = 0x1
+       AT_EACCESS          = 0x4
+)
+
+const (
+       SizeofIfMsghdr  = 0x54
+       SizeofIfData    = 0x44
+       SizeofIfaMsghdr = 0x14
+       SizeofRtMsghdr  = 0x4c
+       SizeofRtMetrics = 0x28
+)
+
+type IfMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Data      IfData
+}
+
+type IfData struct {
+       Type       uint8
+       Addrlen    uint8
+       Hdrlen     uint8
+       Pad_cgo_0  [1]byte
+       Mtu        uint32
+       Metric     uint32
+       Baudrate   uint32
+       Ipackets   uint32
+       Ierrors    uint32
+       Opackets   uint32
+       Oerrors    uint32
+       Collisions uint32
+       Ibytes     uint32
+       Obytes     uint32
+       Imcasts    uint32
+       Omcasts    uint32
+       Iqdrops    uint32
+       Noproto    uint32
+       Lastchange Timeval32
+}
+
+type IfaMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Addrs     int32
+       Flags     int32
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Metric    int32
+}
+
+type RtMsghdr struct {
+       Msglen    uint16
+       Version   uint8
+       Type      uint8
+       Index     uint16
+       Pad_cgo_0 [2]byte
+       Flags     int32
+       Addrs     int32
+       Pid       int32
+       Seq       int32
+       Errno     int32
+       Use       int32
+       Inits     uint32
+       Rmx       RtMetrics
+}
+
+type RtMetrics struct {
+       Locks    uint32
+       Mtu      uint32
+       Hopcount uint32
+       Expire   uint32
+       Recvpipe uint32
+       Sendpipe uint32
+       Ssthresh uint32
+       Rtt      uint32
+       Rttvar   uint32
+       Pksent   uint32
+}
+
+const (
+       SizeofBpfVersion = 0x4
+       SizeofBpfStat    = 0x80
+       SizeofBpfProgram = 0x10
+       SizeofBpfInsn    = 0x8
+       SizeofBpfHdr     = 0x14
+)
+
+type BpfVersion struct {
+       Major uint16
+       Minor uint16
+}
+
+type BpfStat struct {
+       Recv    uint64
+       Drop    uint64
+       Capt    uint64
+       Padding [13]uint64
+}
+
+type BpfProgram struct {
+       Len       uint32
+       Pad_cgo_0 [4]byte
+       Insns     *BpfInsn
+}
+
+type BpfInsn struct {
+       Code uint16
+       Jt   uint8
+       Jf   uint8
+       K    uint32
+}
+
+type BpfTimeval struct {
+       Sec  int32
+       Usec int32
+}
+
+type BpfHdr struct {
+       Tstamp    BpfTimeval
+       Caplen    uint32
+       Datalen   uint32
+       Hdrlen    uint16
+       Pad_cgo_0 [2]byte
+}
+
+const _SC_PAGESIZE = 0xb
+
+type Termios struct {
+       Iflag     uint32
+       Oflag     uint32
+       Cflag     uint32
+       Lflag     uint32
+       Cc        [19]uint8
+       Pad_cgo_0 [1]byte
+}
+
+type Termio struct {
+       Iflag     uint16
+       Oflag     uint16
+       Cflag     uint16
+       Lflag     uint16
+       Line      int8
+       Cc        [8]uint8
+       Pad_cgo_0 [1]byte
+}
+
+type Winsize struct {
+       Row    uint16
+       Col    uint16
+       Xpixel uint16
+       Ypixel uint16
+}
diff --git a/vendor/gopkg.in/yaml.v2/LICENSE b/vendor/gopkg.in/yaml.v2/LICENSE
new file mode 100644 (file)
index 0000000..a68e67f
--- /dev/null
@@ -0,0 +1,188 @@
+
+Copyright (c) 2011-2014 - Canonical Inc.
+
+This software is licensed under the LGPLv3, included below.
+
+As a special exception to the GNU Lesser General Public License version 3
+("LGPL3"), the copyright holders of this Library give you permission to
+convey to a third party a Combined Work that links statically or dynamically
+to this Library without providing any Minimal Corresponding Source or
+Minimal Application Code as set out in 4d or providing the installation
+information set out in section 4e, provided that you comply with the other
+provisions of LGPL3 and provided that you meet, for the Application the
+terms and conditions of the license(s) which apply to the Application.
+
+Except as stated in this special exception, the provisions of LGPL3 will
+continue to comply in full to this Library. If you modify this Library, you
+may apply this exception to your version of this Library, but you are not
+obliged to do so. If you do not wish to do so, delete this exception
+statement from your version. This exception does not (and cannot) modify any
+license terms which apply to the Application, with which you must still
+comply.
+
+
+                   GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+  This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+  0. Additional Definitions.
+
+  As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+  "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+  An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+  A "Combined Work" is a work produced by combining or linking an
+Application with the Library.  The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+  The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+  The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+  1. Exception to Section 3 of the GNU GPL.
+
+  You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+  2. Conveying Modified Versions.
+
+  If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+   a) under this License, provided that you make a good faith effort to
+   ensure that, in the event an Application does not supply the
+   function or data, the facility still operates, and performs
+   whatever part of its purpose remains meaningful, or
+
+   b) under the GNU GPL, with none of the additional permissions of
+   this License applicable to that copy.
+
+  3. Object Code Incorporating Material from Library Header Files.
+
+  The object code form of an Application may incorporate material from
+a header file that is part of the Library.  You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+   a) Give prominent notice with each copy of the object code that the
+   Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the object code with a copy of the GNU GPL and this license
+   document.
+
+  4. Combined Works.
+
+  You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+   a) Give prominent notice with each copy of the Combined Work that
+   the Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the Combined Work with a copy of the GNU GPL and this license
+   document.
+
+   c) For a Combined Work that displays copyright notices during
+   execution, include the copyright notice for the Library among
+   these notices, as well as a reference directing the user to the
+   copies of the GNU GPL and this license document.
+
+   d) Do one of the following:
+
+       0) Convey the Minimal Corresponding Source under the terms of this
+       License, and the Corresponding Application Code in a form
+       suitable for, and under terms that permit, the user to
+       recombine or relink the Application with a modified version of
+       the Linked Version to produce a modified Combined Work, in the
+       manner specified by section 6 of the GNU GPL for conveying
+       Corresponding Source.
+
+       1) Use a suitable shared library mechanism for linking with the
+       Library.  A suitable mechanism is one that (a) uses at run time
+       a copy of the Library already present on the user's computer
+       system, and (b) will operate properly with a modified version
+       of the Library that is interface-compatible with the Linked
+       Version.
+
+   e) Provide Installation Information, but only if you would otherwise
+   be required to provide such information under section 6 of the
+   GNU GPL, and only to the extent that such information is
+   necessary to install and execute a modified version of the
+   Combined Work produced by recombining or relinking the
+   Application with a modified version of the Linked Version. (If
+   you use option 4d0, the Installation Information must accompany
+   the Minimal Corresponding Source and Corresponding Application
+   Code. If you use option 4d1, you must provide the Installation
+   Information in the manner specified by section 6 of the GNU GPL
+   for conveying Corresponding Source.)
+
+  5. Combined Libraries.
+
+  You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+   a) Accompany the combined library with a copy of the same work based
+   on the Library, uncombined with any other library facilities,
+   conveyed under the terms of this License.
+
+   b) Give prominent notice with the combined library that part of it
+   is a work based on the Library, and explaining where to find the
+   accompanying uncombined form of the same work.
+
+  6. Revised Versions of the GNU Lesser General Public License.
+
+  The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+  Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+  If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/vendor/gopkg.in/yaml.v2/LICENSE.libyaml b/vendor/gopkg.in/yaml.v2/LICENSE.libyaml
new file mode 100644 (file)
index 0000000..8da58fb
--- /dev/null
@@ -0,0 +1,31 @@
+The following files were ported to Go from C files of libyaml, and thus
+are still covered by their original copyright and license:
+
+    apic.go
+    emitterc.go
+    parserc.go
+    readerc.go
+    scannerc.go
+    writerc.go
+    yamlh.go
+    yamlprivateh.go
+
+Copyright (c) 2006 Kirill Simonov
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/vendor/gopkg.in/yaml.v2/README.md b/vendor/gopkg.in/yaml.v2/README.md
new file mode 100644 (file)
index 0000000..7b8bd86
--- /dev/null
@@ -0,0 +1,131 @@
+# YAML support for the Go language
+
+Introduction
+------------
+
+The yaml package enables Go programs to comfortably encode and decode YAML
+values. It was developed within [Canonical](https://www.canonical.com) as
+part of the [juju](https://juju.ubuntu.com) project, and is based on a
+pure Go port of the well-known [libyaml](http://pyyaml.org/wiki/LibYAML)
+C library to parse and generate YAML data quickly and reliably.
+
+Compatibility
+-------------
+
+The yaml package supports most of YAML 1.1 and 1.2, including support for
+anchors, tags, map merging, etc. Multi-document unmarshalling is not yet
+implemented, and base-60 floats from YAML 1.1 are purposefully not
+supported since they're a poor design and are gone in YAML 1.2.
+
+Installation and usage
+----------------------
+
+The import path for the package is *gopkg.in/yaml.v2*.
+
+To install it, run:
+
+    go get gopkg.in/yaml.v2
+
+API documentation
+-----------------
+
+If opened in a browser, the import path itself leads to the API documentation:
+
+  * [https://gopkg.in/yaml.v2](https://gopkg.in/yaml.v2)
+
+API stability
+-------------
+
+The package API for yaml v2 will remain stable as described in [gopkg.in](https://gopkg.in).
+
+
+License
+-------
+
+The yaml package is licensed under the LGPL with an exception that allows it to be linked statically. Please see the LICENSE file for details.
+
+
+Example
+-------
+
+```Go
+package main
+
+import (
+        "fmt"
+        "log"
+
+        "gopkg.in/yaml.v2"
+)
+
+var data = `
+a: Easy!
+b:
+  c: 2
+  d: [3, 4]
+`
+
+type T struct {
+        A string
+        B struct {
+                RenamedC int   `yaml:"c"`
+                D        []int `yaml:",flow"`
+        }
+}
+
+func main() {
+        t := T{}
+    
+        err := yaml.Unmarshal([]byte(data), &t)
+        if err != nil {
+                log.Fatalf("error: %v", err)
+        }
+        fmt.Printf("--- t:\n%v\n\n", t)
+    
+        d, err := yaml.Marshal(&t)
+        if err != nil {
+                log.Fatalf("error: %v", err)
+        }
+        fmt.Printf("--- t dump:\n%s\n\n", string(d))
+    
+        m := make(map[interface{}]interface{})
+    
+        err = yaml.Unmarshal([]byte(data), &m)
+        if err != nil {
+                log.Fatalf("error: %v", err)
+        }
+        fmt.Printf("--- m:\n%v\n\n", m)
+    
+        d, err = yaml.Marshal(&m)
+        if err != nil {
+                log.Fatalf("error: %v", err)
+        }
+        fmt.Printf("--- m dump:\n%s\n\n", string(d))
+}
+```
+
+This example will generate the following output:
+
+```
+--- t:
+{Easy! {2 [3 4]}}
+
+--- t dump:
+a: Easy!
+b:
+  c: 2
+  d: [3, 4]
+
+
+--- m:
+map[a:Easy! b:map[c:2 d:[3 4]]]
+
+--- m dump:
+a: Easy!
+b:
+  c: 2
+  d:
+  - 3
+  - 4
+```
+
diff --git a/vendor/gopkg.in/yaml.v2/apic.go b/vendor/gopkg.in/yaml.v2/apic.go
new file mode 100644 (file)
index 0000000..95ec014
--- /dev/null
@@ -0,0 +1,742 @@
+package yaml
+
+import (
+       "io"
+       "os"
+)
+
+func yaml_insert_token(parser *yaml_parser_t, pos int, token *yaml_token_t) {
+       //fmt.Println("yaml_insert_token", "pos:", pos, "typ:", token.typ, "head:", parser.tokens_head, "len:", len(parser.tokens))
+
+       // Check if we can move the queue at the beginning of the buffer.
+       if parser.tokens_head > 0 && len(parser.tokens) == cap(parser.tokens) {
+               if parser.tokens_head != len(parser.tokens) {
+                       copy(parser.tokens, parser.tokens[parser.tokens_head:])
+               }
+               parser.tokens = parser.tokens[:len(parser.tokens)-parser.tokens_head]
+               parser.tokens_head = 0
+       }
+       parser.tokens = append(parser.tokens, *token)
+       if pos < 0 {
+               return
+       }
+       copy(parser.tokens[parser.tokens_head+pos+1:], parser.tokens[parser.tokens_head+pos:])
+       parser.tokens[parser.tokens_head+pos] = *token
+}
+
+// Create a new parser object.
+func yaml_parser_initialize(parser *yaml_parser_t) bool {
+       *parser = yaml_parser_t{
+               raw_buffer: make([]byte, 0, input_raw_buffer_size),
+               buffer:     make([]byte, 0, input_buffer_size),
+       }
+       return true
+}
+
+// Destroy a parser object.
+func yaml_parser_delete(parser *yaml_parser_t) {
+       *parser = yaml_parser_t{}
+}
+
+// String read handler.
+func yaml_string_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) {
+       if parser.input_pos == len(parser.input) {
+               return 0, io.EOF
+       }
+       n = copy(buffer, parser.input[parser.input_pos:])
+       parser.input_pos += n
+       return n, nil
+}
+
+// File read handler.
+func yaml_file_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) {
+       return parser.input_file.Read(buffer)
+}
+
+// Set a string input.
+func yaml_parser_set_input_string(parser *yaml_parser_t, input []byte) {
+       if parser.read_handler != nil {
+               panic("must set the input source only once")
+       }
+       parser.read_handler = yaml_string_read_handler
+       parser.input = input
+       parser.input_pos = 0
+}
+
+// Set a file input.
+func yaml_parser_set_input_file(parser *yaml_parser_t, file *os.File) {
+       if parser.read_handler != nil {
+               panic("must set the input source only once")
+       }
+       parser.read_handler = yaml_file_read_handler
+       parser.input_file = file
+}
+
+// Set the source encoding.
+func yaml_parser_set_encoding(parser *yaml_parser_t, encoding yaml_encoding_t) {
+       if parser.encoding != yaml_ANY_ENCODING {
+               panic("must set the encoding only once")
+       }
+       parser.encoding = encoding
+}
+
+// Create a new emitter object.
+func yaml_emitter_initialize(emitter *yaml_emitter_t) bool {
+       *emitter = yaml_emitter_t{
+               buffer:     make([]byte, output_buffer_size),
+               raw_buffer: make([]byte, 0, output_raw_buffer_size),
+               states:     make([]yaml_emitter_state_t, 0, initial_stack_size),
+               events:     make([]yaml_event_t, 0, initial_queue_size),
+       }
+       return true
+}
+
+// Destroy an emitter object.
+func yaml_emitter_delete(emitter *yaml_emitter_t) {
+       *emitter = yaml_emitter_t{}
+}
+
+// String write handler.
+func yaml_string_write_handler(emitter *yaml_emitter_t, buffer []byte) error {
+       *emitter.output_buffer = append(*emitter.output_buffer, buffer...)
+       return nil
+}
+
+// File write handler.
+func yaml_file_write_handler(emitter *yaml_emitter_t, buffer []byte) error {
+       _, err := emitter.output_file.Write(buffer)
+       return err
+}
+
+// Set a string output.
+func yaml_emitter_set_output_string(emitter *yaml_emitter_t, output_buffer *[]byte) {
+       if emitter.write_handler != nil {
+               panic("must set the output target only once")
+       }
+       emitter.write_handler = yaml_string_write_handler
+       emitter.output_buffer = output_buffer
+}
+
+// Set a file output.
+func yaml_emitter_set_output_file(emitter *yaml_emitter_t, file io.Writer) {
+       if emitter.write_handler != nil {
+               panic("must set the output target only once")
+       }
+       emitter.write_handler = yaml_file_write_handler
+       emitter.output_file = file
+}
+
+// Set the output encoding.
+func yaml_emitter_set_encoding(emitter *yaml_emitter_t, encoding yaml_encoding_t) {
+       if emitter.encoding != yaml_ANY_ENCODING {
+               panic("must set the output encoding only once")
+       }
+       emitter.encoding = encoding
+}
+
+// Set the canonical output style.
+func yaml_emitter_set_canonical(emitter *yaml_emitter_t, canonical bool) {
+       emitter.canonical = canonical
+}
+
+//// Set the indentation increment.
+func yaml_emitter_set_indent(emitter *yaml_emitter_t, indent int) {
+       if indent < 2 || indent > 9 {
+               indent = 2
+       }
+       emitter.best_indent = indent
+}
+
+// Set the preferred line width.
+func yaml_emitter_set_width(emitter *yaml_emitter_t, width int) {
+       if width < 0 {
+               width = -1
+       }
+       emitter.best_width = width
+}
+
+// Set if unescaped non-ASCII characters are allowed.
+func yaml_emitter_set_unicode(emitter *yaml_emitter_t, unicode bool) {
+       emitter.unicode = unicode
+}
+
+// Set the preferred line break character.
+func yaml_emitter_set_break(emitter *yaml_emitter_t, line_break yaml_break_t) {
+       emitter.line_break = line_break
+}
+
+///*
+// * Destroy a token object.
+// */
+//
+//YAML_DECLARE(void)
+//yaml_token_delete(yaml_token_t *token)
+//{
+//    assert(token);  // Non-NULL token object expected.
+//
+//    switch (token.type)
+//    {
+//        case YAML_TAG_DIRECTIVE_TOKEN:
+//            yaml_free(token.data.tag_directive.handle);
+//            yaml_free(token.data.tag_directive.prefix);
+//            break;
+//
+//        case YAML_ALIAS_TOKEN:
+//            yaml_free(token.data.alias.value);
+//            break;
+//
+//        case YAML_ANCHOR_TOKEN:
+//            yaml_free(token.data.anchor.value);
+//            break;
+//
+//        case YAML_TAG_TOKEN:
+//            yaml_free(token.data.tag.handle);
+//            yaml_free(token.data.tag.suffix);
+//            break;
+//
+//        case YAML_SCALAR_TOKEN:
+//            yaml_free(token.data.scalar.value);
+//            break;
+//
+//        default:
+//            break;
+//    }
+//
+//    memset(token, 0, sizeof(yaml_token_t));
+//}
+//
+///*
+// * Check if a string is a valid UTF-8 sequence.
+// *
+// * Check 'reader.c' for more details on UTF-8 encoding.
+// */
+//
+//static int
+//yaml_check_utf8(yaml_char_t *start, size_t length)
+//{
+//    yaml_char_t *end = start+length;
+//    yaml_char_t *pointer = start;
+//
+//    while (pointer < end) {
+//        unsigned char octet;
+//        unsigned int width;
+//        unsigned int value;
+//        size_t k;
+//
+//        octet = pointer[0];
+//        width = (octet & 0x80) == 0x00 ? 1 :
+//                (octet & 0xE0) == 0xC0 ? 2 :
+//                (octet & 0xF0) == 0xE0 ? 3 :
+//                (octet & 0xF8) == 0xF0 ? 4 : 0;
+//        value = (octet & 0x80) == 0x00 ? octet & 0x7F :
+//                (octet & 0xE0) == 0xC0 ? octet & 0x1F :
+//                (octet & 0xF0) == 0xE0 ? octet & 0x0F :
+//                (octet & 0xF8) == 0xF0 ? octet & 0x07 : 0;
+//        if (!width) return 0;
+//        if (pointer+width > end) return 0;
+//        for (k = 1; k < width; k ++) {
+//            octet = pointer[k];
+//            if ((octet & 0xC0) != 0x80) return 0;
+//            value = (value << 6) + (octet & 0x3F);
+//        }
+//        if (!((width == 1) ||
+//            (width == 2 && value >= 0x80) ||
+//            (width == 3 && value >= 0x800) ||
+//            (width == 4 && value >= 0x10000))) return 0;
+//
+//        pointer += width;
+//    }
+//
+//    return 1;
+//}
+//
+
+// Create STREAM-START.
+func yaml_stream_start_event_initialize(event *yaml_event_t, encoding yaml_encoding_t) bool {
+       *event = yaml_event_t{
+               typ:      yaml_STREAM_START_EVENT,
+               encoding: encoding,
+       }
+       return true
+}
+
+// Create STREAM-END.
+func yaml_stream_end_event_initialize(event *yaml_event_t) bool {
+       *event = yaml_event_t{
+               typ: yaml_STREAM_END_EVENT,
+       }
+       return true
+}
+
+// Create DOCUMENT-START.
+func yaml_document_start_event_initialize(event *yaml_event_t, version_directive *yaml_version_directive_t,
+       tag_directives []yaml_tag_directive_t, implicit bool) bool {
+       *event = yaml_event_t{
+               typ:               yaml_DOCUMENT_START_EVENT,
+               version_directive: version_directive,
+               tag_directives:    tag_directives,
+               implicit:          implicit,
+       }
+       return true
+}
+
+// Create DOCUMENT-END.
+func yaml_document_end_event_initialize(event *yaml_event_t, implicit bool) bool {
+       *event = yaml_event_t{
+               typ:      yaml_DOCUMENT_END_EVENT,
+               implicit: implicit,
+       }
+       return true
+}
+
+///*
+// * Create ALIAS.
+// */
+//
+//YAML_DECLARE(int)
+//yaml_alias_event_initialize(event *yaml_event_t, anchor *yaml_char_t)
+//{
+//    mark yaml_mark_t = { 0, 0, 0 }
+//    anchor_copy *yaml_char_t = NULL
+//
+//    assert(event) // Non-NULL event object is expected.
+//    assert(anchor) // Non-NULL anchor is expected.
+//
+//    if (!yaml_check_utf8(anchor, strlen((char *)anchor))) return 0
+//
+//    anchor_copy = yaml_strdup(anchor)
+//    if (!anchor_copy)
+//        return 0
+//
+//    ALIAS_EVENT_INIT(*event, anchor_copy, mark, mark)
+//
+//    return 1
+//}
+
+// Create SCALAR.
+func yaml_scalar_event_initialize(event *yaml_event_t, anchor, tag, value []byte, plain_implicit, quoted_implicit bool, style yaml_scalar_style_t) bool {
+       *event = yaml_event_t{
+               typ:             yaml_SCALAR_EVENT,
+               anchor:          anchor,
+               tag:             tag,
+               value:           value,
+               implicit:        plain_implicit,
+               quoted_implicit: quoted_implicit,
+               style:           yaml_style_t(style),
+       }
+       return true
+}
+
+// Create SEQUENCE-START.
+func yaml_sequence_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_sequence_style_t) bool {
+       *event = yaml_event_t{
+               typ:      yaml_SEQUENCE_START_EVENT,
+               anchor:   anchor,
+               tag:      tag,
+               implicit: implicit,
+               style:    yaml_style_t(style),
+       }
+       return true
+}
+
+// Create SEQUENCE-END.
+func yaml_sequence_end_event_initialize(event *yaml_event_t) bool {
+       *event = yaml_event_t{
+               typ: yaml_SEQUENCE_END_EVENT,
+       }
+       return true
+}
+
+// Create MAPPING-START.
+func yaml_mapping_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_mapping_style_t) bool {
+       *event = yaml_event_t{
+               typ:      yaml_MAPPING_START_EVENT,
+               anchor:   anchor,
+               tag:      tag,
+               implicit: implicit,
+               style:    yaml_style_t(style),
+       }
+       return true
+}
+
+// Create MAPPING-END.
+func yaml_mapping_end_event_initialize(event *yaml_event_t) bool {
+       *event = yaml_event_t{
+               typ: yaml_MAPPING_END_EVENT,
+       }
+       return true
+}
+
+// Destroy an event object.
+func yaml_event_delete(event *yaml_event_t) {
+       *event = yaml_event_t{}
+}
+
+///*
+// * Create a document object.
+// */
+//
+//YAML_DECLARE(int)
+//yaml_document_initialize(document *yaml_document_t,
+//        version_directive *yaml_version_directive_t,
+//        tag_directives_start *yaml_tag_directive_t,
+//        tag_directives_end *yaml_tag_directive_t,
+//        start_implicit int, end_implicit int)
+//{
+//    struct {
+//        error yaml_error_type_t
+//    } context
+//    struct {
+//        start *yaml_node_t
+//        end *yaml_node_t
+//        top *yaml_node_t
+//    } nodes = { NULL, NULL, NULL }
+//    version_directive_copy *yaml_version_directive_t = NULL
+//    struct {
+//        start *yaml_tag_directive_t
+//        end *yaml_tag_directive_t
+//        top *yaml_tag_directive_t
+//    } tag_directives_copy = { NULL, NULL, NULL }
+//    value yaml_tag_directive_t = { NULL, NULL }
+//    mark yaml_mark_t = { 0, 0, 0 }
+//
+//    assert(document) // Non-NULL document object is expected.
+//    assert((tag_directives_start && tag_directives_end) ||
+//            (tag_directives_start == tag_directives_end))
+//                            // Valid tag directives are expected.
+//
+//    if (!STACK_INIT(&context, nodes, INITIAL_STACK_SIZE)) goto error
+//
+//    if (version_directive) {
+//        version_directive_copy = yaml_malloc(sizeof(yaml_version_directive_t))
+//        if (!version_directive_copy) goto error
+//        version_directive_copy.major = version_directive.major
+//        version_directive_copy.minor = version_directive.minor
+//    }
+//
+//    if (tag_directives_start != tag_directives_end) {
+//        tag_directive *yaml_tag_directive_t
+//        if (!STACK_INIT(&context, tag_directives_copy, INITIAL_STACK_SIZE))
+//            goto error
+//        for (tag_directive = tag_directives_start
+//                tag_directive != tag_directives_end; tag_directive ++) {
+//            assert(tag_directive.handle)
+//            assert(tag_directive.prefix)
+//            if (!yaml_check_utf8(tag_directive.handle,
+//                        strlen((char *)tag_directive.handle)))
+//                goto error
+//            if (!yaml_check_utf8(tag_directive.prefix,
+//                        strlen((char *)tag_directive.prefix)))
+//                goto error
+//            value.handle = yaml_strdup(tag_directive.handle)
+//            value.prefix = yaml_strdup(tag_directive.prefix)
+//            if (!value.handle || !value.prefix) goto error
+//            if (!PUSH(&context, tag_directives_copy, value))
+//                goto error
+//            value.handle = NULL
+//            value.prefix = NULL
+//        }
+//    }
+//
+//    DOCUMENT_INIT(*document, nodes.start, nodes.end, version_directive_copy,
+//            tag_directives_copy.start, tag_directives_copy.top,
+//            start_implicit, end_implicit, mark, mark)
+//
+//    return 1
+//
+//error:
+//    STACK_DEL(&context, nodes)
+//    yaml_free(version_directive_copy)
+//    while (!STACK_EMPTY(&context, tag_directives_copy)) {
+//        value yaml_tag_directive_t = POP(&context, tag_directives_copy)
+//        yaml_free(value.handle)
+//        yaml_free(value.prefix)
+//    }
+//    STACK_DEL(&context, tag_directives_copy)
+//    yaml_free(value.handle)
+//    yaml_free(value.prefix)
+//
+//    return 0
+//}
+//
+///*
+// * Destroy a document object.
+// */
+//
+//YAML_DECLARE(void)
+//yaml_document_delete(document *yaml_document_t)
+//{
+//    struct {
+//        error yaml_error_type_t
+//    } context
+//    tag_directive *yaml_tag_directive_t
+//
+//    context.error = YAML_NO_ERROR // Eliminate a compliler warning.
+//
+//    assert(document) // Non-NULL document object is expected.
+//
+//    while (!STACK_EMPTY(&context, document.nodes)) {
+//        node yaml_node_t = POP(&context, document.nodes)
+//        yaml_free(node.tag)
+//        switch (node.type) {
+//            case YAML_SCALAR_NODE:
+//                yaml_free(node.data.scalar.value)
+//                break
+//            case YAML_SEQUENCE_NODE:
+//                STACK_DEL(&context, node.data.sequence.items)
+//                break
+//            case YAML_MAPPING_NODE:
+//                STACK_DEL(&context, node.data.mapping.pairs)
+//                break
+//            default:
+//                assert(0) // Should not happen.
+//        }
+//    }
+//    STACK_DEL(&context, document.nodes)
+//
+//    yaml_free(document.version_directive)
+//    for (tag_directive = document.tag_directives.start
+//            tag_directive != document.tag_directives.end
+//            tag_directive++) {
+//        yaml_free(tag_directive.handle)
+//        yaml_free(tag_directive.prefix)
+//    }
+//    yaml_free(document.tag_directives.start)
+//
+//    memset(document, 0, sizeof(yaml_document_t))
+//}
+//
+///**
+// * Get a document node.
+// */
+//
+//YAML_DECLARE(yaml_node_t *)
+//yaml_document_get_node(document *yaml_document_t, index int)
+//{
+//    assert(document) // Non-NULL document object is expected.
+//
+//    if (index > 0 && document.nodes.start + index <= document.nodes.top) {
+//        return document.nodes.start + index - 1
+//    }
+//    return NULL
+//}
+//
+///**
+// * Get the root object.
+// */
+//
+//YAML_DECLARE(yaml_node_t *)
+//yaml_document_get_root_node(document *yaml_document_t)
+//{
+//    assert(document) // Non-NULL document object is expected.
+//
+//    if (document.nodes.top != document.nodes.start) {
+//        return document.nodes.start
+//    }
+//    return NULL
+//}
+//
+///*
+// * Add a scalar node to a document.
+// */
+//
+//YAML_DECLARE(int)
+//yaml_document_add_scalar(document *yaml_document_t,
+//        tag *yaml_char_t, value *yaml_char_t, length int,
+//        style yaml_scalar_style_t)
+//{
+//    struct {
+//        error yaml_error_type_t
+//    } context
+//    mark yaml_mark_t = { 0, 0, 0 }
+//    tag_copy *yaml_char_t = NULL
+//    value_copy *yaml_char_t = NULL
+//    node yaml_node_t
+//
+//    assert(document) // Non-NULL document object is expected.
+//    assert(value) // Non-NULL value is expected.
+//
+//    if (!tag) {
+//        tag = (yaml_char_t *)YAML_DEFAULT_SCALAR_TAG
+//    }
+//
+//    if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error
+//    tag_copy = yaml_strdup(tag)
+//    if (!tag_copy) goto error
+//
+//    if (length < 0) {
+//        length = strlen((char *)value)
+//    }
+//
+//    if (!yaml_check_utf8(value, length)) goto error
+//    value_copy = yaml_malloc(length+1)
+//    if (!value_copy) goto error
+//    memcpy(value_copy, value, length)
+//    value_copy[length] = '\0'
+//
+//    SCALAR_NODE_INIT(node, tag_copy, value_copy, length, style, mark, mark)
+//    if (!PUSH(&context, document.nodes, node)) goto error
+//
+//    return document.nodes.top - document.nodes.start
+//
+//error:
+//    yaml_free(tag_copy)
+//    yaml_free(value_copy)
+//
+//    return 0
+//}
+//
+///*
+// * Add a sequence node to a document.
+// */
+//
+//YAML_DECLARE(int)
+//yaml_document_add_sequence(document *yaml_document_t,
+//        tag *yaml_char_t, style yaml_sequence_style_t)
+//{
+//    struct {
+//        error yaml_error_type_t
+//    } context
+//    mark yaml_mark_t = { 0, 0, 0 }
+//    tag_copy *yaml_char_t = NULL
+//    struct {
+//        start *yaml_node_item_t
+//        end *yaml_node_item_t
+//        top *yaml_node_item_t
+//    } items = { NULL, NULL, NULL }
+//    node yaml_node_t
+//
+//    assert(document) // Non-NULL document object is expected.
+//
+//    if (!tag) {
+//        tag = (yaml_char_t *)YAML_DEFAULT_SEQUENCE_TAG
+//    }
+//
+//    if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error
+//    tag_copy = yaml_strdup(tag)
+//    if (!tag_copy) goto error
+//
+//    if (!STACK_INIT(&context, items, INITIAL_STACK_SIZE)) goto error
+//
+//    SEQUENCE_NODE_INIT(node, tag_copy, items.start, items.end,
+//            style, mark, mark)
+//    if (!PUSH(&context, document.nodes, node)) goto error
+//
+//    return document.nodes.top - document.nodes.start
+//
+//error:
+//    STACK_DEL(&context, items)
+//    yaml_free(tag_copy)
+//
+//    return 0
+//}
+//
+///*
+// * Add a mapping node to a document.
+// */
+//
+//YAML_DECLARE(int)
+//yaml_document_add_mapping(document *yaml_document_t,
+//        tag *yaml_char_t, style yaml_mapping_style_t)
+//{
+//    struct {
+//        error yaml_error_type_t
+//    } context
+//    mark yaml_mark_t = { 0, 0, 0 }
+//    tag_copy *yaml_char_t = NULL
+//    struct {
+//        start *yaml_node_pair_t
+//        end *yaml_node_pair_t
+//        top *yaml_node_pair_t
+//    } pairs = { NULL, NULL, NULL }
+//    node yaml_node_t
+//
+//    assert(document) // Non-NULL document object is expected.
+//
+//    if (!tag) {
+//        tag = (yaml_char_t *)YAML_DEFAULT_MAPPING_TAG
+//    }
+//
+//    if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error
+//    tag_copy = yaml_strdup(tag)
+//    if (!tag_copy) goto error
+//
+//    if (!STACK_INIT(&context, pairs, INITIAL_STACK_SIZE)) goto error
+//
+//    MAPPING_NODE_INIT(node, tag_copy, pairs.start, pairs.end,
+//            style, mark, mark)
+//    if (!PUSH(&context, document.nodes, node)) goto error
+//
+//    return document.nodes.top - document.nodes.start
+//
+//error:
+//    STACK_DEL(&context, pairs)
+//    yaml_free(tag_copy)
+//
+//    return 0
+//}
+//
+///*
+// * Append an item to a sequence node.
+// */
+//
+//YAML_DECLARE(int)
+//yaml_document_append_sequence_item(document *yaml_document_t,
+//        sequence int, item int)
+//{
+//    struct {
+//        error yaml_error_type_t
+//    } context
+//
+//    assert(document) // Non-NULL document is required.
+//    assert(sequence > 0
+//            && document.nodes.start + sequence <= document.nodes.top)
+//                            // Valid sequence id is required.
+//    assert(document.nodes.start[sequence-1].type == YAML_SEQUENCE_NODE)
+//                            // A sequence node is required.
+//    assert(item > 0 && document.nodes.start + item <= document.nodes.top)
+//                            // Valid item id is required.
+//
+//    if (!PUSH(&context,
+//                document.nodes.start[sequence-1].data.sequence.items, item))
+//        return 0
+//
+//    return 1
+//}
+//
+///*
+// * Append a pair of a key and a value to a mapping node.
+// */
+//
+//YAML_DECLARE(int)
+//yaml_document_append_mapping_pair(document *yaml_document_t,
+//        mapping int, key int, value int)
+//{
+//    struct {
+//        error yaml_error_type_t
+//    } context
+//
+//    pair yaml_node_pair_t
+//
+//    assert(document) // Non-NULL document is required.
+//    assert(mapping > 0
+//            && document.nodes.start + mapping <= document.nodes.top)
+//                            // Valid mapping id is required.
+//    assert(document.nodes.start[mapping-1].type == YAML_MAPPING_NODE)
+//                            // A mapping node is required.
+//    assert(key > 0 && document.nodes.start + key <= document.nodes.top)
+//                            // Valid key id is required.
+//    assert(value > 0 && document.nodes.start + value <= document.nodes.top)
+//                            // Valid value id is required.
+//
+//    pair.key = key
+//    pair.value = value
+//
+//    if (!PUSH(&context,
+//                document.nodes.start[mapping-1].data.mapping.pairs, pair))
+//        return 0
+//
+//    return 1
+//}
+//
+//
diff --git a/vendor/gopkg.in/yaml.v2/decode.go b/vendor/gopkg.in/yaml.v2/decode.go
new file mode 100644 (file)
index 0000000..085cddc
--- /dev/null
@@ -0,0 +1,683 @@
+package yaml
+
+import (
+       "encoding"
+       "encoding/base64"
+       "fmt"
+       "math"
+       "reflect"
+       "strconv"
+       "time"
+)
+
+const (
+       documentNode = 1 << iota
+       mappingNode
+       sequenceNode
+       scalarNode
+       aliasNode
+)
+
+type node struct {
+       kind         int
+       line, column int
+       tag          string
+       value        string
+       implicit     bool
+       children     []*node
+       anchors      map[string]*node
+}
+
+// ----------------------------------------------------------------------------
+// Parser, produces a node tree out of a libyaml event stream.
+
+type parser struct {
+       parser yaml_parser_t
+       event  yaml_event_t
+       doc    *node
+}
+
+func newParser(b []byte) *parser {
+       p := parser{}
+       if !yaml_parser_initialize(&p.parser) {
+               panic("failed to initialize YAML emitter")
+       }
+
+       if len(b) == 0 {
+               b = []byte{'\n'}
+       }
+
+       yaml_parser_set_input_string(&p.parser, b)
+
+       p.skip()
+       if p.event.typ != yaml_STREAM_START_EVENT {
+               panic("expected stream start event, got " + strconv.Itoa(int(p.event.typ)))
+       }
+       p.skip()
+       return &p
+}
+
+func (p *parser) destroy() {
+       if p.event.typ != yaml_NO_EVENT {
+               yaml_event_delete(&p.event)
+       }
+       yaml_parser_delete(&p.parser)
+}
+
+func (p *parser) skip() {
+       if p.event.typ != yaml_NO_EVENT {
+               if p.event.typ == yaml_STREAM_END_EVENT {
+                       failf("attempted to go past the end of stream; corrupted value?")
+               }
+               yaml_event_delete(&p.event)
+       }
+       if !yaml_parser_parse(&p.parser, &p.event) {
+               p.fail()
+       }
+}
+
+func (p *parser) fail() {
+       var where string
+       var line int
+       if p.parser.problem_mark.line != 0 {
+               line = p.parser.problem_mark.line
+       } else if p.parser.context_mark.line != 0 {
+               line = p.parser.context_mark.line
+       }
+       if line != 0 {
+               where = "line " + strconv.Itoa(line) + ": "
+       }
+       var msg string
+       if len(p.parser.problem) > 0 {
+               msg = p.parser.problem
+       } else {
+               msg = "unknown problem parsing YAML content"
+       }
+       failf("%s%s", where, msg)
+}
+
+func (p *parser) anchor(n *node, anchor []byte) {
+       if anchor != nil {
+               p.doc.anchors[string(anchor)] = n
+       }
+}
+
+func (p *parser) parse() *node {
+       switch p.event.typ {
+       case yaml_SCALAR_EVENT:
+               return p.scalar()
+       case yaml_ALIAS_EVENT:
+               return p.alias()
+       case yaml_MAPPING_START_EVENT:
+               return p.mapping()
+       case yaml_SEQUENCE_START_EVENT:
+               return p.sequence()
+       case yaml_DOCUMENT_START_EVENT:
+               return p.document()
+       case yaml_STREAM_END_EVENT:
+               // Happens when attempting to decode an empty buffer.
+               return nil
+       default:
+               panic("attempted to parse unknown event: " + strconv.Itoa(int(p.event.typ)))
+       }
+       panic("unreachable")
+}
+
+func (p *parser) node(kind int) *node {
+       return &node{
+               kind:   kind,
+               line:   p.event.start_mark.line,
+               column: p.event.start_mark.column,
+       }
+}
+
+func (p *parser) document() *node {
+       n := p.node(documentNode)
+       n.anchors = make(map[string]*node)
+       p.doc = n
+       p.skip()
+       n.children = append(n.children, p.parse())
+       if p.event.typ != yaml_DOCUMENT_END_EVENT {
+               panic("expected end of document event but got " + strconv.Itoa(int(p.event.typ)))
+       }
+       p.skip()
+       return n
+}
+
+func (p *parser) alias() *node {
+       n := p.node(aliasNode)
+       n.value = string(p.event.anchor)
+       p.skip()
+       return n
+}
+
+func (p *parser) scalar() *node {
+       n := p.node(scalarNode)
+       n.value = string(p.event.value)
+       n.tag = string(p.event.tag)
+       n.implicit = p.event.implicit
+       p.anchor(n, p.event.anchor)
+       p.skip()
+       return n
+}
+
+func (p *parser) sequence() *node {
+       n := p.node(sequenceNode)
+       p.anchor(n, p.event.anchor)
+       p.skip()
+       for p.event.typ != yaml_SEQUENCE_END_EVENT {
+               n.children = append(n.children, p.parse())
+       }
+       p.skip()
+       return n
+}
+
+func (p *parser) mapping() *node {
+       n := p.node(mappingNode)
+       p.anchor(n, p.event.anchor)
+       p.skip()
+       for p.event.typ != yaml_MAPPING_END_EVENT {
+               n.children = append(n.children, p.parse(), p.parse())
+       }
+       p.skip()
+       return n
+}
+
+// ----------------------------------------------------------------------------
+// Decoder, unmarshals a node into a provided value.
+
+type decoder struct {
+       doc     *node
+       aliases map[string]bool
+       mapType reflect.Type
+       terrors []string
+}
+
+var (
+       mapItemType    = reflect.TypeOf(MapItem{})
+       durationType   = reflect.TypeOf(time.Duration(0))
+       defaultMapType = reflect.TypeOf(map[interface{}]interface{}{})
+       ifaceType      = defaultMapType.Elem()
+)
+
+func newDecoder() *decoder {
+       d := &decoder{mapType: defaultMapType}
+       d.aliases = make(map[string]bool)
+       return d
+}
+
+func (d *decoder) terror(n *node, tag string, out reflect.Value) {
+       if n.tag != "" {
+               tag = n.tag
+       }
+       value := n.value
+       if tag != yaml_SEQ_TAG && tag != yaml_MAP_TAG {
+               if len(value) > 10 {
+                       value = " `" + value[:7] + "...`"
+               } else {
+                       value = " `" + value + "`"
+               }
+       }
+       d.terrors = append(d.terrors, fmt.Sprintf("line %d: cannot unmarshal %s%s into %s", n.line+1, shortTag(tag), value, out.Type()))
+}
+
+func (d *decoder) callUnmarshaler(n *node, u Unmarshaler) (good bool) {
+       terrlen := len(d.terrors)
+       err := u.UnmarshalYAML(func(v interface{}) (err error) {
+               defer handleErr(&err)
+               d.unmarshal(n, reflect.ValueOf(v))
+               if len(d.terrors) > terrlen {
+                       issues := d.terrors[terrlen:]
+                       d.terrors = d.terrors[:terrlen]
+                       return &TypeError{issues}
+               }
+               return nil
+       })
+       if e, ok := err.(*TypeError); ok {
+               d.terrors = append(d.terrors, e.Errors...)
+               return false
+       }
+       if err != nil {
+               fail(err)
+       }
+       return true
+}
+
+// d.prepare initializes and dereferences pointers and calls UnmarshalYAML
+// if a value is found to implement it.
+// It returns the initialized and dereferenced out value, whether
+// unmarshalling was already done by UnmarshalYAML, and if so whether
+// its types unmarshalled appropriately.
+//
+// If n holds a null value, prepare returns before doing anything.
+func (d *decoder) prepare(n *node, out reflect.Value) (newout reflect.Value, unmarshaled, good bool) {
+       if n.tag == yaml_NULL_TAG || n.kind == scalarNode && n.tag == "" && (n.value == "null" || n.value == "") {
+               return out, false, false
+       }
+       again := true
+       for again {
+               again = false
+               if out.Kind() == reflect.Ptr {
+                       if out.IsNil() {
+                               out.Set(reflect.New(out.Type().Elem()))
+                       }
+                       out = out.Elem()
+                       again = true
+               }
+               if out.CanAddr() {
+                       if u, ok := out.Addr().Interface().(Unmarshaler); ok {
+                               good = d.callUnmarshaler(n, u)
+                               return out, true, good
+                       }
+               }
+       }
+       return out, false, false
+}
+
+func (d *decoder) unmarshal(n *node, out reflect.Value) (good bool) {
+       switch n.kind {
+       case documentNode:
+               return d.document(n, out)
+       case aliasNode:
+               return d.alias(n, out)
+       }
+       out, unmarshaled, good := d.prepare(n, out)
+       if unmarshaled {
+               return good
+       }
+       switch n.kind {
+       case scalarNode:
+               good = d.scalar(n, out)
+       case mappingNode:
+               good = d.mapping(n, out)
+       case sequenceNode:
+               good = d.sequence(n, out)
+       default:
+               panic("internal error: unknown node kind: " + strconv.Itoa(n.kind))
+       }
+       return good
+}
+
+func (d *decoder) document(n *node, out reflect.Value) (good bool) {
+       if len(n.children) == 1 {
+               d.doc = n
+               d.unmarshal(n.children[0], out)
+               return true
+       }
+       return false
+}
+
+func (d *decoder) alias(n *node, out reflect.Value) (good bool) {
+       an, ok := d.doc.anchors[n.value]
+       if !ok {
+               failf("unknown anchor '%s' referenced", n.value)
+       }
+       if d.aliases[n.value] {
+               failf("anchor '%s' value contains itself", n.value)
+       }
+       d.aliases[n.value] = true
+       good = d.unmarshal(an, out)
+       delete(d.aliases, n.value)
+       return good
+}
+
+var zeroValue reflect.Value
+
+func resetMap(out reflect.Value) {
+       for _, k := range out.MapKeys() {
+               out.SetMapIndex(k, zeroValue)
+       }
+}
+
+func (d *decoder) scalar(n *node, out reflect.Value) (good bool) {
+       var tag string
+       var resolved interface{}
+       if n.tag == "" && !n.implicit {
+               tag = yaml_STR_TAG
+               resolved = n.value
+       } else {
+               tag, resolved = resolve(n.tag, n.value)
+               if tag == yaml_BINARY_TAG {
+                       data, err := base64.StdEncoding.DecodeString(resolved.(string))
+                       if err != nil {
+                               failf("!!binary value contains invalid base64 data")
+                       }
+                       resolved = string(data)
+               }
+       }
+       if resolved == nil {
+               if out.Kind() == reflect.Map && !out.CanAddr() {
+                       resetMap(out)
+               } else {
+                       out.Set(reflect.Zero(out.Type()))
+               }
+               return true
+       }
+       if s, ok := resolved.(string); ok && out.CanAddr() {
+               if u, ok := out.Addr().Interface().(encoding.TextUnmarshaler); ok {
+                       err := u.UnmarshalText([]byte(s))
+                       if err != nil {
+                               fail(err)
+                       }
+                       return true
+               }
+       }
+       switch out.Kind() {
+       case reflect.String:
+               if tag == yaml_BINARY_TAG {
+                       out.SetString(resolved.(string))
+                       good = true
+               } else if resolved != nil {
+                       out.SetString(n.value)
+                       good = true
+               }
+       case reflect.Interface:
+               if resolved == nil {
+                       out.Set(reflect.Zero(out.Type()))
+               } else {
+                       out.Set(reflect.ValueOf(resolved))
+               }
+               good = true
+       case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
+               switch resolved := resolved.(type) {
+               case int:
+                       if !out.OverflowInt(int64(resolved)) {
+                               out.SetInt(int64(resolved))
+                               good = true
+                       }
+               case int64:
+                       if !out.OverflowInt(resolved) {
+                               out.SetInt(resolved)
+                               good = true
+                       }
+               case uint64:
+                       if resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) {
+                               out.SetInt(int64(resolved))
+                               good = true
+                       }
+               case float64:
+                       if resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) {
+                               out.SetInt(int64(resolved))
+                               good = true
+                       }
+               case string:
+                       if out.Type() == durationType {
+                               d, err := time.ParseDuration(resolved)
+                               if err == nil {
+                                       out.SetInt(int64(d))
+                                       good = true
+                               }
+                       }
+               }
+       case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
+               switch resolved := resolved.(type) {
+               case int:
+                       if resolved >= 0 && !out.OverflowUint(uint64(resolved)) {
+                               out.SetUint(uint64(resolved))
+                               good = true
+                       }
+               case int64:
+                       if resolved >= 0 && !out.OverflowUint(uint64(resolved)) {
+                               out.SetUint(uint64(resolved))
+                               good = true
+                       }
+               case uint64:
+                       if !out.OverflowUint(uint64(resolved)) {
+                               out.SetUint(uint64(resolved))
+                               good = true
+                       }
+               case float64:
+                       if resolved <= math.MaxUint64 && !out.OverflowUint(uint64(resolved)) {
+                               out.SetUint(uint64(resolved))
+                               good = true
+                       }
+               }
+       case reflect.Bool:
+               switch resolved := resolved.(type) {
+               case bool:
+                       out.SetBool(resolved)
+                       good = true
+               }
+       case reflect.Float32, reflect.Float64:
+               switch resolved := resolved.(type) {
+               case int:
+                       out.SetFloat(float64(resolved))
+                       good = true
+               case int64:
+                       out.SetFloat(float64(resolved))
+                       good = true
+               case uint64:
+                       out.SetFloat(float64(resolved))
+                       good = true
+               case float64:
+                       out.SetFloat(resolved)
+                       good = true
+               }
+       case reflect.Ptr:
+               if out.Type().Elem() == reflect.TypeOf(resolved) {
+                       // TODO DOes this make sense? When is out a Ptr except when decoding a nil value?
+                       elem := reflect.New(out.Type().Elem())
+                       elem.Elem().Set(reflect.ValueOf(resolved))
+                       out.Set(elem)
+                       good = true
+               }
+       }
+       if !good {
+               d.terror(n, tag, out)
+       }
+       return good
+}
+
+func settableValueOf(i interface{}) reflect.Value {
+       v := reflect.ValueOf(i)
+       sv := reflect.New(v.Type()).Elem()
+       sv.Set(v)
+       return sv
+}
+
+func (d *decoder) sequence(n *node, out reflect.Value) (good bool) {
+       l := len(n.children)
+
+       var iface reflect.Value
+       switch out.Kind() {
+       case reflect.Slice:
+               out.Set(reflect.MakeSlice(out.Type(), l, l))
+       case reflect.Interface:
+               // No type hints. Will have to use a generic sequence.
+               iface = out
+               out = settableValueOf(make([]interface{}, l))
+       default:
+               d.terror(n, yaml_SEQ_TAG, out)
+               return false
+       }
+       et := out.Type().Elem()
+
+       j := 0
+       for i := 0; i < l; i++ {
+               e := reflect.New(et).Elem()
+               if ok := d.unmarshal(n.children[i], e); ok {
+                       out.Index(j).Set(e)
+                       j++
+               }
+       }
+       out.Set(out.Slice(0, j))
+       if iface.IsValid() {
+               iface.Set(out)
+       }
+       return true
+}
+
+func (d *decoder) mapping(n *node, out reflect.Value) (good bool) {
+       switch out.Kind() {
+       case reflect.Struct:
+               return d.mappingStruct(n, out)
+       case reflect.Slice:
+               return d.mappingSlice(n, out)
+       case reflect.Map:
+               // okay
+       case reflect.Interface:
+               if d.mapType.Kind() == reflect.Map {
+                       iface := out
+                       out = reflect.MakeMap(d.mapType)
+                       iface.Set(out)
+               } else {
+                       slicev := reflect.New(d.mapType).Elem()
+                       if !d.mappingSlice(n, slicev) {
+                               return false
+                       }
+                       out.Set(slicev)
+                       return true
+               }
+       default:
+               d.terror(n, yaml_MAP_TAG, out)
+               return false
+       }
+       outt := out.Type()
+       kt := outt.Key()
+       et := outt.Elem()
+
+       mapType := d.mapType
+       if outt.Key() == ifaceType && outt.Elem() == ifaceType {
+               d.mapType = outt
+       }
+
+       if out.IsNil() {
+               out.Set(reflect.MakeMap(outt))
+       }
+       l := len(n.children)
+       for i := 0; i < l; i += 2 {
+               if isMerge(n.children[i]) {
+                       d.merge(n.children[i+1], out)
+                       continue
+               }
+               k := reflect.New(kt).Elem()
+               if d.unmarshal(n.children[i], k) {
+                       kkind := k.Kind()
+                       if kkind == reflect.Interface {
+                               kkind = k.Elem().Kind()
+                       }
+                       if kkind == reflect.Map || kkind == reflect.Slice {
+                               failf("invalid map key: %#v", k.Interface())
+                       }
+                       e := reflect.New(et).Elem()
+                       if d.unmarshal(n.children[i+1], e) {
+                               out.SetMapIndex(k, e)
+                       }
+               }
+       }
+       d.mapType = mapType
+       return true
+}
+
+func (d *decoder) mappingSlice(n *node, out reflect.Value) (good bool) {
+       outt := out.Type()
+       if outt.Elem() != mapItemType {
+               d.terror(n, yaml_MAP_TAG, out)
+               return false
+       }
+
+       mapType := d.mapType
+       d.mapType = outt
+
+       var slice []MapItem
+       var l = len(n.children)
+       for i := 0; i < l; i += 2 {
+               if isMerge(n.children[i]) {
+                       d.merge(n.children[i+1], out)
+                       continue
+               }
+               item := MapItem{}
+               k := reflect.ValueOf(&item.Key).Elem()
+               if d.unmarshal(n.children[i], k) {
+                       v := reflect.ValueOf(&item.Value).Elem()
+                       if d.unmarshal(n.children[i+1], v) {
+                               slice = append(slice, item)
+                       }
+               }
+       }
+       out.Set(reflect.ValueOf(slice))
+       d.mapType = mapType
+       return true
+}
+
+func (d *decoder) mappingStruct(n *node, out reflect.Value) (good bool) {
+       sinfo, err := getStructInfo(out.Type())
+       if err != nil {
+               panic(err)
+       }
+       name := settableValueOf("")
+       l := len(n.children)
+
+       var inlineMap reflect.Value
+       var elemType reflect.Type
+       if sinfo.InlineMap != -1 {
+               inlineMap = out.Field(sinfo.InlineMap)
+               inlineMap.Set(reflect.New(inlineMap.Type()).Elem())
+               elemType = inlineMap.Type().Elem()
+       }
+
+       for i := 0; i < l; i += 2 {
+               ni := n.children[i]
+               if isMerge(ni) {
+                       d.merge(n.children[i+1], out)
+                       continue
+               }
+               if !d.unmarshal(ni, name) {
+                       continue
+               }
+               if info, ok := sinfo.FieldsMap[name.String()]; ok {
+                       var field reflect.Value
+                       if info.Inline == nil {
+                               field = out.Field(info.Num)
+                       } else {
+                               field = out.FieldByIndex(info.Inline)
+                       }
+                       d.unmarshal(n.children[i+1], field)
+               } else if sinfo.InlineMap != -1 {
+                       if inlineMap.IsNil() {
+                               inlineMap.Set(reflect.MakeMap(inlineMap.Type()))
+                       }
+                       value := reflect.New(elemType).Elem()
+                       d.unmarshal(n.children[i+1], value)
+                       inlineMap.SetMapIndex(name, value)
+               }
+       }
+       return true
+}
+
+func failWantMap() {
+       failf("map merge requires map or sequence of maps as the value")
+}
+
+func (d *decoder) merge(n *node, out reflect.Value) {
+       switch n.kind {
+       case mappingNode:
+               d.unmarshal(n, out)
+       case aliasNode:
+               an, ok := d.doc.anchors[n.value]
+               if ok && an.kind != mappingNode {
+                       failWantMap()
+               }
+               d.unmarshal(n, out)
+       case sequenceNode:
+               // Step backwards as earlier nodes take precedence.
+               for i := len(n.children) - 1; i >= 0; i-- {
+                       ni := n.children[i]
+                       if ni.kind == aliasNode {
+                               an, ok := d.doc.anchors[ni.value]
+                               if ok && an.kind != mappingNode {
+                                       failWantMap()
+                               }
+                       } else if ni.kind != mappingNode {
+                               failWantMap()
+                       }
+                       d.unmarshal(ni, out)
+               }
+       default:
+               failWantMap()
+       }
+}
+
+func isMerge(n *node) bool {
+       return n.kind == scalarNode && n.value == "<<" && (n.implicit == true || n.tag == yaml_MERGE_TAG)
+}
diff --git a/vendor/gopkg.in/yaml.v2/emitterc.go b/vendor/gopkg.in/yaml.v2/emitterc.go
new file mode 100644 (file)
index 0000000..2befd55
--- /dev/null
@@ -0,0 +1,1685 @@
+package yaml
+
+import (
+       "bytes"
+)
+
+// Flush the buffer if needed.
+func flush(emitter *yaml_emitter_t) bool {
+       if emitter.buffer_pos+5 >= len(emitter.buffer) {
+               return yaml_emitter_flush(emitter)
+       }
+       return true
+}
+
+// Put a character to the output buffer.
+func put(emitter *yaml_emitter_t, value byte) bool {
+       if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) {
+               return false
+       }
+       emitter.buffer[emitter.buffer_pos] = value
+       emitter.buffer_pos++
+       emitter.column++
+       return true
+}
+
+// Put a line break to the output buffer.
+func put_break(emitter *yaml_emitter_t) bool {
+       if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) {
+               return false
+       }
+       switch emitter.line_break {
+       case yaml_CR_BREAK:
+               emitter.buffer[emitter.buffer_pos] = '\r'
+               emitter.buffer_pos += 1
+       case yaml_LN_BREAK:
+               emitter.buffer[emitter.buffer_pos] = '\n'
+               emitter.buffer_pos += 1
+       case yaml_CRLN_BREAK:
+               emitter.buffer[emitter.buffer_pos+0] = '\r'
+               emitter.buffer[emitter.buffer_pos+1] = '\n'
+               emitter.buffer_pos += 2
+       default:
+               panic("unknown line break setting")
+       }
+       emitter.column = 0
+       emitter.line++
+       return true
+}
+
+// Copy a character from a string into buffer.
+func write(emitter *yaml_emitter_t, s []byte, i *int) bool {
+       if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) {
+               return false
+       }
+       p := emitter.buffer_pos
+       w := width(s[*i])
+       switch w {
+       case 4:
+               emitter.buffer[p+3] = s[*i+3]
+               fallthrough
+       case 3:
+               emitter.buffer[p+2] = s[*i+2]
+               fallthrough
+       case 2:
+               emitter.buffer[p+1] = s[*i+1]
+               fallthrough
+       case 1:
+               emitter.buffer[p+0] = s[*i+0]
+       default:
+               panic("unknown character width")
+       }
+       emitter.column++
+       emitter.buffer_pos += w
+       *i += w
+       return true
+}
+
+// Write a whole string into buffer.
+func write_all(emitter *yaml_emitter_t, s []byte) bool {
+       for i := 0; i < len(s); {
+               if !write(emitter, s, &i) {
+                       return false
+               }
+       }
+       return true
+}
+
+// Copy a line break character from a string into buffer.
+func write_break(emitter *yaml_emitter_t, s []byte, i *int) bool {
+       if s[*i] == '\n' {
+               if !put_break(emitter) {
+                       return false
+               }
+               *i++
+       } else {
+               if !write(emitter, s, i) {
+                       return false
+               }
+               emitter.column = 0
+               emitter.line++
+       }
+       return true
+}
+
+// Set an emitter error and return false.
+func yaml_emitter_set_emitter_error(emitter *yaml_emitter_t, problem string) bool {
+       emitter.error = yaml_EMITTER_ERROR
+       emitter.problem = problem
+       return false
+}
+
+// Emit an event.
+func yaml_emitter_emit(emitter *yaml_emitter_t, event *yaml_event_t) bool {
+       emitter.events = append(emitter.events, *event)
+       for !yaml_emitter_need_more_events(emitter) {
+               event := &emitter.events[emitter.events_head]
+               if !yaml_emitter_analyze_event(emitter, event) {
+                       return false
+               }
+               if !yaml_emitter_state_machine(emitter, event) {
+                       return false
+               }
+               yaml_event_delete(event)
+               emitter.events_head++
+       }
+       return true
+}
+
+// Check if we need to accumulate more events before emitting.
+//
+// We accumulate extra
+//  - 1 event for DOCUMENT-START
+//  - 2 events for SEQUENCE-START
+//  - 3 events for MAPPING-START
+//
+func yaml_emitter_need_more_events(emitter *yaml_emitter_t) bool {
+       if emitter.events_head == len(emitter.events) {
+               return true
+       }
+       var accumulate int
+       switch emitter.events[emitter.events_head].typ {
+       case yaml_DOCUMENT_START_EVENT:
+               accumulate = 1
+               break
+       case yaml_SEQUENCE_START_EVENT:
+               accumulate = 2
+               break
+       case yaml_MAPPING_START_EVENT:
+               accumulate = 3
+               break
+       default:
+               return false
+       }
+       if len(emitter.events)-emitter.events_head > accumulate {
+               return false
+       }
+       var level int
+       for i := emitter.events_head; i < len(emitter.events); i++ {
+               switch emitter.events[i].typ {
+               case yaml_STREAM_START_EVENT, yaml_DOCUMENT_START_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT:
+                       level++
+               case yaml_STREAM_END_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_END_EVENT, yaml_MAPPING_END_EVENT:
+                       level--
+               }
+               if level == 0 {
+                       return false
+               }
+       }
+       return true
+}
+
+// Append a directive to the directives stack.
+func yaml_emitter_append_tag_directive(emitter *yaml_emitter_t, value *yaml_tag_directive_t, allow_duplicates bool) bool {
+       for i := 0; i < len(emitter.tag_directives); i++ {
+               if bytes.Equal(value.handle, emitter.tag_directives[i].handle) {
+                       if allow_duplicates {
+                               return true
+                       }
+                       return yaml_emitter_set_emitter_error(emitter, "duplicate %TAG directive")
+               }
+       }
+
+       // [Go] Do we actually need to copy this given garbage collection
+       // and the lack of deallocating destructors?
+       tag_copy := yaml_tag_directive_t{
+               handle: make([]byte, len(value.handle)),
+               prefix: make([]byte, len(value.prefix)),
+       }
+       copy(tag_copy.handle, value.handle)
+       copy(tag_copy.prefix, value.prefix)
+       emitter.tag_directives = append(emitter.tag_directives, tag_copy)
+       return true
+}
+
+// Increase the indentation level.
+func yaml_emitter_increase_indent(emitter *yaml_emitter_t, flow, indentless bool) bool {
+       emitter.indents = append(emitter.indents, emitter.indent)
+       if emitter.indent < 0 {
+               if flow {
+                       emitter.indent = emitter.best_indent
+               } else {
+                       emitter.indent = 0
+               }
+       } else if !indentless {
+               emitter.indent += emitter.best_indent
+       }
+       return true
+}
+
+// State dispatcher.
+func yaml_emitter_state_machine(emitter *yaml_emitter_t, event *yaml_event_t) bool {
+       switch emitter.state {
+       default:
+       case yaml_EMIT_STREAM_START_STATE:
+               return yaml_emitter_emit_stream_start(emitter, event)
+
+       case yaml_EMIT_FIRST_DOCUMENT_START_STATE:
+               return yaml_emitter_emit_document_start(emitter, event, true)
+
+       case yaml_EMIT_DOCUMENT_START_STATE:
+               return yaml_emitter_emit_document_start(emitter, event, false)
+
+       case yaml_EMIT_DOCUMENT_CONTENT_STATE:
+               return yaml_emitter_emit_document_content(emitter, event)
+
+       case yaml_EMIT_DOCUMENT_END_STATE:
+               return yaml_emitter_emit_document_end(emitter, event)
+
+       case yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE:
+               return yaml_emitter_emit_flow_sequence_item(emitter, event, true)
+
+       case yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE:
+               return yaml_emitter_emit_flow_sequence_item(emitter, event, false)
+
+       case yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE:
+               return yaml_emitter_emit_flow_mapping_key(emitter, event, true)
+
+       case yaml_EMIT_FLOW_MAPPING_KEY_STATE:
+               return yaml_emitter_emit_flow_mapping_key(emitter, event, false)
+
+       case yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE:
+               return yaml_emitter_emit_flow_mapping_value(emitter, event, true)
+
+       case yaml_EMIT_FLOW_MAPPING_VALUE_STATE:
+               return yaml_emitter_emit_flow_mapping_value(emitter, event, false)
+
+       case yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE:
+               return yaml_emitter_emit_block_sequence_item(emitter, event, true)
+
+       case yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE:
+               return yaml_emitter_emit_block_sequence_item(emitter, event, false)
+
+       case yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE:
+               return yaml_emitter_emit_block_mapping_key(emitter, event, true)
+
+       case yaml_EMIT_BLOCK_MAPPING_KEY_STATE:
+               return yaml_emitter_emit_block_mapping_key(emitter, event, false)
+
+       case yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE:
+               return yaml_emitter_emit_block_mapping_value(emitter, event, true)
+
+       case yaml_EMIT_BLOCK_MAPPING_VALUE_STATE:
+               return yaml_emitter_emit_block_mapping_value(emitter, event, false)
+
+       case yaml_EMIT_END_STATE:
+               return yaml_emitter_set_emitter_error(emitter, "expected nothing after STREAM-END")
+       }
+       panic("invalid emitter state")
+}
+
+// Expect STREAM-START.
+func yaml_emitter_emit_stream_start(emitter *yaml_emitter_t, event *yaml_event_t) bool {
+       if event.typ != yaml_STREAM_START_EVENT {
+               return yaml_emitter_set_emitter_error(emitter, "expected STREAM-START")
+       }
+       if emitter.encoding == yaml_ANY_ENCODING {
+               emitter.encoding = event.encoding
+               if emitter.encoding == yaml_ANY_ENCODING {
+                       emitter.encoding = yaml_UTF8_ENCODING
+               }
+       }
+       if emitter.best_indent < 2 || emitter.best_indent > 9 {
+               emitter.best_indent = 2
+       }
+       if emitter.best_width >= 0 && emitter.best_width <= emitter.best_indent*2 {
+               emitter.best_width = 80
+       }
+       if emitter.best_width < 0 {
+               emitter.best_width = 1<<31 - 1
+       }
+       if emitter.line_break == yaml_ANY_BREAK {
+               emitter.line_break = yaml_LN_BREAK
+       }
+
+       emitter.indent = -1
+       emitter.line = 0
+       emitter.column = 0
+       emitter.whitespace = true
+       emitter.indention = true
+
+       if emitter.encoding != yaml_UTF8_ENCODING {
+               if !yaml_emitter_write_bom(emitter) {
+                       return false
+               }
+       }
+       emitter.state = yaml_EMIT_FIRST_DOCUMENT_START_STATE
+       return true
+}
+
+// Expect DOCUMENT-START or STREAM-END.
+func yaml_emitter_emit_document_start(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {
+
+       if event.typ == yaml_DOCUMENT_START_EVENT {
+
+               if event.version_directive != nil {
+                       if !yaml_emitter_analyze_version_directive(emitter, event.version_directive) {
+                               return false
+                       }
+               }
+
+               for i := 0; i < len(event.tag_directives); i++ {
+                       tag_directive := &event.tag_directives[i]
+                       if !yaml_emitter_analyze_tag_directive(emitter, tag_directive) {
+                               return false
+                       }
+                       if !yaml_emitter_append_tag_directive(emitter, tag_directive, false) {
+                               return false
+                       }
+               }
+
+               for i := 0; i < len(default_tag_directives); i++ {
+                       tag_directive := &default_tag_directives[i]
+                       if !yaml_emitter_append_tag_directive(emitter, tag_directive, true) {
+                               return false
+                       }
+               }
+
+               implicit := event.implicit
+               if !first || emitter.canonical {
+                       implicit = false
+               }
+
+               if emitter.open_ended && (event.version_directive != nil || len(event.tag_directives) > 0) {
+                       if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) {
+                               return false
+                       }
+                       if !yaml_emitter_write_indent(emitter) {
+                               return false
+                       }
+               }
+
+               if event.version_directive != nil {
+                       implicit = false
+                       if !yaml_emitter_write_indicator(emitter, []byte("%YAML"), true, false, false) {
+                               return false
+                       }
+                       if !yaml_emitter_write_indicator(emitter, []byte("1.1"), true, false, false) {
+                               return false
+                       }
+                       if !yaml_emitter_write_indent(emitter) {
+                               return false
+                       }
+               }
+
+               if len(event.tag_directives) > 0 {
+                       implicit = false
+                       for i := 0; i < len(event.tag_directives); i++ {
+                               tag_directive := &event.tag_directives[i]
+                               if !yaml_emitter_write_indicator(emitter, []byte("%TAG"), true, false, false) {
+                                       return false
+                               }
+                               if !yaml_emitter_write_tag_handle(emitter, tag_directive.handle) {
+                                       return false
+                               }
+                               if !yaml_emitter_write_tag_content(emitter, tag_directive.prefix, true) {
+                                       return false
+                               }
+                               if !yaml_emitter_write_indent(emitter) {
+                                       return false
+                               }
+                       }
+               }
+
+               if yaml_emitter_check_empty_document(emitter) {
+                       implicit = false
+               }
+               if !implicit {
+                       if !yaml_emitter_write_indent(emitter) {
+                               return false
+                       }
+                       if !yaml_emitter_write_indicator(emitter, []byte("---"), true, false, false) {
+                               return false
+                       }
+                       if emitter.canonical {
+                               if !yaml_emitter_write_indent(emitter) {
+                                       return false
+                               }
+                       }
+               }
+
+               emitter.state = yaml_EMIT_DOCUMENT_CONTENT_STATE
+               return true
+       }
+
+       if event.typ == yaml_STREAM_END_EVENT {
+               if emitter.open_ended {
+                       if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) {
+                               return false
+                       }
+                       if !yaml_emitter_write_indent(emitter) {
+                               return false
+                       }
+               }
+               if !yaml_emitter_flush(emitter) {
+                       return false
+               }
+               emitter.state = yaml_EMIT_END_STATE
+               return true
+       }
+
+       return yaml_emitter_set_emitter_error(emitter, "expected DOCUMENT-START or STREAM-END")
+}
+
+// Expect the root node.
+func yaml_emitter_emit_document_content(emitter *yaml_emitter_t, event *yaml_event_t) bool {
+       emitter.states = append(emitter.states, yaml_EMIT_DOCUMENT_END_STATE)
+       return yaml_emitter_emit_node(emitter, event, true, false, false, false)
+}
+
+// Expect DOCUMENT-END.
+func yaml_emitter_emit_document_end(emitter *yaml_emitter_t, event *yaml_event_t) bool {
+       if event.typ != yaml_DOCUMENT_END_EVENT {
+               return yaml_emitter_set_emitter_error(emitter, "expected DOCUMENT-END")
+       }
+       if !yaml_emitter_write_indent(emitter) {
+               return false
+       }
+       if !event.implicit {
+               // [Go] Allocate the slice elsewhere.
+               if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) {
+                       return false
+               }
+               if !yaml_emitter_write_indent(emitter) {
+                       return false
+               }
+       }
+       if !yaml_emitter_flush(emitter) {
+               return false
+       }
+       emitter.state = yaml_EMIT_DOCUMENT_START_STATE
+       emitter.tag_directives = emitter.tag_directives[:0]
+       return true
+}
+
+// Expect a flow item node.
+func yaml_emitter_emit_flow_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {
+       if first {
+               if !yaml_emitter_write_indicator(emitter, []byte{'['}, true, true, false) {
+                       return false
+               }
+               if !yaml_emitter_increase_indent(emitter, true, false) {
+                       return false
+               }
+               emitter.flow_level++
+       }
+
+       if event.typ == yaml_SEQUENCE_END_EVENT {
+               emitter.flow_level--
+               emitter.indent = emitter.indents[len(emitter.indents)-1]
+               emitter.indents = emitter.indents[:len(emitter.indents)-1]
+               if emitter.canonical && !first {
+                       if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {
+                               return false
+                       }
+                       if !yaml_emitter_write_indent(emitter) {
+                               return false
+                       }
+               }
+               if !yaml_emitter_write_indicator(emitter, []byte{']'}, false, false, false) {
+                       return false
+               }
+               emitter.state = emitter.states[len(emitter.states)-1]
+               emitter.states = emitter.states[:len(emitter.states)-1]
+
+               return true
+       }
+
+       if !first {
+               if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {
+                       return false
+               }
+       }
+
+       if emitter.canonical || emitter.column > emitter.best_width {
+               if !yaml_emitter_write_indent(emitter) {
+                       return false
+               }
+       }
+       emitter.states = append(emitter.states, yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE)
+       return yaml_emitter_emit_node(emitter, event, false, true, false, false)
+}
+
+// Expect a flow key node.
+func yaml_emitter_emit_flow_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {
+       if first {
+               if !yaml_emitter_write_indicator(emitter, []byte{'{'}, true, true, false) {
+                       return false
+               }
+               if !yaml_emitter_increase_indent(emitter, true, false) {
+                       return false
+               }
+               emitter.flow_level++
+       }
+
+       if event.typ == yaml_MAPPING_END_EVENT {
+               emitter.flow_level--
+               emitter.indent = emitter.indents[len(emitter.indents)-1]
+               emitter.indents = emitter.indents[:len(emitter.indents)-1]
+               if emitter.canonical && !first {
+                       if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {
+                               return false
+                       }
+                       if !yaml_emitter_write_indent(emitter) {
+                               return false
+                       }
+               }
+               if !yaml_emitter_write_indicator(emitter, []byte{'}'}, false, false, false) {
+                       return false
+               }
+               emitter.state = emitter.states[len(emitter.states)-1]
+               emitter.states = emitter.states[:len(emitter.states)-1]
+               return true
+       }
+
+       if !first {
+               if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) {
+                       return false
+               }
+       }
+       if emitter.canonical || emitter.column > emitter.best_width {
+               if !yaml_emitter_write_indent(emitter) {
+                       return false
+               }
+       }
+
+       if !emitter.canonical && yaml_emitter_check_simple_key(emitter) {
+               emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE)
+               return yaml_emitter_emit_node(emitter, event, false, false, true, true)
+       }
+       if !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, false) {
+               return false
+       }
+       emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_VALUE_STATE)
+       return yaml_emitter_emit_node(emitter, event, false, false, true, false)
+}
+
+// Expect a flow value node.
+func yaml_emitter_emit_flow_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool {
+       if simple {
+               if !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) {
+                       return false
+               }
+       } else {
+               if emitter.canonical || emitter.column > emitter.best_width {
+                       if !yaml_emitter_write_indent(emitter) {
+                               return false
+                       }
+               }
+               if !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, false) {
+                       return false
+               }
+       }
+       emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_KEY_STATE)
+       return yaml_emitter_emit_node(emitter, event, false, false, true, false)
+}
+
+// Expect a block item node.
+func yaml_emitter_emit_block_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {
+       if first {
+               if !yaml_emitter_increase_indent(emitter, false, emitter.mapping_context && !emitter.indention) {
+                       return false
+               }
+       }
+       if event.typ == yaml_SEQUENCE_END_EVENT {
+               emitter.indent = emitter.indents[len(emitter.indents)-1]
+               emitter.indents = emitter.indents[:len(emitter.indents)-1]
+               emitter.state = emitter.states[len(emitter.states)-1]
+               emitter.states = emitter.states[:len(emitter.states)-1]
+               return true
+       }
+       if !yaml_emitter_write_indent(emitter) {
+               return false
+       }
+       if !yaml_emitter_write_indicator(emitter, []byte{'-'}, true, false, true) {
+               return false
+       }
+       emitter.states = append(emitter.states, yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE)
+       return yaml_emitter_emit_node(emitter, event, false, true, false, false)
+}
+
+// Expect a block key node.
+func yaml_emitter_emit_block_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool {
+       if first {
+               if !yaml_emitter_increase_indent(emitter, false, false) {
+                       return false
+               }
+       }
+       if event.typ == yaml_MAPPING_END_EVENT {
+               emitter.indent = emitter.indents[len(emitter.indents)-1]
+               emitter.indents = emitter.indents[:len(emitter.indents)-1]
+               emitter.state = emitter.states[len(emitter.states)-1]
+               emitter.states = emitter.states[:len(emitter.states)-1]
+               return true
+       }
+       if !yaml_emitter_write_indent(emitter) {
+               return false
+       }
+       if yaml_emitter_check_simple_key(emitter) {
+               emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE)
+               return yaml_emitter_emit_node(emitter, event, false, false, true, true)
+       }
+       if !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, true) {
+               return false
+       }
+       emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_VALUE_STATE)
+       return yaml_emitter_emit_node(emitter, event, false, false, true, false)
+}
+
+// Expect a block value node.
+func yaml_emitter_emit_block_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool {
+       if simple {
+               if !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) {
+                       return false
+               }
+       } else {
+               if !yaml_emitter_write_indent(emitter) {
+                       return false
+               }
+               if !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, true) {
+                       return false
+               }
+       }
+       emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_KEY_STATE)
+       return yaml_emitter_emit_node(emitter, event, false, false, true, false)
+}
+
+// Expect a node.
+func yaml_emitter_emit_node(emitter *yaml_emitter_t, event *yaml_event_t,
+       root bool, sequence bool, mapping bool, simple_key bool) bool {
+
+       emitter.root_context = root
+       emitter.sequence_context = sequence
+       emitter.mapping_context = mapping
+       emitter.simple_key_context = simple_key
+
+       switch event.typ {
+       case yaml_ALIAS_EVENT:
+               return yaml_emitter_emit_alias(emitter, event)
+       case yaml_SCALAR_EVENT:
+               return yaml_emitter_emit_scalar(emitter, event)
+       case yaml_SEQUENCE_START_EVENT:
+               return yaml_emitter_emit_sequence_start(emitter, event)
+       case yaml_MAPPING_START_EVENT:
+               return yaml_emitter_emit_mapping_start(emitter, event)
+       default:
+               return yaml_emitter_set_emitter_error(emitter,
+                       "expected SCALAR, SEQUENCE-START, MAPPING-START, or ALIAS")
+       }
+       return false
+}
+
+// Expect ALIAS.
+func yaml_emitter_emit_alias(emitter *yaml_emitter_t, event *yaml_event_t) bool {
+       if !yaml_emitter_process_anchor(emitter) {
+               return false
+       }
+       emitter.state = emitter.states[len(emitter.states)-1]
+       emitter.states = emitter.states[:len(emitter.states)-1]
+       return true
+}
+
+// Expect SCALAR.
+func yaml_emitter_emit_scalar(emitter *yaml_emitter_t, event *yaml_event_t) bool {
+       if !yaml_emitter_select_scalar_style(emitter, event) {
+               return false
+       }
+       if !yaml_emitter_process_anchor(emitter) {
+               return false
+       }
+       if !yaml_emitter_process_tag(emitter) {
+               return false
+       }
+       if !yaml_emitter_increase_indent(emitter, true, false) {
+               return false
+       }
+       if !yaml_emitter_process_scalar(emitter) {
+               return false
+       }
+       emitter.indent = emitter.indents[len(emitter.indents)-1]
+       emitter.indents = emitter.indents[:len(emitter.indents)-1]
+       emitter.state = emitter.states[len(emitter.states)-1]
+       emitter.states = emitter.states[:len(emitter.states)-1]
+       return true
+}
+
+// Expect SEQUENCE-START.
+func yaml_emitter_emit_sequence_start(emitter *yaml_emitter_t, event *yaml_event_t) bool {
+       if !yaml_emitter_process_anchor(emitter) {
+               return false
+       }
+       if !yaml_emitter_process_tag(emitter) {
+               return false
+       }
+       if emitter.flow_level > 0 || emitter.canonical || event.sequence_style() == yaml_FLOW_SEQUENCE_STYLE ||
+               yaml_emitter_check_empty_sequence(emitter) {
+               emitter.state = yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE
+       } else {
+               emitter.state = yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE
+       }
+       return true
+}
+
+// Expect MAPPING-START.
+func yaml_emitter_emit_mapping_start(emitter *yaml_emitter_t, event *yaml_event_t) bool {
+       if !yaml_emitter_process_anchor(emitter) {
+               return false
+       }
+       if !yaml_emitter_process_tag(emitter) {
+               return false
+       }
+       if emitter.flow_level > 0 || emitter.canonical || event.mapping_style() == yaml_FLOW_MAPPING_STYLE ||
+               yaml_emitter_check_empty_mapping(emitter) {
+               emitter.state = yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE
+       } else {
+               emitter.state = yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE
+       }
+       return true
+}
+
+// Check if the document content is an empty scalar.
+func yaml_emitter_check_empty_document(emitter *yaml_emitter_t) bool {
+       return false // [Go] Huh?
+}
+
+// Check if the next events represent an empty sequence.
+func yaml_emitter_check_empty_sequence(emitter *yaml_emitter_t) bool {
+       if len(emitter.events)-emitter.events_head < 2 {
+               return false
+       }
+       return emitter.events[emitter.events_head].typ == yaml_SEQUENCE_START_EVENT &&
+               emitter.events[emitter.events_head+1].typ == yaml_SEQUENCE_END_EVENT
+}
+
+// Check if the next events represent an empty mapping.
+func yaml_emitter_check_empty_mapping(emitter *yaml_emitter_t) bool {
+       if len(emitter.events)-emitter.events_head < 2 {
+               return false
+       }
+       return emitter.events[emitter.events_head].typ == yaml_MAPPING_START_EVENT &&
+               emitter.events[emitter.events_head+1].typ == yaml_MAPPING_END_EVENT
+}
+
+// Check if the next node can be expressed as a simple key.
+func yaml_emitter_check_simple_key(emitter *yaml_emitter_t) bool {
+       length := 0
+       switch emitter.events[emitter.events_head].typ {
+       case yaml_ALIAS_EVENT:
+               length += len(emitter.anchor_data.anchor)
+       case yaml_SCALAR_EVENT:
+               if emitter.scalar_data.multiline {
+                       return false
+               }
+               length += len(emitter.anchor_data.anchor) +
+                       len(emitter.tag_data.handle) +
+                       len(emitter.tag_data.suffix) +
+                       len(emitter.scalar_data.value)
+       case yaml_SEQUENCE_START_EVENT:
+               if !yaml_emitter_check_empty_sequence(emitter) {
+                       return false
+               }
+               length += len(emitter.anchor_data.anchor) +
+                       len(emitter.tag_data.handle) +
+                       len(emitter.tag_data.suffix)
+       case yaml_MAPPING_START_EVENT:
+               if !yaml_emitter_check_empty_mapping(emitter) {
+                       return false
+               }
+               length += len(emitter.anchor_data.anchor) +
+                       len(emitter.tag_data.handle) +
+                       len(emitter.tag_data.suffix)
+       default:
+               return false
+       }
+       return length <= 128
+}
+
+// Determine an acceptable scalar style.
+func yaml_emitter_select_scalar_style(emitter *yaml_emitter_t, event *yaml_event_t) bool {
+
+       no_tag := len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0
+       if no_tag && !event.implicit && !event.quoted_implicit {
+               return yaml_emitter_set_emitter_error(emitter, "neither tag nor implicit flags are specified")
+       }
+
+       style := event.scalar_style()
+       if style == yaml_ANY_SCALAR_STYLE {
+               style = yaml_PLAIN_SCALAR_STYLE
+       }
+       if emitter.canonical {
+               style = yaml_DOUBLE_QUOTED_SCALAR_STYLE
+       }
+       if emitter.simple_key_context && emitter.scalar_data.multiline {
+               style = yaml_DOUBLE_QUOTED_SCALAR_STYLE
+       }
+
+       if style == yaml_PLAIN_SCALAR_STYLE {
+               if emitter.flow_level > 0 && !emitter.scalar_data.flow_plain_allowed ||
+                       emitter.flow_level == 0 && !emitter.scalar_data.block_plain_allowed {
+                       style = yaml_SINGLE_QUOTED_SCALAR_STYLE
+               }
+               if len(emitter.scalar_data.value) == 0 && (emitter.flow_level > 0 || emitter.simple_key_context) {
+                       style = yaml_SINGLE_QUOTED_SCALAR_STYLE
+               }
+               if no_tag && !event.implicit {
+                       style = yaml_SINGLE_QUOTED_SCALAR_STYLE
+               }
+       }
+       if style == yaml_SINGLE_QUOTED_SCALAR_STYLE {
+               if !emitter.scalar_data.single_quoted_allowed {
+                       style = yaml_DOUBLE_QUOTED_SCALAR_STYLE
+               }
+       }
+       if style == yaml_LITERAL_SCALAR_STYLE || style == yaml_FOLDED_SCALAR_STYLE {
+               if !emitter.scalar_data.block_allowed || emitter.flow_level > 0 || emitter.simple_key_context {
+                       style = yaml_DOUBLE_QUOTED_SCALAR_STYLE
+               }
+       }
+
+       if no_tag && !event.quoted_implicit && style != yaml_PLAIN_SCALAR_STYLE {
+               emitter.tag_data.handle = []byte{'!'}
+       }
+       emitter.scalar_data.style = style
+       return true
+}
+
+// Write an achor.
+func yaml_emitter_process_anchor(emitter *yaml_emitter_t) bool {
+       if emitter.anchor_data.anchor == nil {
+               return true
+       }
+       c := []byte{'&'}
+       if emitter.anchor_data.alias {
+               c[0] = '*'
+       }
+       if !yaml_emitter_write_indicator(emitter, c, true, false, false) {
+               return false
+       }
+       return yaml_emitter_write_anchor(emitter, emitter.anchor_data.anchor)
+}
+
+// Write a tag.
+func yaml_emitter_process_tag(emitter *yaml_emitter_t) bool {
+       if len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0 {
+               return true
+       }
+       if len(emitter.tag_data.handle) > 0 {
+               if !yaml_emitter_write_tag_handle(emitter, emitter.tag_data.handle) {
+                       return false
+               }
+               if len(emitter.tag_data.suffix) > 0 {
+                       if !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) {
+                               return false
+                       }
+               }
+       } else {
+               // [Go] Allocate these slices elsewhere.
+               if !yaml_emitter_write_indicator(emitter, []byte("!<"), true, false, false) {
+                       return false
+               }
+               if !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) {
+                       return false
+               }
+               if !yaml_emitter_write_indicator(emitter, []byte{'>'}, false, false, false) {
+                       return false
+               }
+       }
+       return true
+}
+
+// Write a scalar.
+func yaml_emitter_process_scalar(emitter *yaml_emitter_t) bool {
+       switch emitter.scalar_data.style {
+       case yaml_PLAIN_SCALAR_STYLE:
+               return yaml_emitter_write_plain_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)
+
+       case yaml_SINGLE_QUOTED_SCALAR_STYLE:
+               return yaml_emitter_write_single_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)
+
+       case yaml_DOUBLE_QUOTED_SCALAR_STYLE:
+               return yaml_emitter_write_double_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)
+
+       case yaml_LITERAL_SCALAR_STYLE:
+               return yaml_emitter_write_literal_scalar(emitter, emitter.scalar_data.value)
+
+       case yaml_FOLDED_SCALAR_STYLE:
+               return yaml_emitter_write_folded_scalar(emitter, emitter.scalar_data.value)
+       }
+       panic("unknown scalar style")
+}
+
+// Check if a %YAML directive is valid.
+func yaml_emitter_analyze_version_directive(emitter *yaml_emitter_t, version_directive *yaml_version_directive_t) bool {
+       if version_directive.major != 1 || version_directive.minor != 1 {
+               return yaml_emitter_set_emitter_error(emitter, "incompatible %YAML directive")
+       }
+       return true
+}
+
+// Check if a %TAG directive is valid.
+func yaml_emitter_analyze_tag_directive(emitter *yaml_emitter_t, tag_directive *yaml_tag_directive_t) bool {
+       handle := tag_directive.handle
+       prefix := tag_directive.prefix
+       if len(handle) == 0 {
+               return yaml_emitter_set_emitter_error(emitter, "tag handle must not be empty")
+       }
+       if handle[0] != '!' {
+               return yaml_emitter_set_emitter_error(emitter, "tag handle must start with '!'")
+       }
+       if handle[len(handle)-1] != '!' {
+               return yaml_emitter_set_emitter_error(emitter, "tag handle must end with '!'")
+       }
+       for i := 1; i < len(handle)-1; i += width(handle[i]) {
+               if !is_alpha(handle, i) {
+                       return yaml_emitter_set_emitter_error(emitter, "tag handle must contain alphanumerical characters only")
+               }
+       }
+       if len(prefix) == 0 {
+               return yaml_emitter_set_emitter_error(emitter, "tag prefix must not be empty")
+       }
+       return true
+}
+
+// Check if an anchor is valid.
+func yaml_emitter_analyze_anchor(emitter *yaml_emitter_t, anchor []byte, alias bool) bool {
+       if len(anchor) == 0 {
+               problem := "anchor value must not be empty"
+               if alias {
+                       problem = "alias value must not be empty"
+               }
+               return yaml_emitter_set_emitter_error(emitter, problem)
+       }
+       for i := 0; i < len(anchor); i += width(anchor[i]) {
+               if !is_alpha(anchor, i) {
+                       problem := "anchor value must contain alphanumerical characters only"
+                       if alias {
+                               problem = "alias value must contain alphanumerical characters only"
+                       }
+                       return yaml_emitter_set_emitter_error(emitter, problem)
+               }
+       }
+       emitter.anchor_data.anchor = anchor
+       emitter.anchor_data.alias = alias
+       return true
+}
+
+// Check if a tag is valid.
+func yaml_emitter_analyze_tag(emitter *yaml_emitter_t, tag []byte) bool {
+       if len(tag) == 0 {
+               return yaml_emitter_set_emitter_error(emitter, "tag value must not be empty")
+       }
+       for i := 0; i < len(emitter.tag_directives); i++ {
+               tag_directive := &emitter.tag_directives[i]
+               if bytes.HasPrefix(tag, tag_directive.prefix) {
+                       emitter.tag_data.handle = tag_directive.handle
+                       emitter.tag_data.suffix = tag[len(tag_directive.prefix):]
+                       return true
+               }
+       }
+       emitter.tag_data.suffix = tag
+       return true
+}
+
+// Check if a scalar is valid.
+func yaml_emitter_analyze_scalar(emitter *yaml_emitter_t, value []byte) bool {
+       var (
+               block_indicators   = false
+               flow_indicators    = false
+               line_breaks        = false
+               special_characters = false
+
+               leading_space  = false
+               leading_break  = false
+               trailing_space = false
+               trailing_break = false
+               break_space    = false
+               space_break    = false
+
+               preceeded_by_whitespace = false
+               followed_by_whitespace  = false
+               previous_space          = false
+               previous_break          = false
+       )
+
+       emitter.scalar_data.value = value
+
+       if len(value) == 0 {
+               emitter.scalar_data.multiline = false
+               emitter.scalar_data.flow_plain_allowed = false
+               emitter.scalar_data.block_plain_allowed = true
+               emitter.scalar_data.single_quoted_allowed = true
+               emitter.scalar_data.block_allowed = false
+               return true
+       }
+
+       if len(value) >= 3 && ((value[0] == '-' && value[1] == '-' && value[2] == '-') || (value[0] == '.' && value[1] == '.' && value[2] == '.')) {
+               block_indicators = true
+               flow_indicators = true
+       }
+
+       preceeded_by_whitespace = true
+       for i, w := 0, 0; i < len(value); i += w {
+               w = width(value[i])
+               followed_by_whitespace = i+w >= len(value) || is_blank(value, i+w)
+
+               if i == 0 {
+                       switch value[i] {
+                       case '#', ',', '[', ']', '{', '}', '&', '*', '!', '|', '>', '\'', '"', '%', '@', '`':
+                               flow_indicators = true
+                               block_indicators = true
+                       case '?', ':':
+                               flow_indicators = true
+                               if followed_by_whitespace {
+                                       block_indicators = true
+                               }
+                       case '-':
+                               if followed_by_whitespace {
+                                       flow_indicators = true
+                                       block_indicators = true
+                               }
+                       }
+               } else {
+                       switch value[i] {
+                       case ',', '?', '[', ']', '{', '}':
+                               flow_indicators = true
+                       case ':':
+                               flow_indicators = true
+                               if followed_by_whitespace {
+                                       block_indicators = true
+                               }
+                       case '#':
+                               if preceeded_by_whitespace {
+                                       flow_indicators = true
+                                       block_indicators = true
+                               }
+                       }
+               }
+
+               if !is_printable(value, i) || !is_ascii(value, i) && !emitter.unicode {
+                       special_characters = true
+               }
+               if is_space(value, i) {
+                       if i == 0 {
+                               leading_space = true
+                       }
+                       if i+width(value[i]) == len(value) {
+                               trailing_space = true
+                       }
+                       if previous_break {
+                               break_space = true
+                       }
+                       previous_space = true
+                       previous_break = false
+               } else if is_break(value, i) {
+                       line_breaks = true
+                       if i == 0 {
+                               leading_break = true
+                       }
+                       if i+width(value[i]) == len(value) {
+                               trailing_break = true
+                       }
+                       if previous_space {
+                               space_break = true
+                       }
+                       previous_space = false
+                       previous_break = true
+               } else {
+                       previous_space = false
+                       previous_break = false
+               }
+
+               // [Go]: Why 'z'? Couldn't be the end of the string as that's the loop condition.
+               preceeded_by_whitespace = is_blankz(value, i)
+       }
+
+       emitter.scalar_data.multiline = line_breaks
+       emitter.scalar_data.flow_plain_allowed = true
+       emitter.scalar_data.block_plain_allowed = true
+       emitter.scalar_data.single_quoted_allowed = true
+       emitter.scalar_data.block_allowed = true
+
+       if leading_space || leading_break || trailing_space || trailing_break {
+               emitter.scalar_data.flow_plain_allowed = false
+               emitter.scalar_data.block_plain_allowed = false
+       }
+       if trailing_space {
+               emitter.scalar_data.block_allowed = false
+       }
+       if break_space {
+               emitter.scalar_data.flow_plain_allowed = false
+               emitter.scalar_data.block_plain_allowed = false
+               emitter.scalar_data.single_quoted_allowed = false
+       }
+       if space_break || special_characters {
+               emitter.scalar_data.flow_plain_allowed = false
+               emitter.scalar_data.block_plain_allowed = false
+               emitter.scalar_data.single_quoted_allowed = false
+               emitter.scalar_data.block_allowed = false
+       }
+       if line_breaks {
+               emitter.scalar_data.flow_plain_allowed = false
+               emitter.scalar_data.block_plain_allowed = false
+       }
+       if flow_indicators {
+               emitter.scalar_data.flow_plain_allowed = false
+       }
+       if block_indicators {
+               emitter.scalar_data.block_plain_allowed = false
+       }
+       return true
+}
+
+// Check if the event data is valid.
+func yaml_emitter_analyze_event(emitter *yaml_emitter_t, event *yaml_event_t) bool {
+
+       emitter.anchor_data.anchor = nil
+       emitter.tag_data.handle = nil
+       emitter.tag_data.suffix = nil
+       emitter.scalar_data.value = nil
+
+       switch event.typ {
+       case yaml_ALIAS_EVENT:
+               if !yaml_emitter_analyze_anchor(emitter, event.anchor, true) {
+                       return false
+               }
+
+       case yaml_SCALAR_EVENT:
+               if len(event.anchor) > 0 {
+                       if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) {
+                               return false
+                       }
+               }
+               if len(event.tag) > 0 && (emitter.canonical || (!event.implicit && !event.quoted_implicit)) {
+                       if !yaml_emitter_analyze_tag(emitter, event.tag) {
+                               return false
+                       }
+               }
+               if !yaml_emitter_analyze_scalar(emitter, event.value) {
+                       return false
+               }
+
+       case yaml_SEQUENCE_START_EVENT:
+               if len(event.anchor) > 0 {
+                       if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) {
+                               return false
+                       }
+               }
+               if len(event.tag) > 0 && (emitter.canonical || !event.implicit) {
+                       if !yaml_emitter_analyze_tag(emitter, event.tag) {
+                               return false
+                       }
+               }
+
+       case yaml_MAPPING_START_EVENT:
+               if len(event.anchor) > 0 {
+                       if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) {
+                               return false
+                       }
+               }
+               if len(event.tag) > 0 && (emitter.canonical || !event.implicit) {
+                       if !yaml_emitter_analyze_tag(emitter, event.tag) {
+                               return false
+                       }
+               }
+       }
+       return true
+}
+
+// Write the BOM character.
+func yaml_emitter_write_bom(emitter *yaml_emitter_t) bool {
+       if !flush(emitter) {
+               return false
+       }
+       pos := emitter.buffer_pos
+       emitter.buffer[pos+0] = '\xEF'
+       emitter.buffer[pos+1] = '\xBB'
+       emitter.buffer[pos+2] = '\xBF'
+       emitter.buffer_pos += 3
+       return true
+}
+
+func yaml_emitter_write_indent(emitter *yaml_emitter_t) bool {
+       indent := emitter.indent
+       if indent < 0 {
+               indent = 0
+       }
+       if !emitter.indention || emitter.column > indent || (emitter.column == indent && !emitter.whitespace) {
+               if !put_break(emitter) {
+                       return false
+               }
+       }
+       for emitter.column < indent {
+               if !put(emitter, ' ') {
+                       return false
+               }
+       }
+       emitter.whitespace = true
+       emitter.indention = true
+       return true
+}
+
+func yaml_emitter_write_indicator(emitter *yaml_emitter_t, indicator []byte, need_whitespace, is_whitespace, is_indention bool) bool {
+       if need_whitespace && !emitter.whitespace {
+               if !put(emitter, ' ') {
+                       return false
+               }
+       }
+       if !write_all(emitter, indicator) {
+               return false
+       }
+       emitter.whitespace = is_whitespace
+       emitter.indention = (emitter.indention && is_indention)
+       emitter.open_ended = false
+       return true
+}
+
+func yaml_emitter_write_anchor(emitter *yaml_emitter_t, value []byte) bool {
+       if !write_all(emitter, value) {
+               return false
+       }
+       emitter.whitespace = false
+       emitter.indention = false
+       return true
+}
+
+func yaml_emitter_write_tag_handle(emitter *yaml_emitter_t, value []byte) bool {
+       if !emitter.whitespace {
+               if !put(emitter, ' ') {
+                       return false
+               }
+       }
+       if !write_all(emitter, value) {
+               return false
+       }
+       emitter.whitespace = false
+       emitter.indention = false
+       return true
+}
+
+func yaml_emitter_write_tag_content(emitter *yaml_emitter_t, value []byte, need_whitespace bool) bool {
+       if need_whitespace && !emitter.whitespace {
+               if !put(emitter, ' ') {
+                       return false
+               }
+       }
+       for i := 0; i < len(value); {
+               var must_write bool
+               switch value[i] {
+               case ';', '/', '?', ':', '@', '&', '=', '+', '$', ',', '_', '.', '~', '*', '\'', '(', ')', '[', ']':
+                       must_write = true
+               default:
+                       must_write = is_alpha(value, i)
+               }
+               if must_write {
+                       if !write(emitter, value, &i) {
+                               return false
+                       }
+               } else {
+                       w := width(value[i])
+                       for k := 0; k < w; k++ {
+                               octet := value[i]
+                               i++
+                               if !put(emitter, '%') {
+                                       return false
+                               }
+
+                               c := octet >> 4
+                               if c < 10 {
+                                       c += '0'
+                               } else {
+                                       c += 'A' - 10
+                               }
+                               if !put(emitter, c) {
+                                       return false
+                               }
+
+                               c = octet & 0x0f
+                               if c < 10 {
+                                       c += '0'
+                               } else {
+                                       c += 'A' - 10
+                               }
+                               if !put(emitter, c) {
+                                       return false
+                               }
+                       }
+               }
+       }
+       emitter.whitespace = false
+       emitter.indention = false
+       return true
+}
+
+func yaml_emitter_write_plain_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool {
+       if !emitter.whitespace {
+               if !put(emitter, ' ') {
+                       return false
+               }
+       }
+
+       spaces := false
+       breaks := false
+       for i := 0; i < len(value); {
+               if is_space(value, i) {
+                       if allow_breaks && !spaces && emitter.column > emitter.best_width && !is_space(value, i+1) {
+                               if !yaml_emitter_write_indent(emitter) {
+                                       return false
+                               }
+                               i += width(value[i])
+                       } else {
+                               if !write(emitter, value, &i) {
+                                       return false
+                               }
+                       }
+                       spaces = true
+               } else if is_break(value, i) {
+                       if !breaks && value[i] == '\n' {
+                               if !put_break(emitter) {
+                                       return false
+                               }
+                       }
+                       if !write_break(emitter, value, &i) {
+                               return false
+                       }
+                       emitter.indention = true
+                       breaks = true
+               } else {
+                       if breaks {
+                               if !yaml_emitter_write_indent(emitter) {
+                                       return false
+                               }
+                       }
+                       if !write(emitter, value, &i) {
+                               return false
+                       }
+                       emitter.indention = false
+                       spaces = false
+                       breaks = false
+               }
+       }
+
+       emitter.whitespace = false
+       emitter.indention = false
+       if emitter.root_context {
+               emitter.open_ended = true
+       }
+
+       return true
+}
+
+func yaml_emitter_write_single_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool {
+
+       if !yaml_emitter_write_indicator(emitter, []byte{'\''}, true, false, false) {
+               return false
+       }
+
+       spaces := false
+       breaks := false
+       for i := 0; i < len(value); {
+               if is_space(value, i) {
+                       if allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 && !is_space(value, i+1) {
+                               if !yaml_emitter_write_indent(emitter) {
+                                       return false
+                               }
+                               i += width(value[i])
+                       } else {
+                               if !write(emitter, value, &i) {
+                                       return false
+                               }
+                       }
+                       spaces = true
+               } else if is_break(value, i) {
+                       if !breaks && value[i] == '\n' {
+                               if !put_break(emitter) {
+                                       return false
+                               }
+                       }
+                       if !write_break(emitter, value, &i) {
+                               return false
+                       }
+                       emitter.indention = true
+                       breaks = true
+               } else {
+                       if breaks {
+                               if !yaml_emitter_write_indent(emitter) {
+                                       return false
+                               }
+                       }
+                       if value[i] == '\'' {
+                               if !put(emitter, '\'') {
+                                       return false
+                               }
+                       }
+                       if !write(emitter, value, &i) {
+                               return false
+                       }
+                       emitter.indention = false
+                       spaces = false
+                       breaks = false
+               }
+       }
+       if !yaml_emitter_write_indicator(emitter, []byte{'\''}, false, false, false) {
+               return false
+       }
+       emitter.whitespace = false
+       emitter.indention = false
+       return true
+}
+
+func yaml_emitter_write_double_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool {
+       spaces := false
+       if !yaml_emitter_write_indicator(emitter, []byte{'"'}, true, false, false) {
+               return false
+       }
+
+       for i := 0; i < len(value); {
+               if !is_printable(value, i) || (!emitter.unicode && !is_ascii(value, i)) ||
+                       is_bom(value, i) || is_break(value, i) ||
+                       value[i] == '"' || value[i] == '\\' {
+
+                       octet := value[i]
+
+                       var w int
+                       var v rune
+                       switch {
+                       case octet&0x80 == 0x00:
+                               w, v = 1, rune(octet&0x7F)
+                       case octet&0xE0 == 0xC0:
+                               w, v = 2, rune(octet&0x1F)
+                       case octet&0xF0 == 0xE0:
+                               w, v = 3, rune(octet&0x0F)
+                       case octet&0xF8 == 0xF0:
+                               w, v = 4, rune(octet&0x07)
+                       }
+                       for k := 1; k < w; k++ {
+                               octet = value[i+k]
+                               v = (v << 6) + (rune(octet) & 0x3F)
+                       }
+                       i += w
+
+                       if !put(emitter, '\\') {
+                               return false
+                       }
+
+                       var ok bool
+                       switch v {
+                       case 0x00:
+                               ok = put(emitter, '0')
+                       case 0x07:
+                               ok = put(emitter, 'a')
+                       case 0x08:
+                               ok = put(emitter, 'b')
+                       case 0x09:
+                               ok = put(emitter, 't')
+                       case 0x0A:
+                               ok = put(emitter, 'n')
+                       case 0x0b:
+                               ok = put(emitter, 'v')
+                       case 0x0c:
+                               ok = put(emitter, 'f')
+                       case 0x0d:
+                               ok = put(emitter, 'r')
+                       case 0x1b:
+                               ok = put(emitter, 'e')
+                       case 0x22:
+                               ok = put(emitter, '"')
+                       case 0x5c:
+                               ok = put(emitter, '\\')
+                       case 0x85:
+                               ok = put(emitter, 'N')
+                       case 0xA0:
+                               ok = put(emitter, '_')
+                       case 0x2028:
+                               ok = put(emitter, 'L')
+                       case 0x2029:
+                               ok = put(emitter, 'P')
+                       default:
+                               if v <= 0xFF {
+                                       ok = put(emitter, 'x')
+                                       w = 2
+                               } else if v <= 0xFFFF {
+                                       ok = put(emitter, 'u')
+                                       w = 4
+                               } else {
+                                       ok = put(emitter, 'U')
+                                       w = 8
+                               }
+                               for k := (w - 1) * 4; ok && k >= 0; k -= 4 {
+                                       digit := byte((v >> uint(k)) & 0x0F)
+                                       if digit < 10 {
+                                               ok = put(emitter, digit+'0')
+                                       } else {
+                                               ok = put(emitter, digit+'A'-10)
+                                       }
+                               }
+                       }
+                       if !ok {
+                               return false
+                       }
+                       spaces = false
+               } else if is_space(value, i) {
+                       if allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 {
+                               if !yaml_emitter_write_indent(emitter) {
+                                       return false
+                               }
+                               if is_space(value, i+1) {
+                                       if !put(emitter, '\\') {
+                                               return false
+                                       }
+                               }
+                               i += width(value[i])
+                       } else if !write(emitter, value, &i) {
+                               return false
+                       }
+                       spaces = true
+               } else {
+                       if !write(emitter, value, &i) {
+                               return false
+                       }
+                       spaces = false
+               }
+       }
+       if !yaml_emitter_write_indicator(emitter, []byte{'"'}, false, false, false) {
+               return false
+       }
+       emitter.whitespace = false
+       emitter.indention = false
+       return true
+}
+
+func yaml_emitter_write_block_scalar_hints(emitter *yaml_emitter_t, value []byte) bool {
+       if is_space(value, 0) || is_break(value, 0) {
+               indent_hint := []byte{'0' + byte(emitter.best_indent)}
+               if !yaml_emitter_write_indicator(emitter, indent_hint, false, false, false) {
+                       return false
+               }
+       }
+
+       emitter.open_ended = false
+
+       var chomp_hint [1]byte
+       if len(value) == 0 {
+               chomp_hint[0] = '-'
+       } else {
+               i := len(value) - 1
+               for value[i]&0xC0 == 0x80 {
+                       i--
+               }
+               if !is_break(value, i) {
+                       chomp_hint[0] = '-'
+               } else if i == 0 {
+                       chomp_hint[0] = '+'
+                       emitter.open_ended = true
+               } else {
+                       i--
+                       for value[i]&0xC0 == 0x80 {
+                               i--
+                       }
+                       if is_break(value, i) {
+                               chomp_hint[0] = '+'
+                               emitter.open_ended = true
+                       }
+               }
+       }
+       if chomp_hint[0] != 0 {
+               if !yaml_emitter_write_indicator(emitter, chomp_hint[:], false, false, false) {
+                       return false
+               }
+       }
+       return true
+}
+
+func yaml_emitter_write_literal_scalar(emitter *yaml_emitter_t, value []byte) bool {
+       if !yaml_emitter_write_indicator(emitter, []byte{'|'}, true, false, false) {
+               return false
+       }
+       if !yaml_emitter_write_block_scalar_hints(emitter, value) {
+               return false
+       }
+       if !put_break(emitter) {
+               return false
+       }
+       emitter.indention = true
+       emitter.whitespace = true
+       breaks := true
+       for i := 0; i < len(value); {
+               if is_break(value, i) {
+                       if !write_break(emitter, value, &i) {
+                               return false
+                       }
+                       emitter.indention = true
+                       breaks = true
+               } else {
+                       if breaks {
+                               if !yaml_emitter_write_indent(emitter) {
+                                       return false
+                               }
+                       }
+                       if !write(emitter, value, &i) {
+                               return false
+                       }
+                       emitter.indention = false
+                       breaks = false
+               }
+       }
+
+       return true
+}
+
+func yaml_emitter_write_folded_scalar(emitter *yaml_emitter_t, value []byte) bool {
+       if !yaml_emitter_write_indicator(emitter, []byte{'>'}, true, false, false) {
+               return false
+       }
+       if !yaml_emitter_write_block_scalar_hints(emitter, value) {
+               return false
+       }
+
+       if !put_break(emitter) {
+               return false
+       }
+       emitter.indention = true
+       emitter.whitespace = true
+
+       breaks := true
+       leading_spaces := true
+       for i := 0; i < len(value); {
+               if is_break(value, i) {
+                       if !breaks && !leading_spaces && value[i] == '\n' {
+                               k := 0
+                               for is_break(value, k) {
+                                       k += width(value[k])
+                               }
+                               if !is_blankz(value, k) {
+                                       if !put_break(emitter) {
+                                               return false
+                                       }
+                               }
+                       }
+                       if !write_break(emitter, value, &i) {
+                               return false
+                       }
+                       emitter.indention = true
+                       breaks = true
+               } else {
+                       if breaks {
+                               if !yaml_emitter_write_indent(emitter) {
+                                       return false
+                               }
+                               leading_spaces = is_blank(value, i)
+                       }
+                       if !breaks && is_space(value, i) && !is_space(value, i+1) && emitter.column > emitter.best_width {
+                               if !yaml_emitter_write_indent(emitter) {
+                                       return false
+                               }
+                               i += width(value[i])
+                       } else {
+                               if !write(emitter, value, &i) {
+                                       return false
+                               }
+                       }
+                       emitter.indention = false
+                       breaks = false
+               }
+       }
+       return true
+}
diff --git a/vendor/gopkg.in/yaml.v2/encode.go b/vendor/gopkg.in/yaml.v2/encode.go
new file mode 100644 (file)
index 0000000..84f8499
--- /dev/null
@@ -0,0 +1,306 @@
+package yaml
+
+import (
+       "encoding"
+       "fmt"
+       "reflect"
+       "regexp"
+       "sort"
+       "strconv"
+       "strings"
+       "time"
+)
+
+type encoder struct {
+       emitter yaml_emitter_t
+       event   yaml_event_t
+       out     []byte
+       flow    bool
+}
+
+func newEncoder() (e *encoder) {
+       e = &encoder{}
+       e.must(yaml_emitter_initialize(&e.emitter))
+       yaml_emitter_set_output_string(&e.emitter, &e.out)
+       yaml_emitter_set_unicode(&e.emitter, true)
+       e.must(yaml_stream_start_event_initialize(&e.event, yaml_UTF8_ENCODING))
+       e.emit()
+       e.must(yaml_document_start_event_initialize(&e.event, nil, nil, true))
+       e.emit()
+       return e
+}
+
+func (e *encoder) finish() {
+       e.must(yaml_document_end_event_initialize(&e.event, true))
+       e.emit()
+       e.emitter.open_ended = false
+       e.must(yaml_stream_end_event_initialize(&e.event))
+       e.emit()
+}
+
+func (e *encoder) destroy() {
+       yaml_emitter_delete(&e.emitter)
+}
+
+func (e *encoder) emit() {
+       // This will internally delete the e.event value.
+       if !yaml_emitter_emit(&e.emitter, &e.event) && e.event.typ != yaml_DOCUMENT_END_EVENT && e.event.typ != yaml_STREAM_END_EVENT {
+               e.must(false)
+       }
+}
+
+func (e *encoder) must(ok bool) {
+       if !ok {
+               msg := e.emitter.problem
+               if msg == "" {
+                       msg = "unknown problem generating YAML content"
+               }
+               failf("%s", msg)
+       }
+}
+
+func (e *encoder) marshal(tag string, in reflect.Value) {
+       if !in.IsValid() {
+               e.nilv()
+               return
+       }
+       iface := in.Interface()
+       if m, ok := iface.(Marshaler); ok {
+               v, err := m.MarshalYAML()
+               if err != nil {
+                       fail(err)
+               }
+               if v == nil {
+                       e.nilv()
+                       return
+               }
+               in = reflect.ValueOf(v)
+       } else if m, ok := iface.(encoding.TextMarshaler); ok {
+               text, err := m.MarshalText()
+               if err != nil {
+                       fail(err)
+               }
+               in = reflect.ValueOf(string(text))
+       }
+       switch in.Kind() {
+       case reflect.Interface:
+               if in.IsNil() {
+                       e.nilv()
+               } else {
+                       e.marshal(tag, in.Elem())
+               }
+       case reflect.Map:
+               e.mapv(tag, in)
+       case reflect.Ptr:
+               if in.IsNil() {
+                       e.nilv()
+               } else {
+                       e.marshal(tag, in.Elem())
+               }
+       case reflect.Struct:
+               e.structv(tag, in)
+       case reflect.Slice:
+               if in.Type().Elem() == mapItemType {
+                       e.itemsv(tag, in)
+               } else {
+                       e.slicev(tag, in)
+               }
+       case reflect.String:
+               e.stringv(tag, in)
+       case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
+               if in.Type() == durationType {
+                       e.stringv(tag, reflect.ValueOf(iface.(time.Duration).String()))
+               } else {
+                       e.intv(tag, in)
+               }
+       case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
+               e.uintv(tag, in)
+       case reflect.Float32, reflect.Float64:
+               e.floatv(tag, in)
+       case reflect.Bool:
+               e.boolv(tag, in)
+       default:
+               panic("cannot marshal type: " + in.Type().String())
+       }
+}
+
+func (e *encoder) mapv(tag string, in reflect.Value) {
+       e.mappingv(tag, func() {
+               keys := keyList(in.MapKeys())
+               sort.Sort(keys)
+               for _, k := range keys {
+                       e.marshal("", k)
+                       e.marshal("", in.MapIndex(k))
+               }
+       })
+}
+
+func (e *encoder) itemsv(tag string, in reflect.Value) {
+       e.mappingv(tag, func() {
+               slice := in.Convert(reflect.TypeOf([]MapItem{})).Interface().([]MapItem)
+               for _, item := range slice {
+                       e.marshal("", reflect.ValueOf(item.Key))
+                       e.marshal("", reflect.ValueOf(item.Value))
+               }
+       })
+}
+
+func (e *encoder) structv(tag string, in reflect.Value) {
+       sinfo, err := getStructInfo(in.Type())
+       if err != nil {
+               panic(err)
+       }
+       e.mappingv(tag, func() {
+               for _, info := range sinfo.FieldsList {
+                       var value reflect.Value
+                       if info.Inline == nil {
+                               value = in.Field(info.Num)
+                       } else {
+                               value = in.FieldByIndex(info.Inline)
+                       }
+                       if info.OmitEmpty && isZero(value) {
+                               continue
+                       }
+                       e.marshal("", reflect.ValueOf(info.Key))
+                       e.flow = info.Flow
+                       e.marshal("", value)
+               }
+               if sinfo.InlineMap >= 0 {
+                       m := in.Field(sinfo.InlineMap)
+                       if m.Len() > 0 {
+                               e.flow = false
+                               keys := keyList(m.MapKeys())
+                               sort.Sort(keys)
+                               for _, k := range keys {
+                                       if _, found := sinfo.FieldsMap[k.String()]; found {
+                                               panic(fmt.Sprintf("Can't have key %q in inlined map; conflicts with struct field", k.String()))
+                                       }
+                                       e.marshal("", k)
+                                       e.flow = false
+                                       e.marshal("", m.MapIndex(k))
+                               }
+                       }
+               }
+       })
+}
+
+func (e *encoder) mappingv(tag string, f func()) {
+       implicit := tag == ""
+       style := yaml_BLOCK_MAPPING_STYLE
+       if e.flow {
+               e.flow = false
+               style = yaml_FLOW_MAPPING_STYLE
+       }
+       e.must(yaml_mapping_start_event_initialize(&e.event, nil, []byte(tag), implicit, style))
+       e.emit()
+       f()
+       e.must(yaml_mapping_end_event_initialize(&e.event))
+       e.emit()
+}
+
+func (e *encoder) slicev(tag string, in reflect.Value) {
+       implicit := tag == ""
+       style := yaml_BLOCK_SEQUENCE_STYLE
+       if e.flow {
+               e.flow = false
+               style = yaml_FLOW_SEQUENCE_STYLE
+       }
+       e.must(yaml_sequence_start_event_initialize(&e.event, nil, []byte(tag), implicit, style))
+       e.emit()
+       n := in.Len()
+       for i := 0; i < n; i++ {
+               e.marshal("", in.Index(i))
+       }
+       e.must(yaml_sequence_end_event_initialize(&e.event))
+       e.emit()
+}
+
+// isBase60 returns whether s is in base 60 notation as defined in YAML 1.1.
+//
+// The base 60 float notation in YAML 1.1 is a terrible idea and is unsupported
+// in YAML 1.2 and by this package, but these should be marshalled quoted for
+// the time being for compatibility with other parsers.
+func isBase60Float(s string) (result bool) {
+       // Fast path.
+       if s == "" {
+               return false
+       }
+       c := s[0]
+       if !(c == '+' || c == '-' || c >= '0' && c <= '9') || strings.IndexByte(s, ':') < 0 {
+               return false
+       }
+       // Do the full match.
+       return base60float.MatchString(s)
+}
+
+// From http://yaml.org/type/float.html, except the regular expression there
+// is bogus. In practice parsers do not enforce the "\.[0-9_]*" suffix.
+var base60float = regexp.MustCompile(`^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+(?:\.[0-9_]*)?$`)
+
+func (e *encoder) stringv(tag string, in reflect.Value) {
+       var style yaml_scalar_style_t
+       s := in.String()
+       rtag, rs := resolve("", s)
+       if rtag == yaml_BINARY_TAG {
+               if tag == "" || tag == yaml_STR_TAG {
+                       tag = rtag
+                       s = rs.(string)
+               } else if tag == yaml_BINARY_TAG {
+                       failf("explicitly tagged !!binary data must be base64-encoded")
+               } else {
+                       failf("cannot marshal invalid UTF-8 data as %s", shortTag(tag))
+               }
+       }
+       if tag == "" && (rtag != yaml_STR_TAG || isBase60Float(s)) {
+               style = yaml_DOUBLE_QUOTED_SCALAR_STYLE
+       } else if strings.Contains(s, "\n") {
+               style = yaml_LITERAL_SCALAR_STYLE
+       } else {
+               style = yaml_PLAIN_SCALAR_STYLE
+       }
+       e.emitScalar(s, "", tag, style)
+}
+
+func (e *encoder) boolv(tag string, in reflect.Value) {
+       var s string
+       if in.Bool() {
+               s = "true"
+       } else {
+               s = "false"
+       }
+       e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE)
+}
+
+func (e *encoder) intv(tag string, in reflect.Value) {
+       s := strconv.FormatInt(in.Int(), 10)
+       e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE)
+}
+
+func (e *encoder) uintv(tag string, in reflect.Value) {
+       s := strconv.FormatUint(in.Uint(), 10)
+       e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE)
+}
+
+func (e *encoder) floatv(tag string, in reflect.Value) {
+       // FIXME: Handle 64 bits here.
+       s := strconv.FormatFloat(float64(in.Float()), 'g', -1, 32)
+       switch s {
+       case "+Inf":
+               s = ".inf"
+       case "-Inf":
+               s = "-.inf"
+       case "NaN":
+               s = ".nan"
+       }
+       e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE)
+}
+
+func (e *encoder) nilv() {
+       e.emitScalar("null", "", "", yaml_PLAIN_SCALAR_STYLE)
+}
+
+func (e *encoder) emitScalar(value, anchor, tag string, style yaml_scalar_style_t) {
+       implicit := tag == ""
+       e.must(yaml_scalar_event_initialize(&e.event, []byte(anchor), []byte(tag), []byte(value), implicit, implicit, style))
+       e.emit()
+}
diff --git a/vendor/gopkg.in/yaml.v2/parserc.go b/vendor/gopkg.in/yaml.v2/parserc.go
new file mode 100644 (file)
index 0000000..0a7037a
--- /dev/null
@@ -0,0 +1,1096 @@
+package yaml
+
+import (
+       "bytes"
+)
+
+// The parser implements the following grammar:
+//
+// stream               ::= STREAM-START implicit_document? explicit_document* STREAM-END
+// implicit_document    ::= block_node DOCUMENT-END*
+// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*
+// block_node_or_indentless_sequence    ::=
+//                          ALIAS
+//                          | properties (block_content | indentless_block_sequence)?
+//                          | block_content
+//                          | indentless_block_sequence
+// block_node           ::= ALIAS
+//                          | properties block_content?
+//                          | block_content
+// flow_node            ::= ALIAS
+//                          | properties flow_content?
+//                          | flow_content
+// properties           ::= TAG ANCHOR? | ANCHOR TAG?
+// block_content        ::= block_collection | flow_collection | SCALAR
+// flow_content         ::= flow_collection | SCALAR
+// block_collection     ::= block_sequence | block_mapping
+// flow_collection      ::= flow_sequence | flow_mapping
+// block_sequence       ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END
+// indentless_sequence  ::= (BLOCK-ENTRY block_node?)+
+// block_mapping        ::= BLOCK-MAPPING_START
+//                          ((KEY block_node_or_indentless_sequence?)?
+//                          (VALUE block_node_or_indentless_sequence?)?)*
+//                          BLOCK-END
+// flow_sequence        ::= FLOW-SEQUENCE-START
+//                          (flow_sequence_entry FLOW-ENTRY)*
+//                          flow_sequence_entry?
+//                          FLOW-SEQUENCE-END
+// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?
+// flow_mapping         ::= FLOW-MAPPING-START
+//                          (flow_mapping_entry FLOW-ENTRY)*
+//                          flow_mapping_entry?
+//                          FLOW-MAPPING-END
+// flow_mapping_entry   ::= flow_node | KEY flow_node? (VALUE flow_node?)?
+
+// Peek the next token in the token queue.
+func peek_token(parser *yaml_parser_t) *yaml_token_t {
+       if parser.token_available || yaml_parser_fetch_more_tokens(parser) {
+               return &parser.tokens[parser.tokens_head]
+       }
+       return nil
+}
+
+// Remove the next token from the queue (must be called after peek_token).
+func skip_token(parser *yaml_parser_t) {
+       parser.token_available = false
+       parser.tokens_parsed++
+       parser.stream_end_produced = parser.tokens[parser.tokens_head].typ == yaml_STREAM_END_TOKEN
+       parser.tokens_head++
+}
+
+// Get the next event.
+func yaml_parser_parse(parser *yaml_parser_t, event *yaml_event_t) bool {
+       // Erase the event object.
+       *event = yaml_event_t{}
+
+       // No events after the end of the stream or error.
+       if parser.stream_end_produced || parser.error != yaml_NO_ERROR || parser.state == yaml_PARSE_END_STATE {
+               return true
+       }
+
+       // Generate the next event.
+       return yaml_parser_state_machine(parser, event)
+}
+
+// Set parser error.
+func yaml_parser_set_parser_error(parser *yaml_parser_t, problem string, problem_mark yaml_mark_t) bool {
+       parser.error = yaml_PARSER_ERROR
+       parser.problem = problem
+       parser.problem_mark = problem_mark
+       return false
+}
+
+func yaml_parser_set_parser_error_context(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string, problem_mark yaml_mark_t) bool {
+       parser.error = yaml_PARSER_ERROR
+       parser.context = context
+       parser.context_mark = context_mark
+       parser.problem = problem
+       parser.problem_mark = problem_mark
+       return false
+}
+
+// State dispatcher.
+func yaml_parser_state_machine(parser *yaml_parser_t, event *yaml_event_t) bool {
+       //trace("yaml_parser_state_machine", "state:", parser.state.String())
+
+       switch parser.state {
+       case yaml_PARSE_STREAM_START_STATE:
+               return yaml_parser_parse_stream_start(parser, event)
+
+       case yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE:
+               return yaml_parser_parse_document_start(parser, event, true)
+
+       case yaml_PARSE_DOCUMENT_START_STATE:
+               return yaml_parser_parse_document_start(parser, event, false)
+
+       case yaml_PARSE_DOCUMENT_CONTENT_STATE:
+               return yaml_parser_parse_document_content(parser, event)
+
+       case yaml_PARSE_DOCUMENT_END_STATE:
+               return yaml_parser_parse_document_end(parser, event)
+
+       case yaml_PARSE_BLOCK_NODE_STATE:
+               return yaml_parser_parse_node(parser, event, true, false)
+
+       case yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE:
+               return yaml_parser_parse_node(parser, event, true, true)
+
+       case yaml_PARSE_FLOW_NODE_STATE:
+               return yaml_parser_parse_node(parser, event, false, false)
+
+       case yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE:
+               return yaml_parser_parse_block_sequence_entry(parser, event, true)
+
+       case yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE:
+               return yaml_parser_parse_block_sequence_entry(parser, event, false)
+
+       case yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE:
+               return yaml_parser_parse_indentless_sequence_entry(parser, event)
+
+       case yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE:
+               return yaml_parser_parse_block_mapping_key(parser, event, true)
+
+       case yaml_PARSE_BLOCK_MAPPING_KEY_STATE:
+               return yaml_parser_parse_block_mapping_key(parser, event, false)
+
+       case yaml_PARSE_BLOCK_MAPPING_VALUE_STATE:
+               return yaml_parser_parse_block_mapping_value(parser, event)
+
+       case yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE:
+               return yaml_parser_parse_flow_sequence_entry(parser, event, true)
+
+       case yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE:
+               return yaml_parser_parse_flow_sequence_entry(parser, event, false)
+
+       case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE:
+               return yaml_parser_parse_flow_sequence_entry_mapping_key(parser, event)
+
+       case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE:
+               return yaml_parser_parse_flow_sequence_entry_mapping_value(parser, event)
+
+       case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE:
+               return yaml_parser_parse_flow_sequence_entry_mapping_end(parser, event)
+
+       case yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE:
+               return yaml_parser_parse_flow_mapping_key(parser, event, true)
+
+       case yaml_PARSE_FLOW_MAPPING_KEY_STATE:
+               return yaml_parser_parse_flow_mapping_key(parser, event, false)
+
+       case yaml_PARSE_FLOW_MAPPING_VALUE_STATE:
+               return yaml_parser_parse_flow_mapping_value(parser, event, false)
+
+       case yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE:
+               return yaml_parser_parse_flow_mapping_value(parser, event, true)
+
+       default:
+               panic("invalid parser state")
+       }
+       return false
+}
+
+// Parse the production:
+// stream   ::= STREAM-START implicit_document? explicit_document* STREAM-END
+//              ************
+func yaml_parser_parse_stream_start(parser *yaml_parser_t, event *yaml_event_t) bool {
+       token := peek_token(parser)
+       if token == nil {
+               return false
+       }
+       if token.typ != yaml_STREAM_START_TOKEN {
+               return yaml_parser_set_parser_error(parser, "did not find expected <stream-start>", token.start_mark)
+       }
+       parser.state = yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE
+       *event = yaml_event_t{
+               typ:        yaml_STREAM_START_EVENT,
+               start_mark: token.start_mark,
+               end_mark:   token.end_mark,
+               encoding:   token.encoding,
+       }
+       skip_token(parser)
+       return true
+}
+
+// Parse the productions:
+// implicit_document    ::= block_node DOCUMENT-END*
+//                          *
+// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*
+//                          *************************
+func yaml_parser_parse_document_start(parser *yaml_parser_t, event *yaml_event_t, implicit bool) bool {
+
+       token := peek_token(parser)
+       if token == nil {
+               return false
+       }
+
+       // Parse extra document end indicators.
+       if !implicit {
+               for token.typ == yaml_DOCUMENT_END_TOKEN {
+                       skip_token(parser)
+                       token = peek_token(parser)
+                       if token == nil {
+                               return false
+                       }
+               }
+       }
+
+       if implicit && token.typ != yaml_VERSION_DIRECTIVE_TOKEN &&
+               token.typ != yaml_TAG_DIRECTIVE_TOKEN &&
+               token.typ != yaml_DOCUMENT_START_TOKEN &&
+               token.typ != yaml_STREAM_END_TOKEN {
+               // Parse an implicit document.
+               if !yaml_parser_process_directives(parser, nil, nil) {
+                       return false
+               }
+               parser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE)
+               parser.state = yaml_PARSE_BLOCK_NODE_STATE
+
+               *event = yaml_event_t{
+                       typ:        yaml_DOCUMENT_START_EVENT,
+                       start_mark: token.start_mark,
+                       end_mark:   token.end_mark,
+               }
+
+       } else if token.typ != yaml_STREAM_END_TOKEN {
+               // Parse an explicit document.
+               var version_directive *yaml_version_directive_t
+               var tag_directives []yaml_tag_directive_t
+               start_mark := token.start_mark
+               if !yaml_parser_process_directives(parser, &version_directive, &tag_directives) {
+                       return false
+               }
+               token = peek_token(parser)
+               if token == nil {
+                       return false
+               }
+               if token.typ != yaml_DOCUMENT_START_TOKEN {
+                       yaml_parser_set_parser_error(parser,
+                               "did not find expected <document start>", token.start_mark)
+                       return false
+               }
+               parser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE)
+               parser.state = yaml_PARSE_DOCUMENT_CONTENT_STATE
+               end_mark := token.end_mark
+
+               *event = yaml_event_t{
+                       typ:               yaml_DOCUMENT_START_EVENT,
+                       start_mark:        start_mark,
+                       end_mark:          end_mark,
+                       version_directive: version_directive,
+                       tag_directives:    tag_directives,
+                       implicit:          false,
+               }
+               skip_token(parser)
+
+       } else {
+               // Parse the stream end.
+               parser.state = yaml_PARSE_END_STATE
+               *event = yaml_event_t{
+                       typ:        yaml_STREAM_END_EVENT,
+                       start_mark: token.start_mark,
+                       end_mark:   token.end_mark,
+               }
+               skip_token(parser)
+       }
+
+       return true
+}
+
+// Parse the productions:
+// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*
+//                                                    ***********
+//
+func yaml_parser_parse_document_content(parser *yaml_parser_t, event *yaml_event_t) bool {
+       token := peek_token(parser)
+       if token == nil {
+               return false
+       }
+       if token.typ == yaml_VERSION_DIRECTIVE_TOKEN ||
+               token.typ == yaml_TAG_DIRECTIVE_TOKEN ||
+               token.typ == yaml_DOCUMENT_START_TOKEN ||
+               token.typ == yaml_DOCUMENT_END_TOKEN ||
+               token.typ == yaml_STREAM_END_TOKEN {
+               parser.state = parser.states[len(parser.states)-1]
+               parser.states = parser.states[:len(parser.states)-1]
+               return yaml_parser_process_empty_scalar(parser, event,
+                       token.start_mark)
+       }
+       return yaml_parser_parse_node(parser, event, true, false)
+}
+
+// Parse the productions:
+// implicit_document    ::= block_node DOCUMENT-END*
+//                                     *************
+// explicit_document    ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*
+//
+func yaml_parser_parse_document_end(parser *yaml_parser_t, event *yaml_event_t) bool {
+       token := peek_token(parser)
+       if token == nil {
+               return false
+       }
+
+       start_mark := token.start_mark
+       end_mark := token.start_mark
+
+       implicit := true
+       if token.typ == yaml_DOCUMENT_END_TOKEN {
+               end_mark = token.end_mark
+               skip_token(parser)
+               implicit = false
+       }
+
+       parser.tag_directives = parser.tag_directives[:0]
+
+       parser.state = yaml_PARSE_DOCUMENT_START_STATE
+       *event = yaml_event_t{
+               typ:        yaml_DOCUMENT_END_EVENT,
+               start_mark: start_mark,
+               end_mark:   end_mark,
+               implicit:   implicit,
+       }
+       return true
+}
+
+// Parse the productions:
+// block_node_or_indentless_sequence    ::=
+//                          ALIAS
+//                          *****
+//                          | properties (block_content | indentless_block_sequence)?
+//                            **********  *
+//                          | block_content | indentless_block_sequence
+//                            *
+// block_node           ::= ALIAS
+//                          *****
+//                          | properties block_content?
+//                            ********** *
+//                          | block_content
+//                            *
+// flow_node            ::= ALIAS
+//                          *****
+//                          | properties flow_content?
+//                            ********** *
+//                          | flow_content
+//                            *
+// properties           ::= TAG ANCHOR? | ANCHOR TAG?
+//                          *************************
+// block_content        ::= block_collection | flow_collection | SCALAR
+//                                                               ******
+// flow_content         ::= flow_collection | SCALAR
+//                                            ******
+func yaml_parser_parse_node(parser *yaml_parser_t, event *yaml_event_t, block, indentless_sequence bool) bool {
+       //defer trace("yaml_parser_parse_node", "block:", block, "indentless_sequence:", indentless_sequence)()
+
+       token := peek_token(parser)
+       if token == nil {
+               return false
+       }
+
+       if token.typ == yaml_ALIAS_TOKEN {
+               parser.state = parser.states[len(parser.states)-1]
+               parser.states = parser.states[:len(parser.states)-1]
+               *event = yaml_event_t{
+                       typ:        yaml_ALIAS_EVENT,
+                       start_mark: token.start_mark,
+                       end_mark:   token.end_mark,
+                       anchor:     token.value,
+               }
+               skip_token(parser)
+               return true
+       }
+
+       start_mark := token.start_mark
+       end_mark := token.start_mark
+
+       var tag_token bool
+       var tag_handle, tag_suffix, anchor []byte
+       var tag_mark yaml_mark_t
+       if token.typ == yaml_ANCHOR_TOKEN {
+               anchor = token.value
+               start_mark = token.start_mark
+               end_mark = token.end_mark
+               skip_token(parser)
+               token = peek_token(parser)
+               if token == nil {
+                       return false
+               }
+               if token.typ == yaml_TAG_TOKEN {
+                       tag_token = true
+                       tag_handle = token.value
+                       tag_suffix = token.suffix
+                       tag_mark = token.start_mark
+                       end_mark = token.end_mark
+                       skip_token(parser)
+                       token = peek_token(parser)
+                       if token == nil {
+                               return false
+                       }
+               }
+       } else if token.typ == yaml_TAG_TOKEN {
+               tag_token = true
+               tag_handle = token.value
+               tag_suffix = token.suffix
+               start_mark = token.start_mark
+               tag_mark = token.start_mark
+               end_mark = token.end_mark
+               skip_token(parser)
+               token = peek_token(parser)
+               if token == nil {
+                       return false
+               }
+               if token.typ == yaml_ANCHOR_TOKEN {
+                       anchor = token.value
+                       end_mark = token.end_mark
+                       skip_token(parser)
+                       token = peek_token(parser)
+                       if token == nil {
+                               return false
+                       }
+               }
+       }
+
+       var tag []byte
+       if tag_token {
+               if len(tag_handle) == 0 {
+                       tag = tag_suffix
+                       tag_suffix = nil
+               } else {
+                       for i := range parser.tag_directives {
+                               if bytes.Equal(parser.tag_directives[i].handle, tag_handle) {
+                                       tag = append([]byte(nil), parser.tag_directives[i].prefix...)
+                                       tag = append(tag, tag_suffix...)
+                                       break
+                               }
+                       }
+                       if len(tag) == 0 {
+                               yaml_parser_set_parser_error_context(parser,
+                                       "while parsing a node", start_mark,
+                                       "found undefined tag handle", tag_mark)
+                               return false
+                       }
+               }
+       }
+
+       implicit := len(tag) == 0
+       if indentless_sequence && token.typ == yaml_BLOCK_ENTRY_TOKEN {
+               end_mark = token.end_mark
+               parser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE
+               *event = yaml_event_t{
+                       typ:        yaml_SEQUENCE_START_EVENT,
+                       start_mark: start_mark,
+                       end_mark:   end_mark,
+                       anchor:     anchor,
+                       tag:        tag,
+                       implicit:   implicit,
+                       style:      yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE),
+               }
+               return true
+       }
+       if token.typ == yaml_SCALAR_TOKEN {
+               var plain_implicit, quoted_implicit bool
+               end_mark = token.end_mark
+               if (len(tag) == 0 && token.style == yaml_PLAIN_SCALAR_STYLE) || (len(tag) == 1 && tag[0] == '!') {
+                       plain_implicit = true
+               } else if len(tag) == 0 {
+                       quoted_implicit = true
+               }
+               parser.state = parser.states[len(parser.states)-1]
+               parser.states = parser.states[:len(parser.states)-1]
+
+               *event = yaml_event_t{
+                       typ:             yaml_SCALAR_EVENT,
+                       start_mark:      start_mark,
+                       end_mark:        end_mark,
+                       anchor:          anchor,
+                       tag:             tag,
+                       value:           token.value,
+                       implicit:        plain_implicit,
+                       quoted_implicit: quoted_implicit,
+                       style:           yaml_style_t(token.style),
+               }
+               skip_token(parser)
+               return true
+       }
+       if token.typ == yaml_FLOW_SEQUENCE_START_TOKEN {
+               // [Go] Some of the events below can be merged as they differ only on style.
+               end_mark = token.end_mark
+               parser.state = yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE
+               *event = yaml_event_t{
+                       typ:        yaml_SEQUENCE_START_EVENT,
+                       start_mark: start_mark,
+                       end_mark:   end_mark,
+                       anchor:     anchor,
+                       tag:        tag,
+                       implicit:   implicit,
+                       style:      yaml_style_t(yaml_FLOW_SEQUENCE_STYLE),
+               }
+               return true
+       }
+       if token.typ == yaml_FLOW_MAPPING_START_TOKEN {
+               end_mark = token.end_mark
+               parser.state = yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE
+               *event = yaml_event_t{
+                       typ:        yaml_MAPPING_START_EVENT,
+                       start_mark: start_mark,
+                       end_mark:   end_mark,
+                       anchor:     anchor,
+                       tag:        tag,
+                       implicit:   implicit,
+                       style:      yaml_style_t(yaml_FLOW_MAPPING_STYLE),
+               }
+               return true
+       }
+       if block && token.typ == yaml_BLOCK_SEQUENCE_START_TOKEN {
+               end_mark = token.end_mark
+               parser.state = yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE
+               *event = yaml_event_t{
+                       typ:        yaml_SEQUENCE_START_EVENT,
+                       start_mark: start_mark,
+                       end_mark:   end_mark,
+                       anchor:     anchor,
+                       tag:        tag,
+                       implicit:   implicit,
+                       style:      yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE),
+               }
+               return true
+       }
+       if block && token.typ == yaml_BLOCK_MAPPING_START_TOKEN {
+               end_mark = token.end_mark
+               parser.state = yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE
+               *event = yaml_event_t{
+                       typ:        yaml_MAPPING_START_EVENT,
+                       start_mark: start_mark,
+                       end_mark:   end_mark,
+                       anchor:     anchor,
+                       tag:        tag,
+                       implicit:   implicit,
+                       style:      yaml_style_t(yaml_BLOCK_MAPPING_STYLE),
+               }
+               return true
+       }
+       if len(anchor) > 0 || len(tag) > 0 {
+               parser.state = parser.states[len(parser.states)-1]
+               parser.states = parser.states[:len(parser.states)-1]
+
+               *event = yaml_event_t{
+                       typ:             yaml_SCALAR_EVENT,
+                       start_mark:      start_mark,
+                       end_mark:        end_mark,
+                       anchor:          anchor,
+                       tag:             tag,
+                       implicit:        implicit,
+                       quoted_implicit: false,
+                       style:           yaml_style_t(yaml_PLAIN_SCALAR_STYLE),
+               }
+               return true
+       }
+
+       context := "while parsing a flow node"
+       if block {
+               context = "while parsing a block node"
+       }
+       yaml_parser_set_parser_error_context(parser, context, start_mark,
+               "did not find expected node content", token.start_mark)
+       return false
+}
+
+// Parse the productions:
+// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END
+//                    ********************  *********** *             *********
+//
+func yaml_parser_parse_block_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {
+       if first {
+               token := peek_token(parser)
+               parser.marks = append(parser.marks, token.start_mark)
+               skip_token(parser)
+       }
+
+       token := peek_token(parser)
+       if token == nil {
+               return false
+       }
+
+       if token.typ == yaml_BLOCK_ENTRY_TOKEN {
+               mark := token.end_mark
+               skip_token(parser)
+               token = peek_token(parser)
+               if token == nil {
+                       return false
+               }
+               if token.typ != yaml_BLOCK_ENTRY_TOKEN && token.typ != yaml_BLOCK_END_TOKEN {
+                       parser.states = append(parser.states, yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE)
+                       return yaml_parser_parse_node(parser, event, true, false)
+               } else {
+                       parser.state = yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE
+                       return yaml_parser_process_empty_scalar(parser, event, mark)
+               }
+       }
+       if token.typ == yaml_BLOCK_END_TOKEN {
+               parser.state = parser.states[len(parser.states)-1]
+               parser.states = parser.states[:len(parser.states)-1]
+               parser.marks = parser.marks[:len(parser.marks)-1]
+
+               *event = yaml_event_t{
+                       typ:        yaml_SEQUENCE_END_EVENT,
+                       start_mark: token.start_mark,
+                       end_mark:   token.end_mark,
+               }
+
+               skip_token(parser)
+               return true
+       }
+
+       context_mark := parser.marks[len(parser.marks)-1]
+       parser.marks = parser.marks[:len(parser.marks)-1]
+       return yaml_parser_set_parser_error_context(parser,
+               "while parsing a block collection", context_mark,
+               "did not find expected '-' indicator", token.start_mark)
+}
+
+// Parse the productions:
+// indentless_sequence  ::= (BLOCK-ENTRY block_node?)+
+//                           *********** *
+func yaml_parser_parse_indentless_sequence_entry(parser *yaml_parser_t, event *yaml_event_t) bool {
+       token := peek_token(parser)
+       if token == nil {
+               return false
+       }
+
+       if token.typ == yaml_BLOCK_ENTRY_TOKEN {
+               mark := token.end_mark
+               skip_token(parser)
+               token = peek_token(parser)
+               if token == nil {
+                       return false
+               }
+               if token.typ != yaml_BLOCK_ENTRY_TOKEN &&
+                       token.typ != yaml_KEY_TOKEN &&
+                       token.typ != yaml_VALUE_TOKEN &&
+                       token.typ != yaml_BLOCK_END_TOKEN {
+                       parser.states = append(parser.states, yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE)
+                       return yaml_parser_parse_node(parser, event, true, false)
+               }
+               parser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE
+               return yaml_parser_process_empty_scalar(parser, event, mark)
+       }
+       parser.state = parser.states[len(parser.states)-1]
+       parser.states = parser.states[:len(parser.states)-1]
+
+       *event = yaml_event_t{
+               typ:        yaml_SEQUENCE_END_EVENT,
+               start_mark: token.start_mark,
+               end_mark:   token.start_mark, // [Go] Shouldn't this be token.end_mark?
+       }
+       return true
+}
+
+// Parse the productions:
+// block_mapping        ::= BLOCK-MAPPING_START
+//                          *******************
+//                          ((KEY block_node_or_indentless_sequence?)?
+//                            *** *
+//                          (VALUE block_node_or_indentless_sequence?)?)*
+//
+//                          BLOCK-END
+//                          *********
+//
+func yaml_parser_parse_block_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {
+       if first {
+               token := peek_token(parser)
+               parser.marks = append(parser.marks, token.start_mark)
+               skip_token(parser)
+       }
+
+       token := peek_token(parser)
+       if token == nil {
+               return false
+       }
+
+       if token.typ == yaml_KEY_TOKEN {
+               mark := token.end_mark
+               skip_token(parser)
+               token = peek_token(parser)
+               if token == nil {
+                       return false
+               }
+               if token.typ != yaml_KEY_TOKEN &&
+                       token.typ != yaml_VALUE_TOKEN &&
+                       token.typ != yaml_BLOCK_END_TOKEN {
+                       parser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_VALUE_STATE)
+                       return yaml_parser_parse_node(parser, event, true, true)
+               } else {
+                       parser.state = yaml_PARSE_BLOCK_MAPPING_VALUE_STATE
+                       return yaml_parser_process_empty_scalar(parser, event, mark)
+               }
+       } else if token.typ == yaml_BLOCK_END_TOKEN {
+               parser.state = parser.states[len(parser.states)-1]
+               parser.states = parser.states[:len(parser.states)-1]
+               parser.marks = parser.marks[:len(parser.marks)-1]
+               *event = yaml_event_t{
+                       typ:        yaml_MAPPING_END_EVENT,
+                       start_mark: token.start_mark,
+                       end_mark:   token.end_mark,
+               }
+               skip_token(parser)
+               return true
+       }
+
+       context_mark := parser.marks[len(parser.marks)-1]
+       parser.marks = parser.marks[:len(parser.marks)-1]
+       return yaml_parser_set_parser_error_context(parser,
+               "while parsing a block mapping", context_mark,
+               "did not find expected key", token.start_mark)
+}
+
+// Parse the productions:
+// block_mapping        ::= BLOCK-MAPPING_START
+//
+//                          ((KEY block_node_or_indentless_sequence?)?
+//
+//                          (VALUE block_node_or_indentless_sequence?)?)*
+//                           ***** *
+//                          BLOCK-END
+//
+//
+func yaml_parser_parse_block_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool {
+       token := peek_token(parser)
+       if token == nil {
+               return false
+       }
+       if token.typ == yaml_VALUE_TOKEN {
+               mark := token.end_mark
+               skip_token(parser)
+               token = peek_token(parser)
+               if token == nil {
+                       return false
+               }
+               if token.typ != yaml_KEY_TOKEN &&
+                       token.typ != yaml_VALUE_TOKEN &&
+                       token.typ != yaml_BLOCK_END_TOKEN {
+                       parser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_KEY_STATE)
+                       return yaml_parser_parse_node(parser, event, true, true)
+               }
+               parser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE
+               return yaml_parser_process_empty_scalar(parser, event, mark)
+       }
+       parser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE
+       return yaml_parser_process_empty_scalar(parser, event, token.start_mark)
+}
+
+// Parse the productions:
+// flow_sequence        ::= FLOW-SEQUENCE-START
+//                          *******************
+//                          (flow_sequence_entry FLOW-ENTRY)*
+//                           *                   **********
+//                          flow_sequence_entry?
+//                          *
+//                          FLOW-SEQUENCE-END
+//                          *****************
+// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?
+//                          *
+//
+func yaml_parser_parse_flow_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {
+       if first {
+               token := peek_token(parser)
+               parser.marks = append(parser.marks, token.start_mark)
+               skip_token(parser)
+       }
+       token := peek_token(parser)
+       if token == nil {
+               return false
+       }
+       if token.typ != yaml_FLOW_SEQUENCE_END_TOKEN {
+               if !first {
+                       if token.typ == yaml_FLOW_ENTRY_TOKEN {
+                               skip_token(parser)
+                               token = peek_token(parser)
+                               if token == nil {
+                                       return false
+                               }
+                       } else {
+                               context_mark := parser.marks[len(parser.marks)-1]
+                               parser.marks = parser.marks[:len(parser.marks)-1]
+                               return yaml_parser_set_parser_error_context(parser,
+                                       "while parsing a flow sequence", context_mark,
+                                       "did not find expected ',' or ']'", token.start_mark)
+                       }
+               }
+
+               if token.typ == yaml_KEY_TOKEN {
+                       parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE
+                       *event = yaml_event_t{
+                               typ:        yaml_MAPPING_START_EVENT,
+                               start_mark: token.start_mark,
+                               end_mark:   token.end_mark,
+                               implicit:   true,
+                               style:      yaml_style_t(yaml_FLOW_MAPPING_STYLE),
+                       }
+                       skip_token(parser)
+                       return true
+               } else if token.typ != yaml_FLOW_SEQUENCE_END_TOKEN {
+                       parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE)
+                       return yaml_parser_parse_node(parser, event, false, false)
+               }
+       }
+
+       parser.state = parser.states[len(parser.states)-1]
+       parser.states = parser.states[:len(parser.states)-1]
+       parser.marks = parser.marks[:len(parser.marks)-1]
+
+       *event = yaml_event_t{
+               typ:        yaml_SEQUENCE_END_EVENT,
+               start_mark: token.start_mark,
+               end_mark:   token.end_mark,
+       }
+
+       skip_token(parser)
+       return true
+}
+
+//
+// Parse the productions:
+// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?
+//                                      *** *
+//
+func yaml_parser_parse_flow_sequence_entry_mapping_key(parser *yaml_parser_t, event *yaml_event_t) bool {
+       token := peek_token(parser)
+       if token == nil {
+               return false
+       }
+       if token.typ != yaml_VALUE_TOKEN &&
+               token.typ != yaml_FLOW_ENTRY_TOKEN &&
+               token.typ != yaml_FLOW_SEQUENCE_END_TOKEN {
+               parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE)
+               return yaml_parser_parse_node(parser, event, false, false)
+       }
+       mark := token.end_mark
+       skip_token(parser)
+       parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE
+       return yaml_parser_process_empty_scalar(parser, event, mark)
+}
+
+// Parse the productions:
+// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?
+//                                                      ***** *
+//
+func yaml_parser_parse_flow_sequence_entry_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool {
+       token := peek_token(parser)
+       if token == nil {
+               return false
+       }
+       if token.typ == yaml_VALUE_TOKEN {
+               skip_token(parser)
+               token := peek_token(parser)
+               if token == nil {
+                       return false
+               }
+               if token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_SEQUENCE_END_TOKEN {
+                       parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE)
+                       return yaml_parser_parse_node(parser, event, false, false)
+               }
+       }
+       parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE
+       return yaml_parser_process_empty_scalar(parser, event, token.start_mark)
+}
+
+// Parse the productions:
+// flow_sequence_entry  ::= flow_node | KEY flow_node? (VALUE flow_node?)?
+//                                                                      *
+//
+func yaml_parser_parse_flow_sequence_entry_mapping_end(parser *yaml_parser_t, event *yaml_event_t) bool {
+       token := peek_token(parser)
+       if token == nil {
+               return false
+       }
+       parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE
+       *event = yaml_event_t{
+               typ:        yaml_MAPPING_END_EVENT,
+               start_mark: token.start_mark,
+               end_mark:   token.start_mark, // [Go] Shouldn't this be end_mark?
+       }
+       return true
+}
+
+// Parse the productions:
+// flow_mapping         ::= FLOW-MAPPING-START
+//                          ******************
+//                          (flow_mapping_entry FLOW-ENTRY)*
+//                           *                  **********
+//                          flow_mapping_entry?
+//                          ******************
+//                          FLOW-MAPPING-END
+//                          ****************
+// flow_mapping_entry   ::= flow_node | KEY flow_node? (VALUE flow_node?)?
+//                          *           *** *
+//
+func yaml_parser_parse_flow_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool {
+       if first {
+               token := peek_token(parser)
+               parser.marks = append(parser.marks, token.start_mark)
+               skip_token(parser)
+       }
+
+       token := peek_token(parser)
+       if token == nil {
+               return false
+       }
+
+       if token.typ != yaml_FLOW_MAPPING_END_TOKEN {
+               if !first {
+                       if token.typ == yaml_FLOW_ENTRY_TOKEN {
+                               skip_token(parser)
+                               token = peek_token(parser)
+                               if token == nil {
+                                       return false
+                               }
+                       } else {
+                               context_mark := parser.marks[len(parser.marks)-1]
+                               parser.marks = parser.marks[:len(parser.marks)-1]
+                               return yaml_parser_set_parser_error_context(parser,
+                                       "while parsing a flow mapping", context_mark,
+                                       "did not find expected ',' or '}'", token.start_mark)
+                       }
+               }
+
+               if token.typ == yaml_KEY_TOKEN {
+                       skip_token(parser)
+                       token = peek_token(parser)
+                       if token == nil {
+                               return false
+                       }
+                       if token.typ != yaml_VALUE_TOKEN &&
+                               token.typ != yaml_FLOW_ENTRY_TOKEN &&
+                               token.typ != yaml_FLOW_MAPPING_END_TOKEN {
+                               parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_VALUE_STATE)
+                               return yaml_parser_parse_node(parser, event, false, false)
+                       } else {
+                               parser.state = yaml_PARSE_FLOW_MAPPING_VALUE_STATE
+                               return yaml_parser_process_empty_scalar(parser, event, token.start_mark)
+                       }
+               } else if token.typ != yaml_FLOW_MAPPING_END_TOKEN {
+                       parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE)
+                       return yaml_parser_parse_node(parser, event, false, false)
+               }
+       }
+
+       parser.state = parser.states[len(parser.states)-1]
+       parser.states = parser.states[:len(parser.states)-1]
+       parser.marks = parser.marks[:len(parser.marks)-1]
+       *event = yaml_event_t{
+               typ:        yaml_MAPPING_END_EVENT,
+               start_mark: token.start_mark,
+               end_mark:   token.end_mark,
+       }
+       skip_token(parser)
+       return true
+}
+
+// Parse the productions:
+// flow_mapping_entry   ::= flow_node | KEY flow_node? (VALUE flow_node?)?
+//                                   *                  ***** *
+//
+func yaml_parser_parse_flow_mapping_value(parser *yaml_parser_t, event *yaml_event_t, empty bool) bool {
+       token := peek_token(parser)
+       if token == nil {
+               return false
+       }
+       if empty {
+               parser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE
+               return yaml_parser_process_empty_scalar(parser, event, token.start_mark)
+       }
+       if token.typ == yaml_VALUE_TOKEN {
+               skip_token(parser)
+               token = peek_token(parser)
+               if token == nil {
+                       return false
+               }
+               if token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_MAPPING_END_TOKEN {
+                       parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_KEY_STATE)
+                       return yaml_parser_parse_node(parser, event, false, false)
+               }
+       }
+       parser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE
+       return yaml_parser_process_empty_scalar(parser, event, token.start_mark)
+}
+
+// Generate an empty scalar event.
+func yaml_parser_process_empty_scalar(parser *yaml_parser_t, event *yaml_event_t, mark yaml_mark_t) bool {
+       *event = yaml_event_t{
+               typ:        yaml_SCALAR_EVENT,
+               start_mark: mark,
+               end_mark:   mark,
+               value:      nil, // Empty
+               implicit:   true,
+               style:      yaml_style_t(yaml_PLAIN_SCALAR_STYLE),
+       }
+       return true
+}
+
+var default_tag_directives = []yaml_tag_directive_t{
+       {[]byte("!"), []byte("!")},
+       {[]byte("!!"), []byte("tag:yaml.org,2002:")},
+}
+
+// Parse directives.
+func yaml_parser_process_directives(parser *yaml_parser_t,
+       version_directive_ref **yaml_version_directive_t,
+       tag_directives_ref *[]yaml_tag_directive_t) bool {
+
+       var version_directive *yaml_version_directive_t
+       var tag_directives []yaml_tag_directive_t
+
+       token := peek_token(parser)
+       if token == nil {
+               return false
+       }
+
+       for token.typ == yaml_VERSION_DIRECTIVE_TOKEN || token.typ == yaml_TAG_DIRECTIVE_TOKEN {
+               if token.typ == yaml_VERSION_DIRECTIVE_TOKEN {
+                       if version_directive != nil {
+                               yaml_parser_set_parser_error(parser,
+                                       "found duplicate %YAML directive", token.start_mark)
+                               return false
+                       }
+                       if token.major != 1 || token.minor != 1 {
+                               yaml_parser_set_parser_error(parser,
+                                       "found incompatible YAML document", token.start_mark)
+                               return false
+                       }
+                       version_directive = &yaml_version_directive_t{
+                               major: token.major,
+                               minor: token.minor,
+                       }
+               } else if token.typ == yaml_TAG_DIRECTIVE_TOKEN {
+                       value := yaml_tag_directive_t{
+                               handle: token.value,
+                               prefix: token.prefix,
+                       }
+                       if !yaml_parser_append_tag_directive(parser, value, false, token.start_mark) {
+                               return false
+                       }
+                       tag_directives = append(tag_directives, value)
+               }
+
+               skip_token(parser)
+               token = peek_token(parser)
+               if token == nil {
+                       return false
+               }
+       }
+
+       for i := range default_tag_directives {
+               if !yaml_parser_append_tag_directive(parser, default_tag_directives[i], true, token.start_mark) {
+                       return false
+               }
+       }
+
+       if version_directive_ref != nil {
+               *version_directive_ref = version_directive
+       }
+       if tag_directives_ref != nil {
+               *tag_directives_ref = tag_directives
+       }
+       return true
+}
+
+// Append a tag directive to the directives stack.
+func yaml_parser_append_tag_directive(parser *yaml_parser_t, value yaml_tag_directive_t, allow_duplicates bool, mark yaml_mark_t) bool {
+       for i := range parser.tag_directives {
+               if bytes.Equal(value.handle, parser.tag_directives[i].handle) {
+                       if allow_duplicates {
+                               return true
+                       }
+                       return yaml_parser_set_parser_error(parser, "found duplicate %TAG directive", mark)
+               }
+       }
+
+       // [Go] I suspect the copy is unnecessary. This was likely done
+       // because there was no way to track ownership of the data.
+       value_copy := yaml_tag_directive_t{
+               handle: make([]byte, len(value.handle)),
+               prefix: make([]byte, len(value.prefix)),
+       }
+       copy(value_copy.handle, value.handle)
+       copy(value_copy.prefix, value.prefix)
+       parser.tag_directives = append(parser.tag_directives, value_copy)
+       return true
+}
diff --git a/vendor/gopkg.in/yaml.v2/readerc.go b/vendor/gopkg.in/yaml.v2/readerc.go
new file mode 100644 (file)
index 0000000..f450791
--- /dev/null
@@ -0,0 +1,394 @@
+package yaml
+
+import (
+       "io"
+)
+
+// Set the reader error and return 0.
+func yaml_parser_set_reader_error(parser *yaml_parser_t, problem string, offset int, value int) bool {
+       parser.error = yaml_READER_ERROR
+       parser.problem = problem
+       parser.problem_offset = offset
+       parser.problem_value = value
+       return false
+}
+
+// Byte order marks.
+const (
+       bom_UTF8    = "\xef\xbb\xbf"
+       bom_UTF16LE = "\xff\xfe"
+       bom_UTF16BE = "\xfe\xff"
+)
+
+// Determine the input stream encoding by checking the BOM symbol. If no BOM is
+// found, the UTF-8 encoding is assumed. Return 1 on success, 0 on failure.
+func yaml_parser_determine_encoding(parser *yaml_parser_t) bool {
+       // Ensure that we had enough bytes in the raw buffer.
+       for !parser.eof && len(parser.raw_buffer)-parser.raw_buffer_pos < 3 {
+               if !yaml_parser_update_raw_buffer(parser) {
+                       return false
+               }
+       }
+
+       // Determine the encoding.
+       buf := parser.raw_buffer
+       pos := parser.raw_buffer_pos
+       avail := len(buf) - pos
+       if avail >= 2 && buf[pos] == bom_UTF16LE[0] && buf[pos+1] == bom_UTF16LE[1] {
+               parser.encoding = yaml_UTF16LE_ENCODING
+               parser.raw_buffer_pos += 2
+               parser.offset += 2
+       } else if avail >= 2 && buf[pos] == bom_UTF16BE[0] && buf[pos+1] == bom_UTF16BE[1] {
+               parser.encoding = yaml_UTF16BE_ENCODING
+               parser.raw_buffer_pos += 2
+               parser.offset += 2
+       } else if avail >= 3 && buf[pos] == bom_UTF8[0] && buf[pos+1] == bom_UTF8[1] && buf[pos+2] == bom_UTF8[2] {
+               parser.encoding = yaml_UTF8_ENCODING
+               parser.raw_buffer_pos += 3
+               parser.offset += 3
+       } else {
+               parser.encoding = yaml_UTF8_ENCODING
+       }
+       return true
+}
+
+// Update the raw buffer.
+func yaml_parser_update_raw_buffer(parser *yaml_parser_t) bool {
+       size_read := 0
+
+       // Return if the raw buffer is full.
+       if parser.raw_buffer_pos == 0 && len(parser.raw_buffer) == cap(parser.raw_buffer) {
+               return true
+       }
+
+       // Return on EOF.
+       if parser.eof {
+               return true
+       }
+
+       // Move the remaining bytes in the raw buffer to the beginning.
+       if parser.raw_buffer_pos > 0 && parser.raw_buffer_pos < len(parser.raw_buffer) {
+               copy(parser.raw_buffer, parser.raw_buffer[parser.raw_buffer_pos:])
+       }
+       parser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)-parser.raw_buffer_pos]
+       parser.raw_buffer_pos = 0
+
+       // Call the read handler to fill the buffer.
+       size_read, err := parser.read_handler(parser, parser.raw_buffer[len(parser.raw_buffer):cap(parser.raw_buffer)])
+       parser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)+size_read]
+       if err == io.EOF {
+               parser.eof = true
+       } else if err != nil {
+               return yaml_parser_set_reader_error(parser, "input error: "+err.Error(), parser.offset, -1)
+       }
+       return true
+}
+
+// Ensure that the buffer contains at least `length` characters.
+// Return true on success, false on failure.
+//
+// The length is supposed to be significantly less that the buffer size.
+func yaml_parser_update_buffer(parser *yaml_parser_t, length int) bool {
+       if parser.read_handler == nil {
+               panic("read handler must be set")
+       }
+
+       // If the EOF flag is set and the raw buffer is empty, do nothing.
+       if parser.eof && parser.raw_buffer_pos == len(parser.raw_buffer) {
+               return true
+       }
+
+       // Return if the buffer contains enough characters.
+       if parser.unread >= length {
+               return true
+       }
+
+       // Determine the input encoding if it is not known yet.
+       if parser.encoding == yaml_ANY_ENCODING {
+               if !yaml_parser_determine_encoding(parser) {
+                       return false
+               }
+       }
+
+       // Move the unread characters to the beginning of the buffer.
+       buffer_len := len(parser.buffer)
+       if parser.buffer_pos > 0 && parser.buffer_pos < buffer_len {
+               copy(parser.buffer, parser.buffer[parser.buffer_pos:])
+               buffer_len -= parser.buffer_pos
+               parser.buffer_pos = 0
+       } else if parser.buffer_pos == buffer_len {
+               buffer_len = 0
+               parser.buffer_pos = 0
+       }
+
+       // Open the whole buffer for writing, and cut it before returning.
+       parser.buffer = parser.buffer[:cap(parser.buffer)]
+
+       // Fill the buffer until it has enough characters.
+       first := true
+       for parser.unread < length {
+
+               // Fill the raw buffer if necessary.
+               if !first || parser.raw_buffer_pos == len(parser.raw_buffer) {
+                       if !yaml_parser_update_raw_buffer(parser) {
+                               parser.buffer = parser.buffer[:buffer_len]
+                               return false
+                       }
+               }
+               first = false
+
+               // Decode the raw buffer.
+       inner:
+               for parser.raw_buffer_pos != len(parser.raw_buffer) {
+                       var value rune
+                       var width int
+
+                       raw_unread := len(parser.raw_buffer) - parser.raw_buffer_pos
+
+                       // Decode the next character.
+                       switch parser.encoding {
+                       case yaml_UTF8_ENCODING:
+                               // Decode a UTF-8 character.  Check RFC 3629
+                               // (http://www.ietf.org/rfc/rfc3629.txt) for more details.
+                               //
+                               // The following table (taken from the RFC) is used for
+                               // decoding.
+                               //
+                               //    Char. number range |        UTF-8 octet sequence
+                               //      (hexadecimal)    |              (binary)
+                               //   --------------------+------------------------------------
+                               //   0000 0000-0000 007F | 0xxxxxxx
+                               //   0000 0080-0000 07FF | 110xxxxx 10xxxxxx
+                               //   0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
+                               //   0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+                               //
+                               // Additionally, the characters in the range 0xD800-0xDFFF
+                               // are prohibited as they are reserved for use with UTF-16
+                               // surrogate pairs.
+
+                               // Determine the length of the UTF-8 sequence.
+                               octet := parser.raw_buffer[parser.raw_buffer_pos]
+                               switch {
+                               case octet&0x80 == 0x00:
+                                       width = 1
+                               case octet&0xE0 == 0xC0:
+                                       width = 2
+                               case octet&0xF0 == 0xE0:
+                                       width = 3
+                               case octet&0xF8 == 0xF0:
+                                       width = 4
+                               default:
+                                       // The leading octet is invalid.
+                                       return yaml_parser_set_reader_error(parser,
+                                               "invalid leading UTF-8 octet",
+                                               parser.offset, int(octet))
+                               }
+
+                               // Check if the raw buffer contains an incomplete character.
+                               if width > raw_unread {
+                                       if parser.eof {
+                                               return yaml_parser_set_reader_error(parser,
+                                                       "incomplete UTF-8 octet sequence",
+                                                       parser.offset, -1)
+                                       }
+                                       break inner
+                               }
+
+                               // Decode the leading octet.
+                               switch {
+                               case octet&0x80 == 0x00:
+                                       value = rune(octet & 0x7F)
+                               case octet&0xE0 == 0xC0:
+                                       value = rune(octet & 0x1F)
+                               case octet&0xF0 == 0xE0:
+                                       value = rune(octet & 0x0F)
+                               case octet&0xF8 == 0xF0:
+                                       value = rune(octet & 0x07)
+                               default:
+                                       value = 0
+                               }
+
+                               // Check and decode the trailing octets.
+                               for k := 1; k < width; k++ {
+                                       octet = parser.raw_buffer[parser.raw_buffer_pos+k]
+
+                                       // Check if the octet is valid.
+                                       if (octet & 0xC0) != 0x80 {
+                                               return yaml_parser_set_reader_error(parser,
+                                                       "invalid trailing UTF-8 octet",
+                                                       parser.offset+k, int(octet))
+                                       }
+
+                                       // Decode the octet.
+                                       value = (value << 6) + rune(octet&0x3F)
+                               }
+
+                               // Check the length of the sequence against the value.
+                               switch {
+                               case width == 1:
+                               case width == 2 && value >= 0x80:
+                               case width == 3 && value >= 0x800:
+                               case width == 4 && value >= 0x10000:
+                               default:
+                                       return yaml_parser_set_reader_error(parser,
+                                               "invalid length of a UTF-8 sequence",
+                                               parser.offset, -1)
+                               }
+
+                               // Check the range of the value.
+                               if value >= 0xD800 && value <= 0xDFFF || value > 0x10FFFF {
+                                       return yaml_parser_set_reader_error(parser,
+                                               "invalid Unicode character",
+                                               parser.offset, int(value))
+                               }
+
+                       case yaml_UTF16LE_ENCODING, yaml_UTF16BE_ENCODING:
+                               var low, high int
+                               if parser.encoding == yaml_UTF16LE_ENCODING {
+                                       low, high = 0, 1
+                               } else {
+                                       low, high = 1, 0
+                               }
+
+                               // The UTF-16 encoding is not as simple as one might
+                               // naively think.  Check RFC 2781
+                               // (http://www.ietf.org/rfc/rfc2781.txt).
+                               //
+                               // Normally, two subsequent bytes describe a Unicode
+                               // character.  However a special technique (called a
+                               // surrogate pair) is used for specifying character
+                               // values larger than 0xFFFF.
+                               //
+                               // A surrogate pair consists of two pseudo-characters:
+                               //      high surrogate area (0xD800-0xDBFF)
+                               //      low surrogate area (0xDC00-0xDFFF)
+                               //
+                               // The following formulas are used for decoding
+                               // and encoding characters using surrogate pairs:
+                               //
+                               //  U  = U' + 0x10000   (0x01 00 00 <= U <= 0x10 FF FF)
+                               //  U' = yyyyyyyyyyxxxxxxxxxx   (0 <= U' <= 0x0F FF FF)
+                               //  W1 = 110110yyyyyyyyyy
+                               //  W2 = 110111xxxxxxxxxx
+                               //
+                               // where U is the character value, W1 is the high surrogate
+                               // area, W2 is the low surrogate area.
+
+                               // Check for incomplete UTF-16 character.
+                               if raw_unread < 2 {
+                                       if parser.eof {
+                                               return yaml_parser_set_reader_error(parser,
+                                                       "incomplete UTF-16 character",
+                                                       parser.offset, -1)
+                                       }
+                                       break inner
+                               }
+
+                               // Get the character.
+                               value = rune(parser.raw_buffer[parser.raw_buffer_pos+low]) +
+                                       (rune(parser.raw_buffer[parser.raw_buffer_pos+high]) << 8)
+
+                               // Check for unexpected low surrogate area.
+                               if value&0xFC00 == 0xDC00 {
+                                       return yaml_parser_set_reader_error(parser,
+                                               "unexpected low surrogate area",
+                                               parser.offset, int(value))
+                               }
+
+                               // Check for a high surrogate area.
+                               if value&0xFC00 == 0xD800 {
+                                       width = 4
+
+                                       // Check for incomplete surrogate pair.
+                                       if raw_unread < 4 {
+                                               if parser.eof {
+                                                       return yaml_parser_set_reader_error(parser,
+                                                               "incomplete UTF-16 surrogate pair",
+                                                               parser.offset, -1)
+                                               }
+                                               break inner
+                                       }
+
+                                       // Get the next character.
+                                       value2 := rune(parser.raw_buffer[parser.raw_buffer_pos+low+2]) +
+                                               (rune(parser.raw_buffer[parser.raw_buffer_pos+high+2]) << 8)
+
+                                       // Check for a low surrogate area.
+                                       if value2&0xFC00 != 0xDC00 {
+                                               return yaml_parser_set_reader_error(parser,
+                                                       "expected low surrogate area",
+                                                       parser.offset+2, int(value2))
+                                       }
+
+                                       // Generate the value of the surrogate pair.
+                                       value = 0x10000 + ((value & 0x3FF) << 10) + (value2 & 0x3FF)
+                               } else {
+                                       width = 2
+                               }
+
+                       default:
+                               panic("impossible")
+                       }
+
+                       // Check if the character is in the allowed range:
+                       //      #x9 | #xA | #xD | [#x20-#x7E]               (8 bit)
+                       //      | #x85 | [#xA0-#xD7FF] | [#xE000-#xFFFD]    (16 bit)
+                       //      | [#x10000-#x10FFFF]                        (32 bit)
+                       switch {
+                       case value == 0x09:
+                       case value == 0x0A:
+                       case value == 0x0D:
+                       case value >= 0x20 && value <= 0x7E:
+                       case value == 0x85:
+                       case value >= 0xA0 && value <= 0xD7FF:
+                       case value >= 0xE000 && value <= 0xFFFD:
+                       case value >= 0x10000 && value <= 0x10FFFF:
+                       default:
+                               return yaml_parser_set_reader_error(parser,
+                                       "control characters are not allowed",
+                                       parser.offset, int(value))
+                       }
+
+                       // Move the raw pointers.
+                       parser.raw_buffer_pos += width
+                       parser.offset += width
+
+                       // Finally put the character into the buffer.
+                       if value <= 0x7F {
+                               // 0000 0000-0000 007F . 0xxxxxxx
+                               parser.buffer[buffer_len+0] = byte(value)
+                               buffer_len += 1
+                       } else if value <= 0x7FF {
+                               // 0000 0080-0000 07FF . 110xxxxx 10xxxxxx
+                               parser.buffer[buffer_len+0] = byte(0xC0 + (value >> 6))
+                               parser.buffer[buffer_len+1] = byte(0x80 + (value & 0x3F))
+                               buffer_len += 2
+                       } else if value <= 0xFFFF {
+                               // 0000 0800-0000 FFFF . 1110xxxx 10xxxxxx 10xxxxxx
+                               parser.buffer[buffer_len+0] = byte(0xE0 + (value >> 12))
+                               parser.buffer[buffer_len+1] = byte(0x80 + ((value >> 6) & 0x3F))
+                               parser.buffer[buffer_len+2] = byte(0x80 + (value & 0x3F))
+                               buffer_len += 3
+                       } else {
+                               // 0001 0000-0010 FFFF . 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+                               parser.buffer[buffer_len+0] = byte(0xF0 + (value >> 18))
+                               parser.buffer[buffer_len+1] = byte(0x80 + ((value >> 12) & 0x3F))
+                               parser.buffer[buffer_len+2] = byte(0x80 + ((value >> 6) & 0x3F))
+                               parser.buffer[buffer_len+3] = byte(0x80 + (value & 0x3F))
+                               buffer_len += 4
+                       }
+
+                       parser.unread++
+               }
+
+               // On EOF, put NUL into the buffer and return.
+               if parser.eof {
+                       parser.buffer[buffer_len] = 0
+                       buffer_len++
+                       parser.unread++
+                       break
+               }
+       }
+       parser.buffer = parser.buffer[:buffer_len]
+       return true
+}
diff --git a/vendor/gopkg.in/yaml.v2/resolve.go b/vendor/gopkg.in/yaml.v2/resolve.go
new file mode 100644 (file)
index 0000000..93a8632
--- /dev/null
@@ -0,0 +1,203 @@
+package yaml
+
+import (
+       "encoding/base64"
+       "math"
+       "strconv"
+       "strings"
+       "unicode/utf8"
+)
+
+type resolveMapItem struct {
+       value interface{}
+       tag   string
+}
+
+var resolveTable = make([]byte, 256)
+var resolveMap = make(map[string]resolveMapItem)
+
+func init() {
+       t := resolveTable
+       t[int('+')] = 'S' // Sign
+       t[int('-')] = 'S'
+       for _, c := range "0123456789" {
+               t[int(c)] = 'D' // Digit
+       }
+       for _, c := range "yYnNtTfFoO~" {
+               t[int(c)] = 'M' // In map
+       }
+       t[int('.')] = '.' // Float (potentially in map)
+
+       var resolveMapList = []struct {
+               v   interface{}
+               tag string
+               l   []string
+       }{
+               {true, yaml_BOOL_TAG, []string{"y", "Y", "yes", "Yes", "YES"}},
+               {true, yaml_BOOL_TAG, []string{"true", "True", "TRUE"}},
+               {true, yaml_BOOL_TAG, []string{"on", "On", "ON"}},
+               {false, yaml_BOOL_TAG, []string{"n", "N", "no", "No", "NO"}},
+               {false, yaml_BOOL_TAG, []string{"false", "False", "FALSE"}},
+               {false, yaml_BOOL_TAG, []string{"off", "Off", "OFF"}},
+               {nil, yaml_NULL_TAG, []string{"", "~", "null", "Null", "NULL"}},
+               {math.NaN(), yaml_FLOAT_TAG, []string{".nan", ".NaN", ".NAN"}},
+               {math.Inf(+1), yaml_FLOAT_TAG, []string{".inf", ".Inf", ".INF"}},
+               {math.Inf(+1), yaml_FLOAT_TAG, []string{"+.inf", "+.Inf", "+.INF"}},
+               {math.Inf(-1), yaml_FLOAT_TAG, []string{"-.inf", "-.Inf", "-.INF"}},
+               {"<<", yaml_MERGE_TAG, []string{"<<"}},
+       }
+
+       m := resolveMap
+       for _, item := range resolveMapList {
+               for _, s := range item.l {
+                       m[s] = resolveMapItem{item.v, item.tag}
+               }
+       }
+}
+
+const longTagPrefix = "tag:yaml.org,2002:"
+
+func shortTag(tag string) string {
+       // TODO This can easily be made faster and produce less garbage.
+       if strings.HasPrefix(tag, longTagPrefix) {
+               return "!!" + tag[len(longTagPrefix):]
+       }
+       return tag
+}
+
+func longTag(tag string) string {
+       if strings.HasPrefix(tag, "!!") {
+               return longTagPrefix + tag[2:]
+       }
+       return tag
+}
+
+func resolvableTag(tag string) bool {
+       switch tag {
+       case "", yaml_STR_TAG, yaml_BOOL_TAG, yaml_INT_TAG, yaml_FLOAT_TAG, yaml_NULL_TAG:
+               return true
+       }
+       return false
+}
+
+func resolve(tag string, in string) (rtag string, out interface{}) {
+       if !resolvableTag(tag) {
+               return tag, in
+       }
+
+       defer func() {
+               switch tag {
+               case "", rtag, yaml_STR_TAG, yaml_BINARY_TAG:
+                       return
+               }
+               failf("cannot decode %s `%s` as a %s", shortTag(rtag), in, shortTag(tag))
+       }()
+
+       // Any data is accepted as a !!str or !!binary.
+       // Otherwise, the prefix is enough of a hint about what it might be.
+       hint := byte('N')
+       if in != "" {
+               hint = resolveTable[in[0]]
+       }
+       if hint != 0 && tag != yaml_STR_TAG && tag != yaml_BINARY_TAG {
+               // Handle things we can lookup in a map.
+               if item, ok := resolveMap[in]; ok {
+                       return item.tag, item.value
+               }
+
+               // Base 60 floats are a bad idea, were dropped in YAML 1.2, and
+               // are purposefully unsupported here. They're still quoted on
+               // the way out for compatibility with other parser, though.
+
+               switch hint {
+               case 'M':
+                       // We've already checked the map above.
+
+               case '.':
+                       // Not in the map, so maybe a normal float.
+                       floatv, err := strconv.ParseFloat(in, 64)
+                       if err == nil {
+                               return yaml_FLOAT_TAG, floatv
+                       }
+
+               case 'D', 'S':
+                       // Int, float, or timestamp.
+                       plain := strings.Replace(in, "_", "", -1)
+                       intv, err := strconv.ParseInt(plain, 0, 64)
+                       if err == nil {
+                               if intv == int64(int(intv)) {
+                                       return yaml_INT_TAG, int(intv)
+                               } else {
+                                       return yaml_INT_TAG, intv
+                               }
+                       }
+                       uintv, err := strconv.ParseUint(plain, 0, 64)
+                       if err == nil {
+                               return yaml_INT_TAG, uintv
+                       }
+                       floatv, err := strconv.ParseFloat(plain, 64)
+                       if err == nil {
+                               return yaml_FLOAT_TAG, floatv
+                       }
+                       if strings.HasPrefix(plain, "0b") {
+                               intv, err := strconv.ParseInt(plain[2:], 2, 64)
+                               if err == nil {
+                                       if intv == int64(int(intv)) {
+                                               return yaml_INT_TAG, int(intv)
+                                       } else {
+                                               return yaml_INT_TAG, intv
+                                       }
+                               }
+                               uintv, err := strconv.ParseUint(plain[2:], 2, 64)
+                               if err == nil {
+                                       return yaml_INT_TAG, uintv
+                               }
+                       } else if strings.HasPrefix(plain, "-0b") {
+                               intv, err := strconv.ParseInt(plain[3:], 2, 64)
+                               if err == nil {
+                                       if intv == int64(int(intv)) {
+                                               return yaml_INT_TAG, -int(intv)
+                                       } else {
+                                               return yaml_INT_TAG, -intv
+                                       }
+                               }
+                       }
+                       // XXX Handle timestamps here.
+
+               default:
+                       panic("resolveTable item not yet handled: " + string(rune(hint)) + " (with " + in + ")")
+               }
+       }
+       if tag == yaml_BINARY_TAG {
+               return yaml_BINARY_TAG, in
+       }
+       if utf8.ValidString(in) {
+               return yaml_STR_TAG, in
+       }
+       return yaml_BINARY_TAG, encodeBase64(in)
+}
+
+// encodeBase64 encodes s as base64 that is broken up into multiple lines
+// as appropriate for the resulting length.
+func encodeBase64(s string) string {
+       const lineLen = 70
+       encLen := base64.StdEncoding.EncodedLen(len(s))
+       lines := encLen/lineLen + 1
+       buf := make([]byte, encLen*2+lines)
+       in := buf[0:encLen]
+       out := buf[encLen:]
+       base64.StdEncoding.Encode(in, []byte(s))
+       k := 0
+       for i := 0; i < len(in); i += lineLen {
+               j := i + lineLen
+               if j > len(in) {
+                       j = len(in)
+               }
+               k += copy(out[k:], in[i:j])
+               if lines > 1 {
+                       out[k] = '\n'
+                       k++
+               }
+       }
+       return string(out[:k])
+}
diff --git a/vendor/gopkg.in/yaml.v2/scannerc.go b/vendor/gopkg.in/yaml.v2/scannerc.go
new file mode 100644 (file)
index 0000000..2580800
--- /dev/null
@@ -0,0 +1,2710 @@
+package yaml
+
+import (
+       "bytes"
+       "fmt"
+)
+
+// Introduction
+// ************
+//
+// The following notes assume that you are familiar with the YAML specification
+// (http://yaml.org/spec/cvs/current.html).  We mostly follow it, although in
+// some cases we are less restrictive that it requires.
+//
+// The process of transforming a YAML stream into a sequence of events is
+// divided on two steps: Scanning and Parsing.
+//
+// The Scanner transforms the input stream into a sequence of tokens, while the
+// parser transform the sequence of tokens produced by the Scanner into a
+// sequence of parsing events.
+//
+// The Scanner is rather clever and complicated. The Parser, on the contrary,
+// is a straightforward implementation of a recursive-descendant parser (or,
+// LL(1) parser, as it is usually called).
+//
+// Actually there are two issues of Scanning that might be called "clever", the
+// rest is quite straightforward.  The issues are "block collection start" and
+// "simple keys".  Both issues are explained below in details.
+//
+// Here the Scanning step is explained and implemented.  We start with the list
+// of all the tokens produced by the Scanner together with short descriptions.
+//
+// Now, tokens:
+//
+//      STREAM-START(encoding)          # The stream start.
+//      STREAM-END                      # The stream end.
+//      VERSION-DIRECTIVE(major,minor)  # The '%YAML' directive.
+//      TAG-DIRECTIVE(handle,prefix)    # The '%TAG' directive.
+//      DOCUMENT-START                  # '---'
+//      DOCUMENT-END                    # '...'
+//      BLOCK-SEQUENCE-START            # Indentation increase denoting a block
+//      BLOCK-MAPPING-START             # sequence or a block mapping.
+//      BLOCK-END                       # Indentation decrease.
+//      FLOW-SEQUENCE-START             # '['
+//      FLOW-SEQUENCE-END               # ']'
+//      BLOCK-SEQUENCE-START            # '{'
+//      BLOCK-SEQUENCE-END              # '}'
+//      BLOCK-ENTRY                     # '-'
+//      FLOW-ENTRY                      # ','
+//      KEY                             # '?' or nothing (simple keys).
+//      VALUE                           # ':'
+//      ALIAS(anchor)                   # '*anchor'
+//      ANCHOR(anchor)                  # '&anchor'
+//      TAG(handle,suffix)              # '!handle!suffix'
+//      SCALAR(value,style)             # A scalar.
+//
+// The following two tokens are "virtual" tokens denoting the beginning and the
+// end of the stream:
+//
+//      STREAM-START(encoding)
+//      STREAM-END
+//
+// We pass the information about the input stream encoding with the
+// STREAM-START token.
+//
+// The next two tokens are responsible for tags:
+//
+//      VERSION-DIRECTIVE(major,minor)
+//      TAG-DIRECTIVE(handle,prefix)
+//
+// Example:
+//
+//      %YAML   1.1
+//      %TAG    !   !foo
+//      %TAG    !yaml!  tag:yaml.org,2002:
+//      ---
+//
+// The correspoding sequence of tokens:
+//
+//      STREAM-START(utf-8)
+//      VERSION-DIRECTIVE(1,1)
+//      TAG-DIRECTIVE("!","!foo")
+//      TAG-DIRECTIVE("!yaml","tag:yaml.org,2002:")
+//      DOCUMENT-START
+//      STREAM-END
+//
+// Note that the VERSION-DIRECTIVE and TAG-DIRECTIVE tokens occupy a whole
+// line.
+//
+// The document start and end indicators are represented by:
+//
+//      DOCUMENT-START
+//      DOCUMENT-END
+//
+// Note that if a YAML stream contains an implicit document (without '---'
+// and '...' indicators), no DOCUMENT-START and DOCUMENT-END tokens will be
+// produced.
+//
+// In the following examples, we present whole documents together with the
+// produced tokens.
+//
+//      1. An implicit document:
+//
+//          'a scalar'
+//
+//      Tokens:
+//
+//          STREAM-START(utf-8)
+//          SCALAR("a scalar",single-quoted)
+//          STREAM-END
+//
+//      2. An explicit document:
+//
+//          ---
+//          'a scalar'
+//          ...
+//
+//      Tokens:
+//
+//          STREAM-START(utf-8)
+//          DOCUMENT-START
+//          SCALAR("a scalar",single-quoted)
+//          DOCUMENT-END
+//          STREAM-END
+//
+//      3. Several documents in a stream:
+//
+//          'a scalar'
+//          ---
+//          'another scalar'
+//          ---
+//          'yet another scalar'
+//
+//      Tokens:
+//
+//          STREAM-START(utf-8)
+//          SCALAR("a scalar",single-quoted)
+//          DOCUMENT-START
+//          SCALAR("another scalar",single-quoted)
+//          DOCUMENT-START
+//          SCALAR("yet another scalar",single-quoted)
+//          STREAM-END
+//
+// We have already introduced the SCALAR token above.  The following tokens are
+// used to describe aliases, anchors, tag, and scalars:
+//
+//      ALIAS(anchor)
+//      ANCHOR(anchor)
+//      TAG(handle,suffix)
+//      SCALAR(value,style)
+//
+// The following series of examples illustrate the usage of these tokens:
+//
+//      1. A recursive sequence:
+//
+//          &A [ *A ]
+//
+//      Tokens:
+//
+//          STREAM-START(utf-8)
+//          ANCHOR("A")
+//          FLOW-SEQUENCE-START
+//          ALIAS("A")
+//          FLOW-SEQUENCE-END
+//          STREAM-END
+//
+//      2. A tagged scalar:
+//
+//          !!float "3.14"  # A good approximation.
+//
+//      Tokens:
+//
+//          STREAM-START(utf-8)
+//          TAG("!!","float")
+//          SCALAR("3.14",double-quoted)
+//          STREAM-END
+//
+//      3. Various scalar styles:
+//
+//          --- # Implicit empty plain scalars do not produce tokens.
+//          --- a plain scalar
+//          --- 'a single-quoted scalar'
+//          --- "a double-quoted scalar"
+//          --- |-
+//            a literal scalar
+//          --- >-
+//            a folded
+//            scalar
+//
+//      Tokens:
+//
+//          STREAM-START(utf-8)
+//          DOCUMENT-START
+//          DOCUMENT-START
+//          SCALAR("a plain scalar",plain)
+//          DOCUMENT-START
+//          SCALAR("a single-quoted scalar",single-quoted)
+//          DOCUMENT-START
+//          SCALAR("a double-quoted scalar",double-quoted)
+//          DOCUMENT-START
+//          SCALAR("a literal scalar",literal)
+//          DOCUMENT-START
+//          SCALAR("a folded scalar",folded)
+//          STREAM-END
+//
+// Now it's time to review collection-related tokens. We will start with
+// flow collections:
+//
+//      FLOW-SEQUENCE-START
+//      FLOW-SEQUENCE-END
+//      FLOW-MAPPING-START
+//      FLOW-MAPPING-END
+//      FLOW-ENTRY
+//      KEY
+//      VALUE
+//
+// The tokens FLOW-SEQUENCE-START, FLOW-SEQUENCE-END, FLOW-MAPPING-START, and
+// FLOW-MAPPING-END represent the indicators '[', ']', '{', and '}'
+// correspondingly.  FLOW-ENTRY represent the ',' indicator.  Finally the
+// indicators '?' and ':', which are used for denoting mapping keys and values,
+// are represented by the KEY and VALUE tokens.
+//
+// The following examples show flow collections:
+//
+//      1. A flow sequence:
+//
+//          [item 1, item 2, item 3]
+//
+//      Tokens:
+//
+//          STREAM-START(utf-8)
+//          FLOW-SEQUENCE-START
+//          SCALAR("item 1",plain)
+//          FLOW-ENTRY
+//          SCALAR("item 2",plain)
+//          FLOW-ENTRY
+//          SCALAR("item 3",plain)
+//          FLOW-SEQUENCE-END
+//          STREAM-END
+//
+//      2. A flow mapping:
+//
+//          {
+//              a simple key: a value,  # Note that the KEY token is produced.
+//              ? a complex key: another value,
+//          }
+//
+//      Tokens:
+//
+//          STREAM-START(utf-8)
+//          FLOW-MAPPING-START
+//          KEY
+//          SCALAR("a simple key",plain)
+//          VALUE
+//          SCALAR("a value",plain)
+//          FLOW-ENTRY
+//          KEY
+//          SCALAR("a complex key",plain)
+//          VALUE
+//          SCALAR("another value",plain)
+//          FLOW-ENTRY
+//          FLOW-MAPPING-END
+//          STREAM-END
+//
+// A simple key is a key which is not denoted by the '?' indicator.  Note that
+// the Scanner still produce the KEY token whenever it encounters a simple key.
+//
+// For scanning block collections, the following tokens are used (note that we
+// repeat KEY and VALUE here):
+//
+//      BLOCK-SEQUENCE-START
+//      BLOCK-MAPPING-START
+//      BLOCK-END
+//      BLOCK-ENTRY
+//      KEY
+//      VALUE
+//
+// The tokens BLOCK-SEQUENCE-START and BLOCK-MAPPING-START denote indentation
+// increase that precedes a block collection (cf. the INDENT token in Python).
+// The token BLOCK-END denote indentation decrease that ends a block collection
+// (cf. the DEDENT token in Python).  However YAML has some syntax pecularities
+// that makes detections of these tokens more complex.
+//
+// The tokens BLOCK-ENTRY, KEY, and VALUE are used to represent the indicators
+// '-', '?', and ':' correspondingly.
+//
+// The following examples show how the tokens BLOCK-SEQUENCE-START,
+// BLOCK-MAPPING-START, and BLOCK-END are emitted by the Scanner:
+//
+//      1. Block sequences:
+//
+//          - item 1
+//          - item 2
+//          -
+//            - item 3.1
+//            - item 3.2
+//          -
+//            key 1: value 1
+//            key 2: value 2
+//
+//      Tokens:
+//
+//          STREAM-START(utf-8)
+//          BLOCK-SEQUENCE-START
+//          BLOCK-ENTRY
+//          SCALAR("item 1",plain)
+//          BLOCK-ENTRY
+//          SCALAR("item 2",plain)
+//          BLOCK-ENTRY
+//          BLOCK-SEQUENCE-START
+//          BLOCK-ENTRY
+//          SCALAR("item 3.1",plain)
+//          BLOCK-ENTRY
+//          SCALAR("item 3.2",plain)
+//          BLOCK-END
+//          BLOCK-ENTRY
+//          BLOCK-MAPPING-START
+//          KEY
+//          SCALAR("key 1",plain)
+//          VALUE
+//          SCALAR("value 1",plain)
+//          KEY
+//          SCALAR("key 2",plain)
+//          VALUE
+//          SCALAR("value 2",plain)
+//          BLOCK-END
+//          BLOCK-END
+//          STREAM-END
+//
+//      2. Block mappings:
+//
+//          a simple key: a value   # The KEY token is produced here.
+//          ? a complex key
+//          : another value
+//          a mapping:
+//            key 1: value 1
+//            key 2: value 2
+//          a sequence:
+//            - item 1
+//            - item 2
+//
+//      Tokens:
+//
+//          STREAM-START(utf-8)
+//          BLOCK-MAPPING-START
+//          KEY
+//          SCALAR("a simple key",plain)
+//          VALUE
+//          SCALAR("a value",plain)
+//          KEY
+//          SCALAR("a complex key",plain)
+//          VALUE
+//          SCALAR("another value",plain)
+//          KEY
+//          SCALAR("a mapping",plain)
+//          BLOCK-MAPPING-START
+//          KEY
+//          SCALAR("key 1",plain)
+//          VALUE
+//          SCALAR("value 1",plain)
+//          KEY
+//          SCALAR("key 2",plain)
+//          VALUE
+//          SCALAR("value 2",plain)
+//          BLOCK-END
+//          KEY
+//          SCALAR("a sequence",plain)
+//          VALUE
+//          BLOCK-SEQUENCE-START
+//          BLOCK-ENTRY
+//          SCALAR("item 1",plain)
+//          BLOCK-ENTRY
+//          SCALAR("item 2",plain)
+//          BLOCK-END
+//          BLOCK-END
+//          STREAM-END
+//
+// YAML does not always require to start a new block collection from a new
+// line.  If the current line contains only '-', '?', and ':' indicators, a new
+// block collection may start at the current line.  The following examples
+// illustrate this case:
+//
+//      1. Collections in a sequence:
+//
+//          - - item 1
+//            - item 2
+//          - key 1: value 1
+//            key 2: value 2
+//          - ? complex key
+//            : complex value
+//
+//      Tokens:
+//
+//          STREAM-START(utf-8)
+//          BLOCK-SEQUENCE-START
+//          BLOCK-ENTRY
+//          BLOCK-SEQUENCE-START
+//          BLOCK-ENTRY
+//          SCALAR("item 1",plain)
+//          BLOCK-ENTRY
+//          SCALAR("item 2",plain)
+//          BLOCK-END
+//          BLOCK-ENTRY
+//          BLOCK-MAPPING-START
+//          KEY
+//          SCALAR("key 1",plain)
+//          VALUE
+//          SCALAR("value 1",plain)
+//          KEY
+//          SCALAR("key 2",plain)
+//          VALUE
+//          SCALAR("value 2",plain)
+//          BLOCK-END
+//          BLOCK-ENTRY
+//          BLOCK-MAPPING-START
+//          KEY
+//          SCALAR("complex key")
+//          VALUE
+//          SCALAR("complex value")
+//          BLOCK-END
+//          BLOCK-END
+//          STREAM-END
+//
+//      2. Collections in a mapping:
+//
+//          ? a sequence
+//          : - item 1
+//            - item 2
+//          ? a mapping
+//          : key 1: value 1
+//            key 2: value 2
+//
+//      Tokens:
+//
+//          STREAM-START(utf-8)
+//          BLOCK-MAPPING-START
+//          KEY
+//          SCALAR("a sequence",plain)
+//          VALUE
+//          BLOCK-SEQUENCE-START
+//          BLOCK-ENTRY
+//          SCALAR("item 1",plain)
+//          BLOCK-ENTRY
+//          SCALAR("item 2",plain)
+//          BLOCK-END
+//          KEY
+//          SCALAR("a mapping",plain)
+//          VALUE
+//          BLOCK-MAPPING-START
+//          KEY
+//          SCALAR("key 1",plain)
+//          VALUE
+//          SCALAR("value 1",plain)
+//          KEY
+//          SCALAR("key 2",plain)
+//          VALUE
+//          SCALAR("value 2",plain)
+//          BLOCK-END
+//          BLOCK-END
+//          STREAM-END
+//
+// YAML also permits non-indented sequences if they are included into a block
+// mapping.  In this case, the token BLOCK-SEQUENCE-START is not produced:
+//
+//      key:
+//      - item 1    # BLOCK-SEQUENCE-START is NOT produced here.
+//      - item 2
+//
+// Tokens:
+//
+//      STREAM-START(utf-8)
+//      BLOCK-MAPPING-START
+//      KEY
+//      SCALAR("key",plain)
+//      VALUE
+//      BLOCK-ENTRY
+//      SCALAR("item 1",plain)
+//      BLOCK-ENTRY
+//      SCALAR("item 2",plain)
+//      BLOCK-END
+//
+
+// Ensure that the buffer contains the required number of characters.
+// Return true on success, false on failure (reader error or memory error).
+func cache(parser *yaml_parser_t, length int) bool {
+       // [Go] This was inlined: !cache(A, B) -> unread < B && !update(A, B)
+       return parser.unread >= length || yaml_parser_update_buffer(parser, length)
+}
+
+// Advance the buffer pointer.
+func skip(parser *yaml_parser_t) {
+       parser.mark.index++
+       parser.mark.column++
+       parser.unread--
+       parser.buffer_pos += width(parser.buffer[parser.buffer_pos])
+}
+
+func skip_line(parser *yaml_parser_t) {
+       if is_crlf(parser.buffer, parser.buffer_pos) {
+               parser.mark.index += 2
+               parser.mark.column = 0
+               parser.mark.line++
+               parser.unread -= 2
+               parser.buffer_pos += 2
+       } else if is_break(parser.buffer, parser.buffer_pos) {
+               parser.mark.index++
+               parser.mark.column = 0
+               parser.mark.line++
+               parser.unread--
+               parser.buffer_pos += width(parser.buffer[parser.buffer_pos])
+       }
+}
+
+// Copy a character to a string buffer and advance pointers.
+func read(parser *yaml_parser_t, s []byte) []byte {
+       w := width(parser.buffer[parser.buffer_pos])
+       if w == 0 {
+               panic("invalid character sequence")
+       }
+       if len(s) == 0 {
+               s = make([]byte, 0, 32)
+       }
+       if w == 1 && len(s)+w <= cap(s) {
+               s = s[:len(s)+1]
+               s[len(s)-1] = parser.buffer[parser.buffer_pos]
+               parser.buffer_pos++
+       } else {
+               s = append(s, parser.buffer[parser.buffer_pos:parser.buffer_pos+w]...)
+               parser.buffer_pos += w
+       }
+       parser.mark.index++
+       parser.mark.column++
+       parser.unread--
+       return s
+}
+
+// Copy a line break character to a string buffer and advance pointers.
+func read_line(parser *yaml_parser_t, s []byte) []byte {
+       buf := parser.buffer
+       pos := parser.buffer_pos
+       switch {
+       case buf[pos] == '\r' && buf[pos+1] == '\n':
+               // CR LF . LF
+               s = append(s, '\n')
+               parser.buffer_pos += 2
+               parser.mark.index++
+               parser.unread--
+       case buf[pos] == '\r' || buf[pos] == '\n':
+               // CR|LF . LF
+               s = append(s, '\n')
+               parser.buffer_pos += 1
+       case buf[pos] == '\xC2' && buf[pos+1] == '\x85':
+               // NEL . LF
+               s = append(s, '\n')
+               parser.buffer_pos += 2
+       case buf[pos] == '\xE2' && buf[pos+1] == '\x80' && (buf[pos+2] == '\xA8' || buf[pos+2] == '\xA9'):
+               // LS|PS . LS|PS
+               s = append(s, buf[parser.buffer_pos:pos+3]...)
+               parser.buffer_pos += 3
+       default:
+               return s
+       }
+       parser.mark.index++
+       parser.mark.column = 0
+       parser.mark.line++
+       parser.unread--
+       return s
+}
+
+// Get the next token.
+func yaml_parser_scan(parser *yaml_parser_t, token *yaml_token_t) bool {
+       // Erase the token object.
+       *token = yaml_token_t{} // [Go] Is this necessary?
+
+       // No tokens after STREAM-END or error.
+       if parser.stream_end_produced || parser.error != yaml_NO_ERROR {
+               return true
+       }
+
+       // Ensure that the tokens queue contains enough tokens.
+       if !parser.token_available {
+               if !yaml_parser_fetch_more_tokens(parser) {
+                       return false
+               }
+       }
+
+       // Fetch the next token from the queue.
+       *token = parser.tokens[parser.tokens_head]
+       parser.tokens_head++
+       parser.tokens_parsed++
+       parser.token_available = false
+
+       if token.typ == yaml_STREAM_END_TOKEN {
+               parser.stream_end_produced = true
+       }
+       return true
+}
+
+// Set the scanner error and return false.
+func yaml_parser_set_scanner_error(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string) bool {
+       parser.error = yaml_SCANNER_ERROR
+       parser.context = context
+       parser.context_mark = context_mark
+       parser.problem = problem
+       parser.problem_mark = parser.mark
+       return false
+}
+
+func yaml_parser_set_scanner_tag_error(parser *yaml_parser_t, directive bool, context_mark yaml_mark_t, problem string) bool {
+       context := "while parsing a tag"
+       if directive {
+               context = "while parsing a %TAG directive"
+       }
+       return yaml_parser_set_scanner_error(parser, context, context_mark, "did not find URI escaped octet")
+}
+
+func trace(args ...interface{}) func() {
+       pargs := append([]interface{}{"+++"}, args...)
+       fmt.Println(pargs...)
+       pargs = append([]interface{}{"---"}, args...)
+       return func() { fmt.Println(pargs...) }
+}
+
+// Ensure that the tokens queue contains at least one token which can be
+// returned to the Parser.
+func yaml_parser_fetch_more_tokens(parser *yaml_parser_t) bool {
+       // While we need more tokens to fetch, do it.
+       for {
+               // Check if we really need to fetch more tokens.
+               need_more_tokens := false
+
+               if parser.tokens_head == len(parser.tokens) {
+                       // Queue is empty.
+                       need_more_tokens = true
+               } else {
+                       // Check if any potential simple key may occupy the head position.
+                       if !yaml_parser_stale_simple_keys(parser) {
+                               return false
+                       }
+
+                       for i := range parser.simple_keys {
+                               simple_key := &parser.simple_keys[i]
+                               if simple_key.possible && simple_key.token_number == parser.tokens_parsed {
+                                       need_more_tokens = true
+                                       break
+                               }
+                       }
+               }
+
+               // We are finished.
+               if !need_more_tokens {
+                       break
+               }
+               // Fetch the next token.
+               if !yaml_parser_fetch_next_token(parser) {
+                       return false
+               }
+       }
+
+       parser.token_available = true
+       return true
+}
+
+// The dispatcher for token fetchers.
+func yaml_parser_fetch_next_token(parser *yaml_parser_t) bool {
+       // Ensure that the buffer is initialized.
+       if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+               return false
+       }
+
+       // Check if we just started scanning.  Fetch STREAM-START then.
+       if !parser.stream_start_produced {
+               return yaml_parser_fetch_stream_start(parser)
+       }
+
+       // Eat whitespaces and comments until we reach the next token.
+       if !yaml_parser_scan_to_next_token(parser) {
+               return false
+       }
+
+       // Remove obsolete potential simple keys.
+       if !yaml_parser_stale_simple_keys(parser) {
+               return false
+       }
+
+       // Check the indentation level against the current column.
+       if !yaml_parser_unroll_indent(parser, parser.mark.column) {
+               return false
+       }
+
+       // Ensure that the buffer contains at least 4 characters.  4 is the length
+       // of the longest indicators ('--- ' and '... ').
+       if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) {
+               return false
+       }
+
+       // Is it the end of the stream?
+       if is_z(parser.buffer, parser.buffer_pos) {
+               return yaml_parser_fetch_stream_end(parser)
+       }
+
+       // Is it a directive?
+       if parser.mark.column == 0 && parser.buffer[parser.buffer_pos] == '%' {
+               return yaml_parser_fetch_directive(parser)
+       }
+
+       buf := parser.buffer
+       pos := parser.buffer_pos
+
+       // Is it the document start indicator?
+       if parser.mark.column == 0 && buf[pos] == '-' && buf[pos+1] == '-' && buf[pos+2] == '-' && is_blankz(buf, pos+3) {
+               return yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_START_TOKEN)
+       }
+
+       // Is it the document end indicator?
+       if parser.mark.column == 0 && buf[pos] == '.' && buf[pos+1] == '.' && buf[pos+2] == '.' && is_blankz(buf, pos+3) {
+               return yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_END_TOKEN)
+       }
+
+       // Is it the flow sequence start indicator?
+       if buf[pos] == '[' {
+               return yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_SEQUENCE_START_TOKEN)
+       }
+
+       // Is it the flow mapping start indicator?
+       if parser.buffer[parser.buffer_pos] == '{' {
+               return yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_MAPPING_START_TOKEN)
+       }
+
+       // Is it the flow sequence end indicator?
+       if parser.buffer[parser.buffer_pos] == ']' {
+               return yaml_parser_fetch_flow_collection_end(parser,
+                       yaml_FLOW_SEQUENCE_END_TOKEN)
+       }
+
+       // Is it the flow mapping end indicator?
+       if parser.buffer[parser.buffer_pos] == '}' {
+               return yaml_parser_fetch_flow_collection_end(parser,
+                       yaml_FLOW_MAPPING_END_TOKEN)
+       }
+
+       // Is it the flow entry indicator?
+       if parser.buffer[parser.buffer_pos] == ',' {
+               return yaml_parser_fetch_flow_entry(parser)
+       }
+
+       // Is it the block entry indicator?
+       if parser.buffer[parser.buffer_pos] == '-' && is_blankz(parser.buffer, parser.buffer_pos+1) {
+               return yaml_parser_fetch_block_entry(parser)
+       }
+
+       // Is it the key indicator?
+       if parser.buffer[parser.buffer_pos] == '?' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) {
+               return yaml_parser_fetch_key(parser)
+       }
+
+       // Is it the value indicator?
+       if parser.buffer[parser.buffer_pos] == ':' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) {
+               return yaml_parser_fetch_value(parser)
+       }
+
+       // Is it an alias?
+       if parser.buffer[parser.buffer_pos] == '*' {
+               return yaml_parser_fetch_anchor(parser, yaml_ALIAS_TOKEN)
+       }
+
+       // Is it an anchor?
+       if parser.buffer[parser.buffer_pos] == '&' {
+               return yaml_parser_fetch_anchor(parser, yaml_ANCHOR_TOKEN)
+       }
+
+       // Is it a tag?
+       if parser.buffer[parser.buffer_pos] == '!' {
+               return yaml_parser_fetch_tag(parser)
+       }
+
+       // Is it a literal scalar?
+       if parser.buffer[parser.buffer_pos] == '|' && parser.flow_level == 0 {
+               return yaml_parser_fetch_block_scalar(parser, true)
+       }
+
+       // Is it a folded scalar?
+       if parser.buffer[parser.buffer_pos] == '>' && parser.flow_level == 0 {
+               return yaml_parser_fetch_block_scalar(parser, false)
+       }
+
+       // Is it a single-quoted scalar?
+       if parser.buffer[parser.buffer_pos] == '\'' {
+               return yaml_parser_fetch_flow_scalar(parser, true)
+       }
+
+       // Is it a double-quoted scalar?
+       if parser.buffer[parser.buffer_pos] == '"' {
+               return yaml_parser_fetch_flow_scalar(parser, false)
+       }
+
+       // Is it a plain scalar?
+       //
+       // A plain scalar may start with any non-blank characters except
+       //
+       //      '-', '?', ':', ',', '[', ']', '{', '}',
+       //      '#', '&', '*', '!', '|', '>', '\'', '\"',
+       //      '%', '@', '`'.
+       //
+       // In the block context (and, for the '-' indicator, in the flow context
+       // too), it may also start with the characters
+       //
+       //      '-', '?', ':'
+       //
+       // if it is followed by a non-space character.
+       //
+       // The last rule is more restrictive than the specification requires.
+       // [Go] Make this logic more reasonable.
+       //switch parser.buffer[parser.buffer_pos] {
+       //case '-', '?', ':', ',', '?', '-', ',', ':', ']', '[', '}', '{', '&', '#', '!', '*', '>', '|', '"', '\'', '@', '%', '-', '`':
+       //}
+       if !(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '-' ||
+               parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':' ||
+               parser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '[' ||
+               parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' ||
+               parser.buffer[parser.buffer_pos] == '}' || parser.buffer[parser.buffer_pos] == '#' ||
+               parser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '*' ||
+               parser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '|' ||
+               parser.buffer[parser.buffer_pos] == '>' || parser.buffer[parser.buffer_pos] == '\'' ||
+               parser.buffer[parser.buffer_pos] == '"' || parser.buffer[parser.buffer_pos] == '%' ||
+               parser.buffer[parser.buffer_pos] == '@' || parser.buffer[parser.buffer_pos] == '`') ||
+               (parser.buffer[parser.buffer_pos] == '-' && !is_blank(parser.buffer, parser.buffer_pos+1)) ||
+               (parser.flow_level == 0 &&
+                       (parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':') &&
+                       !is_blankz(parser.buffer, parser.buffer_pos+1)) {
+               return yaml_parser_fetch_plain_scalar(parser)
+       }
+
+       // If we don't determine the token type so far, it is an error.
+       return yaml_parser_set_scanner_error(parser,
+               "while scanning for the next token", parser.mark,
+               "found character that cannot start any token")
+}
+
+// Check the list of potential simple keys and remove the positions that
+// cannot contain simple keys anymore.
+func yaml_parser_stale_simple_keys(parser *yaml_parser_t) bool {
+       // Check for a potential simple key for each flow level.
+       for i := range parser.simple_keys {
+               simple_key := &parser.simple_keys[i]
+
+               // The specification requires that a simple key
+               //
+               //  - is limited to a single line,
+               //  - is shorter than 1024 characters.
+               if simple_key.possible && (simple_key.mark.line < parser.mark.line || simple_key.mark.index+1024 < parser.mark.index) {
+
+                       // Check if the potential simple key to be removed is required.
+                       if simple_key.required {
+                               return yaml_parser_set_scanner_error(parser,
+                                       "while scanning a simple key", simple_key.mark,
+                                       "could not find expected ':'")
+                       }
+                       simple_key.possible = false
+               }
+       }
+       return true
+}
+
+// Check if a simple key may start at the current position and add it if
+// needed.
+func yaml_parser_save_simple_key(parser *yaml_parser_t) bool {
+       // A simple key is required at the current position if the scanner is in
+       // the block context and the current column coincides with the indentation
+       // level.
+
+       required := parser.flow_level == 0 && parser.indent == parser.mark.column
+
+       // A simple key is required only when it is the first token in the current
+       // line.  Therefore it is always allowed.  But we add a check anyway.
+       if required && !parser.simple_key_allowed {
+               panic("should not happen")
+       }
+
+       //
+       // If the current position may start a simple key, save it.
+       //
+       if parser.simple_key_allowed {
+               simple_key := yaml_simple_key_t{
+                       possible:     true,
+                       required:     required,
+                       token_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head),
+               }
+               simple_key.mark = parser.mark
+
+               if !yaml_parser_remove_simple_key(parser) {
+                       return false
+               }
+               parser.simple_keys[len(parser.simple_keys)-1] = simple_key
+       }
+       return true
+}
+
+// Remove a potential simple key at the current flow level.
+func yaml_parser_remove_simple_key(parser *yaml_parser_t) bool {
+       i := len(parser.simple_keys) - 1
+       if parser.simple_keys[i].possible {
+               // If the key is required, it is an error.
+               if parser.simple_keys[i].required {
+                       return yaml_parser_set_scanner_error(parser,
+                               "while scanning a simple key", parser.simple_keys[i].mark,
+                               "could not find expected ':'")
+               }
+       }
+       // Remove the key from the stack.
+       parser.simple_keys[i].possible = false
+       return true
+}
+
+// Increase the flow level and resize the simple key list if needed.
+func yaml_parser_increase_flow_level(parser *yaml_parser_t) bool {
+       // Reset the simple key on the next level.
+       parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{})
+
+       // Increase the flow level.
+       parser.flow_level++
+       return true
+}
+
+// Decrease the flow level.
+func yaml_parser_decrease_flow_level(parser *yaml_parser_t) bool {
+       if parser.flow_level > 0 {
+               parser.flow_level--
+               parser.simple_keys = parser.simple_keys[:len(parser.simple_keys)-1]
+       }
+       return true
+}
+
+// Push the current indentation level to the stack and set the new level
+// the current column is greater than the indentation level.  In this case,
+// append or insert the specified token into the token queue.
+func yaml_parser_roll_indent(parser *yaml_parser_t, column, number int, typ yaml_token_type_t, mark yaml_mark_t) bool {
+       // In the flow context, do nothing.
+       if parser.flow_level > 0 {
+               return true
+       }
+
+       if parser.indent < column {
+               // Push the current indentation level to the stack and set the new
+               // indentation level.
+               parser.indents = append(parser.indents, parser.indent)
+               parser.indent = column
+
+               // Create a token and insert it into the queue.
+               token := yaml_token_t{
+                       typ:        typ,
+                       start_mark: mark,
+                       end_mark:   mark,
+               }
+               if number > -1 {
+                       number -= parser.tokens_parsed
+               }
+               yaml_insert_token(parser, number, &token)
+       }
+       return true
+}
+
+// Pop indentation levels from the indents stack until the current level
+// becomes less or equal to the column.  For each indentation level, append
+// the BLOCK-END token.
+func yaml_parser_unroll_indent(parser *yaml_parser_t, column int) bool {
+       // In the flow context, do nothing.
+       if parser.flow_level > 0 {
+               return true
+       }
+
+       // Loop through the indentation levels in the stack.
+       for parser.indent > column {
+               // Create a token and append it to the queue.
+               token := yaml_token_t{
+                       typ:        yaml_BLOCK_END_TOKEN,
+                       start_mark: parser.mark,
+                       end_mark:   parser.mark,
+               }
+               yaml_insert_token(parser, -1, &token)
+
+               // Pop the indentation level.
+               parser.indent = parser.indents[len(parser.indents)-1]
+               parser.indents = parser.indents[:len(parser.indents)-1]
+       }
+       return true
+}
+
+// Initialize the scanner and produce the STREAM-START token.
+func yaml_parser_fetch_stream_start(parser *yaml_parser_t) bool {
+
+       // Set the initial indentation.
+       parser.indent = -1
+
+       // Initialize the simple key stack.
+       parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{})
+
+       // A simple key is allowed at the beginning of the stream.
+       parser.simple_key_allowed = true
+
+       // We have started.
+       parser.stream_start_produced = true
+
+       // Create the STREAM-START token and append it to the queue.
+       token := yaml_token_t{
+               typ:        yaml_STREAM_START_TOKEN,
+               start_mark: parser.mark,
+               end_mark:   parser.mark,
+               encoding:   parser.encoding,
+       }
+       yaml_insert_token(parser, -1, &token)
+       return true
+}
+
+// Produce the STREAM-END token and shut down the scanner.
+func yaml_parser_fetch_stream_end(parser *yaml_parser_t) bool {
+
+       // Force new line.
+       if parser.mark.column != 0 {
+               parser.mark.column = 0
+               parser.mark.line++
+       }
+
+       // Reset the indentation level.
+       if !yaml_parser_unroll_indent(parser, -1) {
+               return false
+       }
+
+       // Reset simple keys.
+       if !yaml_parser_remove_simple_key(parser) {
+               return false
+       }
+
+       parser.simple_key_allowed = false
+
+       // Create the STREAM-END token and append it to the queue.
+       token := yaml_token_t{
+               typ:        yaml_STREAM_END_TOKEN,
+               start_mark: parser.mark,
+               end_mark:   parser.mark,
+       }
+       yaml_insert_token(parser, -1, &token)
+       return true
+}
+
+// Produce a VERSION-DIRECTIVE or TAG-DIRECTIVE token.
+func yaml_parser_fetch_directive(parser *yaml_parser_t) bool {
+       // Reset the indentation level.
+       if !yaml_parser_unroll_indent(parser, -1) {
+               return false
+       }
+
+       // Reset simple keys.
+       if !yaml_parser_remove_simple_key(parser) {
+               return false
+       }
+
+       parser.simple_key_allowed = false
+
+       // Create the YAML-DIRECTIVE or TAG-DIRECTIVE token.
+       token := yaml_token_t{}
+       if !yaml_parser_scan_directive(parser, &token) {
+               return false
+       }
+       // Append the token to the queue.
+       yaml_insert_token(parser, -1, &token)
+       return true
+}
+
+// Produce the DOCUMENT-START or DOCUMENT-END token.
+func yaml_parser_fetch_document_indicator(parser *yaml_parser_t, typ yaml_token_type_t) bool {
+       // Reset the indentation level.
+       if !yaml_parser_unroll_indent(parser, -1) {
+               return false
+       }
+
+       // Reset simple keys.
+       if !yaml_parser_remove_simple_key(parser) {
+               return false
+       }
+
+       parser.simple_key_allowed = false
+
+       // Consume the token.
+       start_mark := parser.mark
+
+       skip(parser)
+       skip(parser)
+       skip(parser)
+
+       end_mark := parser.mark
+
+       // Create the DOCUMENT-START or DOCUMENT-END token.
+       token := yaml_token_t{
+               typ:        typ,
+               start_mark: start_mark,
+               end_mark:   end_mark,
+       }
+       // Append the token to the queue.
+       yaml_insert_token(parser, -1, &token)
+       return true
+}
+
+// Produce the FLOW-SEQUENCE-START or FLOW-MAPPING-START token.
+func yaml_parser_fetch_flow_collection_start(parser *yaml_parser_t, typ yaml_token_type_t) bool {
+       // The indicators '[' and '{' may start a simple key.
+       if !yaml_parser_save_simple_key(parser) {
+               return false
+       }
+
+       // Increase the flow level.
+       if !yaml_parser_increase_flow_level(parser) {
+               return false
+       }
+
+       // A simple key may follow the indicators '[' and '{'.
+       parser.simple_key_allowed = true
+
+       // Consume the token.
+       start_mark := parser.mark
+       skip(parser)
+       end_mark := parser.mark
+
+       // Create the FLOW-SEQUENCE-START of FLOW-MAPPING-START token.
+       token := yaml_token_t{
+               typ:        typ,
+               start_mark: start_mark,
+               end_mark:   end_mark,
+       }
+       // Append the token to the queue.
+       yaml_insert_token(parser, -1, &token)
+       return true
+}
+
+// Produce the FLOW-SEQUENCE-END or FLOW-MAPPING-END token.
+func yaml_parser_fetch_flow_collection_end(parser *yaml_parser_t, typ yaml_token_type_t) bool {
+       // Reset any potential simple key on the current flow level.
+       if !yaml_parser_remove_simple_key(parser) {
+               return false
+       }
+
+       // Decrease the flow level.
+       if !yaml_parser_decrease_flow_level(parser) {
+               return false
+       }
+
+       // No simple keys after the indicators ']' and '}'.
+       parser.simple_key_allowed = false
+
+       // Consume the token.
+
+       start_mark := parser.mark
+       skip(parser)
+       end_mark := parser.mark
+
+       // Create the FLOW-SEQUENCE-END of FLOW-MAPPING-END token.
+       token := yaml_token_t{
+               typ:        typ,
+               start_mark: start_mark,
+               end_mark:   end_mark,
+       }
+       // Append the token to the queue.
+       yaml_insert_token(parser, -1, &token)
+       return true
+}
+
+// Produce the FLOW-ENTRY token.
+func yaml_parser_fetch_flow_entry(parser *yaml_parser_t) bool {
+       // Reset any potential simple keys on the current flow level.
+       if !yaml_parser_remove_simple_key(parser) {
+               return false
+       }
+
+       // Simple keys are allowed after ','.
+       parser.simple_key_allowed = true
+
+       // Consume the token.
+       start_mark := parser.mark
+       skip(parser)
+       end_mark := parser.mark
+
+       // Create the FLOW-ENTRY token and append it to the queue.
+       token := yaml_token_t{
+               typ:        yaml_FLOW_ENTRY_TOKEN,
+               start_mark: start_mark,
+               end_mark:   end_mark,
+       }
+       yaml_insert_token(parser, -1, &token)
+       return true
+}
+
+// Produce the BLOCK-ENTRY token.
+func yaml_parser_fetch_block_entry(parser *yaml_parser_t) bool {
+       // Check if the scanner is in the block context.
+       if parser.flow_level == 0 {
+               // Check if we are allowed to start a new entry.
+               if !parser.simple_key_allowed {
+                       return yaml_parser_set_scanner_error(parser, "", parser.mark,
+                               "block sequence entries are not allowed in this context")
+               }
+               // Add the BLOCK-SEQUENCE-START token if needed.
+               if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_SEQUENCE_START_TOKEN, parser.mark) {
+                       return false
+               }
+       } else {
+               // It is an error for the '-' indicator to occur in the flow context,
+               // but we let the Parser detect and report about it because the Parser
+               // is able to point to the context.
+       }
+
+       // Reset any potential simple keys on the current flow level.
+       if !yaml_parser_remove_simple_key(parser) {
+               return false
+       }
+
+       // Simple keys are allowed after '-'.
+       parser.simple_key_allowed = true
+
+       // Consume the token.
+       start_mark := parser.mark
+       skip(parser)
+       end_mark := parser.mark
+
+       // Create the BLOCK-ENTRY token and append it to the queue.
+       token := yaml_token_t{
+               typ:        yaml_BLOCK_ENTRY_TOKEN,
+               start_mark: start_mark,
+               end_mark:   end_mark,
+       }
+       yaml_insert_token(parser, -1, &token)
+       return true
+}
+
+// Produce the KEY token.
+func yaml_parser_fetch_key(parser *yaml_parser_t) bool {
+
+       // In the block context, additional checks are required.
+       if parser.flow_level == 0 {
+               // Check if we are allowed to start a new key (not nessesary simple).
+               if !parser.simple_key_allowed {
+                       return yaml_parser_set_scanner_error(parser, "", parser.mark,
+                               "mapping keys are not allowed in this context")
+               }
+               // Add the BLOCK-MAPPING-START token if needed.
+               if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) {
+                       return false
+               }
+       }
+
+       // Reset any potential simple keys on the current flow level.
+       if !yaml_parser_remove_simple_key(parser) {
+               return false
+       }
+
+       // Simple keys are allowed after '?' in the block context.
+       parser.simple_key_allowed = parser.flow_level == 0
+
+       // Consume the token.
+       start_mark := parser.mark
+       skip(parser)
+       end_mark := parser.mark
+
+       // Create the KEY token and append it to the queue.
+       token := yaml_token_t{
+               typ:        yaml_KEY_TOKEN,
+               start_mark: start_mark,
+               end_mark:   end_mark,
+       }
+       yaml_insert_token(parser, -1, &token)
+       return true
+}
+
+// Produce the VALUE token.
+func yaml_parser_fetch_value(parser *yaml_parser_t) bool {
+
+       simple_key := &parser.simple_keys[len(parser.simple_keys)-1]
+
+       // Have we found a simple key?
+       if simple_key.possible {
+               // Create the KEY token and insert it into the queue.
+               token := yaml_token_t{
+                       typ:        yaml_KEY_TOKEN,
+                       start_mark: simple_key.mark,
+                       end_mark:   simple_key.mark,
+               }
+               yaml_insert_token(parser, simple_key.token_number-parser.tokens_parsed, &token)
+
+               // In the block context, we may need to add the BLOCK-MAPPING-START token.
+               if !yaml_parser_roll_indent(parser, simple_key.mark.column,
+                       simple_key.token_number,
+                       yaml_BLOCK_MAPPING_START_TOKEN, simple_key.mark) {
+                       return false
+               }
+
+               // Remove the simple key.
+               simple_key.possible = false
+
+               // A simple key cannot follow another simple key.
+               parser.simple_key_allowed = false
+
+       } else {
+               // The ':' indicator follows a complex key.
+
+               // In the block context, extra checks are required.
+               if parser.flow_level == 0 {
+
+                       // Check if we are allowed to start a complex value.
+                       if !parser.simple_key_allowed {
+                               return yaml_parser_set_scanner_error(parser, "", parser.mark,
+                                       "mapping values are not allowed in this context")
+                       }
+
+                       // Add the BLOCK-MAPPING-START token if needed.
+                       if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) {
+                               return false
+                       }
+               }
+
+               // Simple keys after ':' are allowed in the block context.
+               parser.simple_key_allowed = parser.flow_level == 0
+       }
+
+       // Consume the token.
+       start_mark := parser.mark
+       skip(parser)
+       end_mark := parser.mark
+
+       // Create the VALUE token and append it to the queue.
+       token := yaml_token_t{
+               typ:        yaml_VALUE_TOKEN,
+               start_mark: start_mark,
+               end_mark:   end_mark,
+       }
+       yaml_insert_token(parser, -1, &token)
+       return true
+}
+
+// Produce the ALIAS or ANCHOR token.
+func yaml_parser_fetch_anchor(parser *yaml_parser_t, typ yaml_token_type_t) bool {
+       // An anchor or an alias could be a simple key.
+       if !yaml_parser_save_simple_key(parser) {
+               return false
+       }
+
+       // A simple key cannot follow an anchor or an alias.
+       parser.simple_key_allowed = false
+
+       // Create the ALIAS or ANCHOR token and append it to the queue.
+       var token yaml_token_t
+       if !yaml_parser_scan_anchor(parser, &token, typ) {
+               return false
+       }
+       yaml_insert_token(parser, -1, &token)
+       return true
+}
+
+// Produce the TAG token.
+func yaml_parser_fetch_tag(parser *yaml_parser_t) bool {
+       // A tag could be a simple key.
+       if !yaml_parser_save_simple_key(parser) {
+               return false
+       }
+
+       // A simple key cannot follow a tag.
+       parser.simple_key_allowed = false
+
+       // Create the TAG token and append it to the queue.
+       var token yaml_token_t
+       if !yaml_parser_scan_tag(parser, &token) {
+               return false
+       }
+       yaml_insert_token(parser, -1, &token)
+       return true
+}
+
+// Produce the SCALAR(...,literal) or SCALAR(...,folded) tokens.
+func yaml_parser_fetch_block_scalar(parser *yaml_parser_t, literal bool) bool {
+       // Remove any potential simple keys.
+       if !yaml_parser_remove_simple_key(parser) {
+               return false
+       }
+
+       // A simple key may follow a block scalar.
+       parser.simple_key_allowed = true
+
+       // Create the SCALAR token and append it to the queue.
+       var token yaml_token_t
+       if !yaml_parser_scan_block_scalar(parser, &token, literal) {
+               return false
+       }
+       yaml_insert_token(parser, -1, &token)
+       return true
+}
+
+// Produce the SCALAR(...,single-quoted) or SCALAR(...,double-quoted) tokens.
+func yaml_parser_fetch_flow_scalar(parser *yaml_parser_t, single bool) bool {
+       // A plain scalar could be a simple key.
+       if !yaml_parser_save_simple_key(parser) {
+               return false
+       }
+
+       // A simple key cannot follow a flow scalar.
+       parser.simple_key_allowed = false
+
+       // Create the SCALAR token and append it to the queue.
+       var token yaml_token_t
+       if !yaml_parser_scan_flow_scalar(parser, &token, single) {
+               return false
+       }
+       yaml_insert_token(parser, -1, &token)
+       return true
+}
+
+// Produce the SCALAR(...,plain) token.
+func yaml_parser_fetch_plain_scalar(parser *yaml_parser_t) bool {
+       // A plain scalar could be a simple key.
+       if !yaml_parser_save_simple_key(parser) {
+               return false
+       }
+
+       // A simple key cannot follow a flow scalar.
+       parser.simple_key_allowed = false
+
+       // Create the SCALAR token and append it to the queue.
+       var token yaml_token_t
+       if !yaml_parser_scan_plain_scalar(parser, &token) {
+               return false
+       }
+       yaml_insert_token(parser, -1, &token)
+       return true
+}
+
+// Eat whitespaces and comments until the next token is found.
+func yaml_parser_scan_to_next_token(parser *yaml_parser_t) bool {
+
+       // Until the next token is not found.
+       for {
+               // Allow the BOM mark to start a line.
+               if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+                       return false
+               }
+               if parser.mark.column == 0 && is_bom(parser.buffer, parser.buffer_pos) {
+                       skip(parser)
+               }
+
+               // Eat whitespaces.
+               // Tabs are allowed:
+               //  - in the flow context
+               //  - in the block context, but not at the beginning of the line or
+               //  after '-', '?', or ':' (complex value).
+               if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+                       return false
+               }
+
+               for parser.buffer[parser.buffer_pos] == ' ' || ((parser.flow_level > 0 || !parser.simple_key_allowed) && parser.buffer[parser.buffer_pos] == '\t') {
+                       skip(parser)
+                       if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+                               return false
+                       }
+               }
+
+               // Eat a comment until a line break.
+               if parser.buffer[parser.buffer_pos] == '#' {
+                       for !is_breakz(parser.buffer, parser.buffer_pos) {
+                               skip(parser)
+                               if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+                                       return false
+                               }
+                       }
+               }
+
+               // If it is a line break, eat it.
+               if is_break(parser.buffer, parser.buffer_pos) {
+                       if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {
+                               return false
+                       }
+                       skip_line(parser)
+
+                       // In the block context, a new line may start a simple key.
+                       if parser.flow_level == 0 {
+                               parser.simple_key_allowed = true
+                       }
+               } else {
+                       break // We have found a token.
+               }
+       }
+
+       return true
+}
+
+// Scan a YAML-DIRECTIVE or TAG-DIRECTIVE token.
+//
+// Scope:
+//      %YAML    1.1    # a comment \n
+//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//      %TAG    !yaml!  tag:yaml.org,2002:  \n
+//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+func yaml_parser_scan_directive(parser *yaml_parser_t, token *yaml_token_t) bool {
+       // Eat '%'.
+       start_mark := parser.mark
+       skip(parser)
+
+       // Scan the directive name.
+       var name []byte
+       if !yaml_parser_scan_directive_name(parser, start_mark, &name) {
+               return false
+       }
+
+       // Is it a YAML directive?
+       if bytes.Equal(name, []byte("YAML")) {
+               // Scan the VERSION directive value.
+               var major, minor int8
+               if !yaml_parser_scan_version_directive_value(parser, start_mark, &major, &minor) {
+                       return false
+               }
+               end_mark := parser.mark
+
+               // Create a VERSION-DIRECTIVE token.
+               *token = yaml_token_t{
+                       typ:        yaml_VERSION_DIRECTIVE_TOKEN,
+                       start_mark: start_mark,
+                       end_mark:   end_mark,
+                       major:      major,
+                       minor:      minor,
+               }
+
+               // Is it a TAG directive?
+       } else if bytes.Equal(name, []byte("TAG")) {
+               // Scan the TAG directive value.
+               var handle, prefix []byte
+               if !yaml_parser_scan_tag_directive_value(parser, start_mark, &handle, &prefix) {
+                       return false
+               }
+               end_mark := parser.mark
+
+               // Create a TAG-DIRECTIVE token.
+               *token = yaml_token_t{
+                       typ:        yaml_TAG_DIRECTIVE_TOKEN,
+                       start_mark: start_mark,
+                       end_mark:   end_mark,
+                       value:      handle,
+                       prefix:     prefix,
+               }
+
+               // Unknown directive.
+       } else {
+               yaml_parser_set_scanner_error(parser, "while scanning a directive",
+                       start_mark, "found unknown directive name")
+               return false
+       }
+
+       // Eat the rest of the line including any comments.
+       if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+               return false
+       }
+
+       for is_blank(parser.buffer, parser.buffer_pos) {
+               skip(parser)
+               if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+                       return false
+               }
+       }
+
+       if parser.buffer[parser.buffer_pos] == '#' {
+               for !is_breakz(parser.buffer, parser.buffer_pos) {
+                       skip(parser)
+                       if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+                               return false
+                       }
+               }
+       }
+
+       // Check if we are at the end of the line.
+       if !is_breakz(parser.buffer, parser.buffer_pos) {
+               yaml_parser_set_scanner_error(parser, "while scanning a directive",
+                       start_mark, "did not find expected comment or line break")
+               return false
+       }
+
+       // Eat a line break.
+       if is_break(parser.buffer, parser.buffer_pos) {
+               if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {
+                       return false
+               }
+               skip_line(parser)
+       }
+
+       return true
+}
+
+// Scan the directive name.
+//
+// Scope:
+//      %YAML   1.1     # a comment \n
+//       ^^^^
+//      %TAG    !yaml!  tag:yaml.org,2002:  \n
+//       ^^^
+//
+func yaml_parser_scan_directive_name(parser *yaml_parser_t, start_mark yaml_mark_t, name *[]byte) bool {
+       // Consume the directive name.
+       if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+               return false
+       }
+
+       var s []byte
+       for is_alpha(parser.buffer, parser.buffer_pos) {
+               s = read(parser, s)
+               if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+                       return false
+               }
+       }
+
+       // Check if the name is empty.
+       if len(s) == 0 {
+               yaml_parser_set_scanner_error(parser, "while scanning a directive",
+                       start_mark, "could not find expected directive name")
+               return false
+       }
+
+       // Check for an blank character after the name.
+       if !is_blankz(parser.buffer, parser.buffer_pos) {
+               yaml_parser_set_scanner_error(parser, "while scanning a directive",
+                       start_mark, "found unexpected non-alphabetical character")
+               return false
+       }
+       *name = s
+       return true
+}
+
+// Scan the value of VERSION-DIRECTIVE.
+//
+// Scope:
+//      %YAML   1.1     # a comment \n
+//           ^^^^^^
+func yaml_parser_scan_version_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, major, minor *int8) bool {
+       // Eat whitespaces.
+       if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+               return false
+       }
+       for is_blank(parser.buffer, parser.buffer_pos) {
+               skip(parser)
+               if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+                       return false
+               }
+       }
+
+       // Consume the major version number.
+       if !yaml_parser_scan_version_directive_number(parser, start_mark, major) {
+               return false
+       }
+
+       // Eat '.'.
+       if parser.buffer[parser.buffer_pos] != '.' {
+               return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive",
+                       start_mark, "did not find expected digit or '.' character")
+       }
+
+       skip(parser)
+
+       // Consume the minor version number.
+       if !yaml_parser_scan_version_directive_number(parser, start_mark, minor) {
+               return false
+       }
+       return true
+}
+
+const max_number_length = 2
+
+// Scan the version number of VERSION-DIRECTIVE.
+//
+// Scope:
+//      %YAML   1.1     # a comment \n
+//              ^
+//      %YAML   1.1     # a comment \n
+//                ^
+func yaml_parser_scan_version_directive_number(parser *yaml_parser_t, start_mark yaml_mark_t, number *int8) bool {
+
+       // Repeat while the next character is digit.
+       if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+               return false
+       }
+       var value, length int8
+       for is_digit(parser.buffer, parser.buffer_pos) {
+               // Check if the number is too long.
+               length++
+               if length > max_number_length {
+                       return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive",
+                               start_mark, "found extremely long version number")
+               }
+               value = value*10 + int8(as_digit(parser.buffer, parser.buffer_pos))
+               skip(parser)
+               if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+                       return false
+               }
+       }
+
+       // Check if the number was present.
+       if length == 0 {
+               return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive",
+                       start_mark, "did not find expected version number")
+       }
+       *number = value
+       return true
+}
+
+// Scan the value of a TAG-DIRECTIVE token.
+//
+// Scope:
+//      %TAG    !yaml!  tag:yaml.org,2002:  \n
+//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+//
+func yaml_parser_scan_tag_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, handle, prefix *[]byte) bool {
+       var handle_value, prefix_value []byte
+
+       // Eat whitespaces.
+       if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+               return false
+       }
+
+       for is_blank(parser.buffer, parser.buffer_pos) {
+               skip(parser)
+               if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+                       return false
+               }
+       }
+
+       // Scan a handle.
+       if !yaml_parser_scan_tag_handle(parser, true, start_mark, &handle_value) {
+               return false
+       }
+
+       // Expect a whitespace.
+       if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+               return false
+       }
+       if !is_blank(parser.buffer, parser.buffer_pos) {
+               yaml_parser_set_scanner_error(parser, "while scanning a %TAG directive",
+                       start_mark, "did not find expected whitespace")
+               return false
+       }
+
+       // Eat whitespaces.
+       for is_blank(parser.buffer, parser.buffer_pos) {
+               skip(parser)
+               if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+                       return false
+               }
+       }
+
+       // Scan a prefix.
+       if !yaml_parser_scan_tag_uri(parser, true, nil, start_mark, &prefix_value) {
+               return false
+       }
+
+       // Expect a whitespace or line break.
+       if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+               return false
+       }
+       if !is_blankz(parser.buffer, parser.buffer_pos) {
+               yaml_parser_set_scanner_error(parser, "while scanning a %TAG directive",
+                       start_mark, "did not find expected whitespace or line break")
+               return false
+       }
+
+       *handle = handle_value
+       *prefix = prefix_value
+       return true
+}
+
+func yaml_parser_scan_anchor(parser *yaml_parser_t, token *yaml_token_t, typ yaml_token_type_t) bool {
+       var s []byte
+
+       // Eat the indicator character.
+       start_mark := parser.mark
+       skip(parser)
+
+       // Consume the value.
+       if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+               return false
+       }
+
+       for is_alpha(parser.buffer, parser.buffer_pos) {
+               s = read(parser, s)
+               if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+                       return false
+               }
+       }
+
+       end_mark := parser.mark
+
+       /*
+        * Check if length of the anchor is greater than 0 and it is followed by
+        * a whitespace character or one of the indicators:
+        *
+        *      '?', ':', ',', ']', '}', '%', '@', '`'.
+        */
+
+       if len(s) == 0 ||
+               !(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '?' ||
+                       parser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == ',' ||
+                       parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '}' ||
+                       parser.buffer[parser.buffer_pos] == '%' || parser.buffer[parser.buffer_pos] == '@' ||
+                       parser.buffer[parser.buffer_pos] == '`') {
+               context := "while scanning an alias"
+               if typ == yaml_ANCHOR_TOKEN {
+                       context = "while scanning an anchor"
+               }
+               yaml_parser_set_scanner_error(parser, context, start_mark,
+                       "did not find expected alphabetic or numeric character")
+               return false
+       }
+
+       // Create a token.
+       *token = yaml_token_t{
+               typ:        typ,
+               start_mark: start_mark,
+               end_mark:   end_mark,
+               value:      s,
+       }
+
+       return true
+}
+
+/*
+ * Scan a TAG token.
+ */
+
+func yaml_parser_scan_tag(parser *yaml_parser_t, token *yaml_token_t) bool {
+       var handle, suffix []byte
+
+       start_mark := parser.mark
+
+       // Check if the tag is in the canonical form.
+       if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {
+               return false
+       }
+
+       if parser.buffer[parser.buffer_pos+1] == '<' {
+               // Keep the handle as ''
+
+               // Eat '!<'
+               skip(parser)
+               skip(parser)
+
+               // Consume the tag value.
+               if !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) {
+                       return false
+               }
+
+               // Check for '>' and eat it.
+               if parser.buffer[parser.buffer_pos] != '>' {
+                       yaml_parser_set_scanner_error(parser, "while scanning a tag",
+                               start_mark, "did not find the expected '>'")
+                       return false
+               }
+
+               skip(parser)
+       } else {
+               // The tag has either the '!suffix' or the '!handle!suffix' form.
+
+               // First, try to scan a handle.
+               if !yaml_parser_scan_tag_handle(parser, false, start_mark, &handle) {
+                       return false
+               }
+
+               // Check if it is, indeed, handle.
+               if handle[0] == '!' && len(handle) > 1 && handle[len(handle)-1] == '!' {
+                       // Scan the suffix now.
+                       if !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) {
+                               return false
+                       }
+               } else {
+                       // It wasn't a handle after all.  Scan the rest of the tag.
+                       if !yaml_parser_scan_tag_uri(parser, false, handle, start_mark, &suffix) {
+                               return false
+                       }
+
+                       // Set the handle to '!'.
+                       handle = []byte{'!'}
+
+                       // A special case: the '!' tag.  Set the handle to '' and the
+                       // suffix to '!'.
+                       if len(suffix) == 0 {
+                               handle, suffix = suffix, handle
+                       }
+               }
+       }
+
+       // Check the character which ends the tag.
+       if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+               return false
+       }
+       if !is_blankz(parser.buffer, parser.buffer_pos) {
+               yaml_parser_set_scanner_error(parser, "while scanning a tag",
+                       start_mark, "did not find expected whitespace or line break")
+               return false
+       }
+
+       end_mark := parser.mark
+
+       // Create a token.
+       *token = yaml_token_t{
+               typ:        yaml_TAG_TOKEN,
+               start_mark: start_mark,
+               end_mark:   end_mark,
+               value:      handle,
+               suffix:     suffix,
+       }
+       return true
+}
+
+// Scan a tag handle.
+func yaml_parser_scan_tag_handle(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, handle *[]byte) bool {
+       // Check the initial '!' character.
+       if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+               return false
+       }
+       if parser.buffer[parser.buffer_pos] != '!' {
+               yaml_parser_set_scanner_tag_error(parser, directive,
+                       start_mark, "did not find expected '!'")
+               return false
+       }
+
+       var s []byte
+
+       // Copy the '!' character.
+       s = read(parser, s)
+
+       // Copy all subsequent alphabetical and numerical characters.
+       if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+               return false
+       }
+       for is_alpha(parser.buffer, parser.buffer_pos) {
+               s = read(parser, s)
+               if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+                       return false
+               }
+       }
+
+       // Check if the trailing character is '!' and copy it.
+       if parser.buffer[parser.buffer_pos] == '!' {
+               s = read(parser, s)
+       } else {
+               // It's either the '!' tag or not really a tag handle.  If it's a %TAG
+               // directive, it's an error.  If it's a tag token, it must be a part of URI.
+               if directive && !(s[0] == '!' && s[1] == 0) {
+                       yaml_parser_set_scanner_tag_error(parser, directive,
+                               start_mark, "did not find expected '!'")
+                       return false
+               }
+       }
+
+       *handle = s
+       return true
+}
+
+// Scan a tag.
+func yaml_parser_scan_tag_uri(parser *yaml_parser_t, directive bool, head []byte, start_mark yaml_mark_t, uri *[]byte) bool {
+       //size_t length = head ? strlen((char *)head) : 0
+       var s []byte
+
+       // Copy the head if needed.
+       //
+       // Note that we don't copy the leading '!' character.
+       if len(head) > 1 {
+               s = append(s, head[1:]...)
+       }
+
+       // Scan the tag.
+       if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+               return false
+       }
+
+       // The set of characters that may appear in URI is as follows:
+       //
+       //      '0'-'9', 'A'-'Z', 'a'-'z', '_', '-', ';', '/', '?', ':', '@', '&',
+       //      '=', '+', '$', ',', '.', '!', '~', '*', '\'', '(', ')', '[', ']',
+       //      '%'.
+       // [Go] Convert this into more reasonable logic.
+       for is_alpha(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == ';' ||
+               parser.buffer[parser.buffer_pos] == '/' || parser.buffer[parser.buffer_pos] == '?' ||
+               parser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == '@' ||
+               parser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '=' ||
+               parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '$' ||
+               parser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '.' ||
+               parser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '~' ||
+               parser.buffer[parser.buffer_pos] == '*' || parser.buffer[parser.buffer_pos] == '\'' ||
+               parser.buffer[parser.buffer_pos] == '(' || parser.buffer[parser.buffer_pos] == ')' ||
+               parser.buffer[parser.buffer_pos] == '[' || parser.buffer[parser.buffer_pos] == ']' ||
+               parser.buffer[parser.buffer_pos] == '%' {
+               // Check if it is a URI-escape sequence.
+               if parser.buffer[parser.buffer_pos] == '%' {
+                       if !yaml_parser_scan_uri_escapes(parser, directive, start_mark, &s) {
+                               return false
+                       }
+               } else {
+                       s = read(parser, s)
+               }
+               if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+                       return false
+               }
+       }
+
+       // Check if the tag is non-empty.
+       if len(s) == 0 {
+               yaml_parser_set_scanner_tag_error(parser, directive,
+                       start_mark, "did not find expected tag URI")
+               return false
+       }
+       *uri = s
+       return true
+}
+
+// Decode an URI-escape sequence corresponding to a single UTF-8 character.
+func yaml_parser_scan_uri_escapes(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, s *[]byte) bool {
+
+       // Decode the required number of characters.
+       w := 1024
+       for w > 0 {
+               // Check for a URI-escaped octet.
+               if parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) {
+                       return false
+               }
+
+               if !(parser.buffer[parser.buffer_pos] == '%' &&
+                       is_hex(parser.buffer, parser.buffer_pos+1) &&
+                       is_hex(parser.buffer, parser.buffer_pos+2)) {
+                       return yaml_parser_set_scanner_tag_error(parser, directive,
+                               start_mark, "did not find URI escaped octet")
+               }
+
+               // Get the octet.
+               octet := byte((as_hex(parser.buffer, parser.buffer_pos+1) << 4) + as_hex(parser.buffer, parser.buffer_pos+2))
+
+               // If it is the leading octet, determine the length of the UTF-8 sequence.
+               if w == 1024 {
+                       w = width(octet)
+                       if w == 0 {
+                               return yaml_parser_set_scanner_tag_error(parser, directive,
+                                       start_mark, "found an incorrect leading UTF-8 octet")
+                       }
+               } else {
+                       // Check if the trailing octet is correct.
+                       if octet&0xC0 != 0x80 {
+                               return yaml_parser_set_scanner_tag_error(parser, directive,
+                                       start_mark, "found an incorrect trailing UTF-8 octet")
+                       }
+               }
+
+               // Copy the octet and move the pointers.
+               *s = append(*s, octet)
+               skip(parser)
+               skip(parser)
+               skip(parser)
+               w--
+       }
+       return true
+}
+
+// Scan a block scalar.
+func yaml_parser_scan_block_scalar(parser *yaml_parser_t, token *yaml_token_t, literal bool) bool {
+       // Eat the indicator '|' or '>'.
+       start_mark := parser.mark
+       skip(parser)
+
+       // Scan the additional block scalar indicators.
+       if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+               return false
+       }
+
+       // Check for a chomping indicator.
+       var chomping, increment int
+       if parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' {
+               // Set the chomping method and eat the indicator.
+               if parser.buffer[parser.buffer_pos] == '+' {
+                       chomping = +1
+               } else {
+                       chomping = -1
+               }
+               skip(parser)
+
+               // Check for an indentation indicator.
+               if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+                       return false
+               }
+               if is_digit(parser.buffer, parser.buffer_pos) {
+                       // Check that the indentation is greater than 0.
+                       if parser.buffer[parser.buffer_pos] == '0' {
+                               yaml_parser_set_scanner_error(parser, "while scanning a block scalar",
+                                       start_mark, "found an indentation indicator equal to 0")
+                               return false
+                       }
+
+                       // Get the indentation level and eat the indicator.
+                       increment = as_digit(parser.buffer, parser.buffer_pos)
+                       skip(parser)
+               }
+
+       } else if is_digit(parser.buffer, parser.buffer_pos) {
+               // Do the same as above, but in the opposite order.
+
+               if parser.buffer[parser.buffer_pos] == '0' {
+                       yaml_parser_set_scanner_error(parser, "while scanning a block scalar",
+                               start_mark, "found an indentation indicator equal to 0")
+                       return false
+               }
+               increment = as_digit(parser.buffer, parser.buffer_pos)
+               skip(parser)
+
+               if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+                       return false
+               }
+               if parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' {
+                       if parser.buffer[parser.buffer_pos] == '+' {
+                               chomping = +1
+                       } else {
+                               chomping = -1
+                       }
+                       skip(parser)
+               }
+       }
+
+       // Eat whitespaces and comments to the end of the line.
+       if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+               return false
+       }
+       for is_blank(parser.buffer, parser.buffer_pos) {
+               skip(parser)
+               if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+                       return false
+               }
+       }
+       if parser.buffer[parser.buffer_pos] == '#' {
+               for !is_breakz(parser.buffer, parser.buffer_pos) {
+                       skip(parser)
+                       if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+                               return false
+                       }
+               }
+       }
+
+       // Check if we are at the end of the line.
+       if !is_breakz(parser.buffer, parser.buffer_pos) {
+               yaml_parser_set_scanner_error(parser, "while scanning a block scalar",
+                       start_mark, "did not find expected comment or line break")
+               return false
+       }
+
+       // Eat a line break.
+       if is_break(parser.buffer, parser.buffer_pos) {
+               if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {
+                       return false
+               }
+               skip_line(parser)
+       }
+
+       end_mark := parser.mark
+
+       // Set the indentation level if it was specified.
+       var indent int
+       if increment > 0 {
+               if parser.indent >= 0 {
+                       indent = parser.indent + increment
+               } else {
+                       indent = increment
+               }
+       }
+
+       // Scan the leading line breaks and determine the indentation level if needed.
+       var s, leading_break, trailing_breaks []byte
+       if !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) {
+               return false
+       }
+
+       // Scan the block scalar content.
+       if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+               return false
+       }
+       var leading_blank, trailing_blank bool
+       for parser.mark.column == indent && !is_z(parser.buffer, parser.buffer_pos) {
+               // We are at the beginning of a non-empty line.
+
+               // Is it a trailing whitespace?
+               trailing_blank = is_blank(parser.buffer, parser.buffer_pos)
+
+               // Check if we need to fold the leading line break.
+               if !literal && !leading_blank && !trailing_blank && len(leading_break) > 0 && leading_break[0] == '\n' {
+                       // Do we need to join the lines by space?
+                       if len(trailing_breaks) == 0 {
+                               s = append(s, ' ')
+                       }
+               } else {
+                       s = append(s, leading_break...)
+               }
+               leading_break = leading_break[:0]
+
+               // Append the remaining line breaks.
+               s = append(s, trailing_breaks...)
+               trailing_breaks = trailing_breaks[:0]
+
+               // Is it a leading whitespace?
+               leading_blank = is_blank(parser.buffer, parser.buffer_pos)
+
+               // Consume the current line.
+               for !is_breakz(parser.buffer, parser.buffer_pos) {
+                       s = read(parser, s)
+                       if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+                               return false
+                       }
+               }
+
+               // Consume the line break.
+               if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {
+                       return false
+               }
+
+               leading_break = read_line(parser, leading_break)
+
+               // Eat the following indentation spaces and line breaks.
+               if !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) {
+                       return false
+               }
+       }
+
+       // Chomp the tail.
+       if chomping != -1 {
+               s = append(s, leading_break...)
+       }
+       if chomping == 1 {
+               s = append(s, trailing_breaks...)
+       }
+
+       // Create a token.
+       *token = yaml_token_t{
+               typ:        yaml_SCALAR_TOKEN,
+               start_mark: start_mark,
+               end_mark:   end_mark,
+               value:      s,
+               style:      yaml_LITERAL_SCALAR_STYLE,
+       }
+       if !literal {
+               token.style = yaml_FOLDED_SCALAR_STYLE
+       }
+       return true
+}
+
+// Scan indentation spaces and line breaks for a block scalar.  Determine the
+// indentation level if needed.
+func yaml_parser_scan_block_scalar_breaks(parser *yaml_parser_t, indent *int, breaks *[]byte, start_mark yaml_mark_t, end_mark *yaml_mark_t) bool {
+       *end_mark = parser.mark
+
+       // Eat the indentation spaces and line breaks.
+       max_indent := 0
+       for {
+               // Eat the indentation spaces.
+               if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+                       return false
+               }
+               for (*indent == 0 || parser.mark.column < *indent) && is_space(parser.buffer, parser.buffer_pos) {
+                       skip(parser)
+                       if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+                               return false
+                       }
+               }
+               if parser.mark.column > max_indent {
+                       max_indent = parser.mark.column
+               }
+
+               // Check for a tab character messing the indentation.
+               if (*indent == 0 || parser.mark.column < *indent) && is_tab(parser.buffer, parser.buffer_pos) {
+                       return yaml_parser_set_scanner_error(parser, "while scanning a block scalar",
+                               start_mark, "found a tab character where an indentation space is expected")
+               }
+
+               // Have we found a non-empty line?
+               if !is_break(parser.buffer, parser.buffer_pos) {
+                       break
+               }
+
+               // Consume the line break.
+               if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {
+                       return false
+               }
+               // [Go] Should really be returning breaks instead.
+               *breaks = read_line(parser, *breaks)
+               *end_mark = parser.mark
+       }
+
+       // Determine the indentation level if needed.
+       if *indent == 0 {
+               *indent = max_indent
+               if *indent < parser.indent+1 {
+                       *indent = parser.indent + 1
+               }
+               if *indent < 1 {
+                       *indent = 1
+               }
+       }
+       return true
+}
+
+// Scan a quoted scalar.
+func yaml_parser_scan_flow_scalar(parser *yaml_parser_t, token *yaml_token_t, single bool) bool {
+       // Eat the left quote.
+       start_mark := parser.mark
+       skip(parser)
+
+       // Consume the content of the quoted scalar.
+       var s, leading_break, trailing_breaks, whitespaces []byte
+       for {
+               // Check that there are no document indicators at the beginning of the line.
+               if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) {
+                       return false
+               }
+
+               if parser.mark.column == 0 &&
+                       ((parser.buffer[parser.buffer_pos+0] == '-' &&
+                               parser.buffer[parser.buffer_pos+1] == '-' &&
+                               parser.buffer[parser.buffer_pos+2] == '-') ||
+                               (parser.buffer[parser.buffer_pos+0] == '.' &&
+                                       parser.buffer[parser.buffer_pos+1] == '.' &&
+                                       parser.buffer[parser.buffer_pos+2] == '.')) &&
+                       is_blankz(parser.buffer, parser.buffer_pos+3) {
+                       yaml_parser_set_scanner_error(parser, "while scanning a quoted scalar",
+                               start_mark, "found unexpected document indicator")
+                       return false
+               }
+
+               // Check for EOF.
+               if is_z(parser.buffer, parser.buffer_pos) {
+                       yaml_parser_set_scanner_error(parser, "while scanning a quoted scalar",
+                               start_mark, "found unexpected end of stream")
+                       return false
+               }
+
+               // Consume non-blank characters.
+               leading_blanks := false
+               for !is_blankz(parser.buffer, parser.buffer_pos) {
+                       if single && parser.buffer[parser.buffer_pos] == '\'' && parser.buffer[parser.buffer_pos+1] == '\'' {
+                               // Is is an escaped single quote.
+                               s = append(s, '\'')
+                               skip(parser)
+                               skip(parser)
+
+                       } else if single && parser.buffer[parser.buffer_pos] == '\'' {
+                               // It is a right single quote.
+                               break
+                       } else if !single && parser.buffer[parser.buffer_pos] == '"' {
+                               // It is a right double quote.
+                               break
+
+                       } else if !single && parser.buffer[parser.buffer_pos] == '\\' && is_break(parser.buffer, parser.buffer_pos+1) {
+                               // It is an escaped line break.
+                               if parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) {
+                                       return false
+                               }
+                               skip(parser)
+                               skip_line(parser)
+                               leading_blanks = true
+                               break
+
+                       } else if !single && parser.buffer[parser.buffer_pos] == '\\' {
+                               // It is an escape sequence.
+                               code_length := 0
+
+                               // Check the escape character.
+                               switch parser.buffer[parser.buffer_pos+1] {
+                               case '0':
+                                       s = append(s, 0)
+                               case 'a':
+                                       s = append(s, '\x07')
+                               case 'b':
+                                       s = append(s, '\x08')
+                               case 't', '\t':
+                                       s = append(s, '\x09')
+                               case 'n':
+                                       s = append(s, '\x0A')
+                               case 'v':
+                                       s = append(s, '\x0B')
+                               case 'f':
+                                       s = append(s, '\x0C')
+                               case 'r':
+                                       s = append(s, '\x0D')
+                               case 'e':
+                                       s = append(s, '\x1B')
+                               case ' ':
+                                       s = append(s, '\x20')
+                               case '"':
+                                       s = append(s, '"')
+                               case '\'':
+                                       s = append(s, '\'')
+                               case '\\':
+                                       s = append(s, '\\')
+                               case 'N': // NEL (#x85)
+                                       s = append(s, '\xC2')
+                                       s = append(s, '\x85')
+                               case '_': // #xA0
+                                       s = append(s, '\xC2')
+                                       s = append(s, '\xA0')
+                               case 'L': // LS (#x2028)
+                                       s = append(s, '\xE2')
+                                       s = append(s, '\x80')
+                                       s = append(s, '\xA8')
+                               case 'P': // PS (#x2029)
+                                       s = append(s, '\xE2')
+                                       s = append(s, '\x80')
+                                       s = append(s, '\xA9')
+                               case 'x':
+                                       code_length = 2
+                               case 'u':
+                                       code_length = 4
+                               case 'U':
+                                       code_length = 8
+                               default:
+                                       yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar",
+                                               start_mark, "found unknown escape character")
+                                       return false
+                               }
+
+                               skip(parser)
+                               skip(parser)
+
+                               // Consume an arbitrary escape code.
+                               if code_length > 0 {
+                                       var value int
+
+                                       // Scan the character value.
+                                       if parser.unread < code_length && !yaml_parser_update_buffer(parser, code_length) {
+                                               return false
+                                       }
+                                       for k := 0; k < code_length; k++ {
+                                               if !is_hex(parser.buffer, parser.buffer_pos+k) {
+                                                       yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar",
+                                                               start_mark, "did not find expected hexdecimal number")
+                                                       return false
+                                               }
+                                               value = (value << 4) + as_hex(parser.buffer, parser.buffer_pos+k)
+                                       }
+
+                                       // Check the value and write the character.
+                                       if (value >= 0xD800 && value <= 0xDFFF) || value > 0x10FFFF {
+                                               yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar",
+                                                       start_mark, "found invalid Unicode character escape code")
+                                               return false
+                                       }
+                                       if value <= 0x7F {
+                                               s = append(s, byte(value))
+                                       } else if value <= 0x7FF {
+                                               s = append(s, byte(0xC0+(value>>6)))
+                                               s = append(s, byte(0x80+(value&0x3F)))
+                                       } else if value <= 0xFFFF {
+                                               s = append(s, byte(0xE0+(value>>12)))
+                                               s = append(s, byte(0x80+((value>>6)&0x3F)))
+                                               s = append(s, byte(0x80+(value&0x3F)))
+                                       } else {
+                                               s = append(s, byte(0xF0+(value>>18)))
+                                               s = append(s, byte(0x80+((value>>12)&0x3F)))
+                                               s = append(s, byte(0x80+((value>>6)&0x3F)))
+                                               s = append(s, byte(0x80+(value&0x3F)))
+                                       }
+
+                                       // Advance the pointer.
+                                       for k := 0; k < code_length; k++ {
+                                               skip(parser)
+                                       }
+                               }
+                       } else {
+                               // It is a non-escaped non-blank character.
+                               s = read(parser, s)
+                       }
+                       if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {
+                               return false
+                       }
+               }
+
+               // Check if we are at the end of the scalar.
+               if single {
+                       if parser.buffer[parser.buffer_pos] == '\'' {
+                               break
+                       }
+               } else {
+                       if parser.buffer[parser.buffer_pos] == '"' {
+                               break
+                       }
+               }
+
+               // Consume blank characters.
+               if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+                       return false
+               }
+
+               for is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) {
+                       if is_blank(parser.buffer, parser.buffer_pos) {
+                               // Consume a space or a tab character.
+                               if !leading_blanks {
+                                       whitespaces = read(parser, whitespaces)
+                               } else {
+                                       skip(parser)
+                               }
+                       } else {
+                               if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {
+                                       return false
+                               }
+
+                               // Check if it is a first line break.
+                               if !leading_blanks {
+                                       whitespaces = whitespaces[:0]
+                                       leading_break = read_line(parser, leading_break)
+                                       leading_blanks = true
+                               } else {
+                                       trailing_breaks = read_line(parser, trailing_breaks)
+                               }
+                       }
+                       if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+                               return false
+                       }
+               }
+
+               // Join the whitespaces or fold line breaks.
+               if leading_blanks {
+                       // Do we need to fold line breaks?
+                       if len(leading_break) > 0 && leading_break[0] == '\n' {
+                               if len(trailing_breaks) == 0 {
+                                       s = append(s, ' ')
+                               } else {
+                                       s = append(s, trailing_breaks...)
+                               }
+                       } else {
+                               s = append(s, leading_break...)
+                               s = append(s, trailing_breaks...)
+                       }
+                       trailing_breaks = trailing_breaks[:0]
+                       leading_break = leading_break[:0]
+               } else {
+                       s = append(s, whitespaces...)
+                       whitespaces = whitespaces[:0]
+               }
+       }
+
+       // Eat the right quote.
+       skip(parser)
+       end_mark := parser.mark
+
+       // Create a token.
+       *token = yaml_token_t{
+               typ:        yaml_SCALAR_TOKEN,
+               start_mark: start_mark,
+               end_mark:   end_mark,
+               value:      s,
+               style:      yaml_SINGLE_QUOTED_SCALAR_STYLE,
+       }
+       if !single {
+               token.style = yaml_DOUBLE_QUOTED_SCALAR_STYLE
+       }
+       return true
+}
+
+// Scan a plain scalar.
+func yaml_parser_scan_plain_scalar(parser *yaml_parser_t, token *yaml_token_t) bool {
+
+       var s, leading_break, trailing_breaks, whitespaces []byte
+       var leading_blanks bool
+       var indent = parser.indent + 1
+
+       start_mark := parser.mark
+       end_mark := parser.mark
+
+       // Consume the content of the plain scalar.
+       for {
+               // Check for a document indicator.
+               if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) {
+                       return false
+               }
+               if parser.mark.column == 0 &&
+                       ((parser.buffer[parser.buffer_pos+0] == '-' &&
+                               parser.buffer[parser.buffer_pos+1] == '-' &&
+                               parser.buffer[parser.buffer_pos+2] == '-') ||
+                               (parser.buffer[parser.buffer_pos+0] == '.' &&
+                                       parser.buffer[parser.buffer_pos+1] == '.' &&
+                                       parser.buffer[parser.buffer_pos+2] == '.')) &&
+                       is_blankz(parser.buffer, parser.buffer_pos+3) {
+                       break
+               }
+
+               // Check for a comment.
+               if parser.buffer[parser.buffer_pos] == '#' {
+                       break
+               }
+
+               // Consume non-blank characters.
+               for !is_blankz(parser.buffer, parser.buffer_pos) {
+
+                       // Check for 'x:x' in the flow context. TODO: Fix the test "spec-08-13".
+                       if parser.flow_level > 0 &&
+                               parser.buffer[parser.buffer_pos] == ':' &&
+                               !is_blankz(parser.buffer, parser.buffer_pos+1) {
+                               yaml_parser_set_scanner_error(parser, "while scanning a plain scalar",
+                                       start_mark, "found unexpected ':'")
+                               return false
+                       }
+
+                       // Check for indicators that may end a plain scalar.
+                       if (parser.buffer[parser.buffer_pos] == ':' && is_blankz(parser.buffer, parser.buffer_pos+1)) ||
+                               (parser.flow_level > 0 &&
+                                       (parser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == ':' ||
+                                               parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == '[' ||
+                                               parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' ||
+                                               parser.buffer[parser.buffer_pos] == '}')) {
+                               break
+                       }
+
+                       // Check if we need to join whitespaces and breaks.
+                       if leading_blanks || len(whitespaces) > 0 {
+                               if leading_blanks {
+                                       // Do we need to fold line breaks?
+                                       if leading_break[0] == '\n' {
+                                               if len(trailing_breaks) == 0 {
+                                                       s = append(s, ' ')
+                                               } else {
+                                                       s = append(s, trailing_breaks...)
+                                               }
+                                       } else {
+                                               s = append(s, leading_break...)
+                                               s = append(s, trailing_breaks...)
+                                       }
+                                       trailing_breaks = trailing_breaks[:0]
+                                       leading_break = leading_break[:0]
+                                       leading_blanks = false
+                               } else {
+                                       s = append(s, whitespaces...)
+                                       whitespaces = whitespaces[:0]
+                               }
+                       }
+
+                       // Copy the character.
+                       s = read(parser, s)
+
+                       end_mark = parser.mark
+                       if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {
+                               return false
+                       }
+               }
+
+               // Is it the end?
+               if !(is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos)) {
+                       break
+               }
+
+               // Consume blank characters.
+               if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+                       return false
+               }
+
+               for is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) {
+                       if is_blank(parser.buffer, parser.buffer_pos) {
+
+                               // Check for tab character that abuse indentation.
+                               if leading_blanks && parser.mark.column < indent && is_tab(parser.buffer, parser.buffer_pos) {
+                                       yaml_parser_set_scanner_error(parser, "while scanning a plain scalar",
+                                               start_mark, "found a tab character that violate indentation")
+                                       return false
+                               }
+
+                               // Consume a space or a tab character.
+                               if !leading_blanks {
+                                       whitespaces = read(parser, whitespaces)
+                               } else {
+                                       skip(parser)
+                               }
+                       } else {
+                               if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) {
+                                       return false
+                               }
+
+                               // Check if it is a first line break.
+                               if !leading_blanks {
+                                       whitespaces = whitespaces[:0]
+                                       leading_break = read_line(parser, leading_break)
+                                       leading_blanks = true
+                               } else {
+                                       trailing_breaks = read_line(parser, trailing_breaks)
+                               }
+                       }
+                       if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) {
+                               return false
+                       }
+               }
+
+               // Check indentation level.
+               if parser.flow_level == 0 && parser.mark.column < indent {
+                       break
+               }
+       }
+
+       // Create a token.
+       *token = yaml_token_t{
+               typ:        yaml_SCALAR_TOKEN,
+               start_mark: start_mark,
+               end_mark:   end_mark,
+               value:      s,
+               style:      yaml_PLAIN_SCALAR_STYLE,
+       }
+
+       // Note that we change the 'simple_key_allowed' flag.
+       if leading_blanks {
+               parser.simple_key_allowed = true
+       }
+       return true
+}
diff --git a/vendor/gopkg.in/yaml.v2/sorter.go b/vendor/gopkg.in/yaml.v2/sorter.go
new file mode 100644 (file)
index 0000000..5958822
--- /dev/null
@@ -0,0 +1,104 @@
+package yaml
+
+import (
+       "reflect"
+       "unicode"
+)
+
+type keyList []reflect.Value
+
+func (l keyList) Len() int      { return len(l) }
+func (l keyList) Swap(i, j int) { l[i], l[j] = l[j], l[i] }
+func (l keyList) Less(i, j int) bool {
+       a := l[i]
+       b := l[j]
+       ak := a.Kind()
+       bk := b.Kind()
+       for (ak == reflect.Interface || ak == reflect.Ptr) && !a.IsNil() {
+               a = a.Elem()
+               ak = a.Kind()
+       }
+       for (bk == reflect.Interface || bk == reflect.Ptr) && !b.IsNil() {
+               b = b.Elem()
+               bk = b.Kind()
+       }
+       af, aok := keyFloat(a)
+       bf, bok := keyFloat(b)
+       if aok && bok {
+               if af != bf {
+                       return af < bf
+               }
+               if ak != bk {
+                       return ak < bk
+               }
+               return numLess(a, b)
+       }
+       if ak != reflect.String || bk != reflect.String {
+               return ak < bk
+       }
+       ar, br := []rune(a.String()), []rune(b.String())
+       for i := 0; i < len(ar) && i < len(br); i++ {
+               if ar[i] == br[i] {
+                       continue
+               }
+               al := unicode.IsLetter(ar[i])
+               bl := unicode.IsLetter(br[i])
+               if al && bl {
+                       return ar[i] < br[i]
+               }
+               if al || bl {
+                       return bl
+               }
+               var ai, bi int
+               var an, bn int64
+               for ai = i; ai < len(ar) && unicode.IsDigit(ar[ai]); ai++ {
+                       an = an*10 + int64(ar[ai]-'0')
+               }
+               for bi = i; bi < len(br) && unicode.IsDigit(br[bi]); bi++ {
+                       bn = bn*10 + int64(br[bi]-'0')
+               }
+               if an != bn {
+                       return an < bn
+               }
+               if ai != bi {
+                       return ai < bi
+               }
+               return ar[i] < br[i]
+       }
+       return len(ar) < len(br)
+}
+
+// keyFloat returns a float value for v if it is a number/bool
+// and whether it is a number/bool or not.
+func keyFloat(v reflect.Value) (f float64, ok bool) {
+       switch v.Kind() {
+       case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
+               return float64(v.Int()), true
+       case reflect.Float32, reflect.Float64:
+               return v.Float(), true
+       case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
+               return float64(v.Uint()), true
+       case reflect.Bool:
+               if v.Bool() {
+                       return 1, true
+               }
+               return 0, true
+       }
+       return 0, false
+}
+
+// numLess returns whether a < b.
+// a and b must necessarily have the same kind.
+func numLess(a, b reflect.Value) bool {
+       switch a.Kind() {
+       case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
+               return a.Int() < b.Int()
+       case reflect.Float32, reflect.Float64:
+               return a.Float() < b.Float()
+       case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
+               return a.Uint() < b.Uint()
+       case reflect.Bool:
+               return !a.Bool() && b.Bool()
+       }
+       panic("not a number")
+}
diff --git a/vendor/gopkg.in/yaml.v2/writerc.go b/vendor/gopkg.in/yaml.v2/writerc.go
new file mode 100644 (file)
index 0000000..190362f
--- /dev/null
@@ -0,0 +1,89 @@
+package yaml
+
+// Set the writer error and return false.
+func yaml_emitter_set_writer_error(emitter *yaml_emitter_t, problem string) bool {
+       emitter.error = yaml_WRITER_ERROR
+       emitter.problem = problem
+       return false
+}
+
+// Flush the output buffer.
+func yaml_emitter_flush(emitter *yaml_emitter_t) bool {
+       if emitter.write_handler == nil {
+               panic("write handler not set")
+       }
+
+       // Check if the buffer is empty.
+       if emitter.buffer_pos == 0 {
+               return true
+       }
+
+       // If the output encoding is UTF-8, we don't need to recode the buffer.
+       if emitter.encoding == yaml_UTF8_ENCODING {
+               if err := emitter.write_handler(emitter, emitter.buffer[:emitter.buffer_pos]); err != nil {
+                       return yaml_emitter_set_writer_error(emitter, "write error: "+err.Error())
+               }
+               emitter.buffer_pos = 0
+               return true
+       }
+
+       // Recode the buffer into the raw buffer.
+       var low, high int
+       if emitter.encoding == yaml_UTF16LE_ENCODING {
+               low, high = 0, 1
+       } else {
+               high, low = 1, 0
+       }
+
+       pos := 0
+       for pos < emitter.buffer_pos {
+               // See the "reader.c" code for more details on UTF-8 encoding.  Note
+               // that we assume that the buffer contains a valid UTF-8 sequence.
+
+               // Read the next UTF-8 character.
+               octet := emitter.buffer[pos]
+
+               var w int
+               var value rune
+               switch {
+               case octet&0x80 == 0x00:
+                       w, value = 1, rune(octet&0x7F)
+               case octet&0xE0 == 0xC0:
+                       w, value = 2, rune(octet&0x1F)
+               case octet&0xF0 == 0xE0:
+                       w, value = 3, rune(octet&0x0F)
+               case octet&0xF8 == 0xF0:
+                       w, value = 4, rune(octet&0x07)
+               }
+               for k := 1; k < w; k++ {
+                       octet = emitter.buffer[pos+k]
+                       value = (value << 6) + (rune(octet) & 0x3F)
+               }
+               pos += w
+
+               // Write the character.
+               if value < 0x10000 {
+                       var b [2]byte
+                       b[high] = byte(value >> 8)
+                       b[low] = byte(value & 0xFF)
+                       emitter.raw_buffer = append(emitter.raw_buffer, b[0], b[1])
+               } else {
+                       // Write the character using a surrogate pair (check "reader.c").
+                       var b [4]byte
+                       value -= 0x10000
+                       b[high] = byte(0xD8 + (value >> 18))
+                       b[low] = byte((value >> 10) & 0xFF)
+                       b[high+2] = byte(0xDC + ((value >> 8) & 0xFF))
+                       b[low+2] = byte(value & 0xFF)
+                       emitter.raw_buffer = append(emitter.raw_buffer, b[0], b[1], b[2], b[3])
+               }
+       }
+
+       // Write the raw buffer.
+       if err := emitter.write_handler(emitter, emitter.raw_buffer); err != nil {
+               return yaml_emitter_set_writer_error(emitter, "write error: "+err.Error())
+       }
+       emitter.buffer_pos = 0
+       emitter.raw_buffer = emitter.raw_buffer[:0]
+       return true
+}
diff --git a/vendor/gopkg.in/yaml.v2/yaml.go b/vendor/gopkg.in/yaml.v2/yaml.go
new file mode 100644 (file)
index 0000000..36d6b88
--- /dev/null
@@ -0,0 +1,346 @@
+// Package yaml implements YAML support for the Go language.
+//
+// Source code and other details for the project are available at GitHub:
+//
+//   https://github.com/go-yaml/yaml
+//
+package yaml
+
+import (
+       "errors"
+       "fmt"
+       "reflect"
+       "strings"
+       "sync"
+)
+
+// MapSlice encodes and decodes as a YAML map.
+// The order of keys is preserved when encoding and decoding.
+type MapSlice []MapItem
+
+// MapItem is an item in a MapSlice.
+type MapItem struct {
+       Key, Value interface{}
+}
+
+// The Unmarshaler interface may be implemented by types to customize their
+// behavior when being unmarshaled from a YAML document. The UnmarshalYAML
+// method receives a function that may be called to unmarshal the original
+// YAML value into a field or variable. It is safe to call the unmarshal
+// function parameter more than once if necessary.
+type Unmarshaler interface {
+       UnmarshalYAML(unmarshal func(interface{}) error) error
+}
+
+// The Marshaler interface may be implemented by types to customize their
+// behavior when being marshaled into a YAML document. The returned value
+// is marshaled in place of the original value implementing Marshaler.
+//
+// If an error is returned by MarshalYAML, the marshaling procedure stops
+// and returns with the provided error.
+type Marshaler interface {
+       MarshalYAML() (interface{}, error)
+}
+
+// Unmarshal decodes the first document found within the in byte slice
+// and assigns decoded values into the out value.
+//
+// Maps and pointers (to a struct, string, int, etc) are accepted as out
+// values. If an internal pointer within a struct is not initialized,
+// the yaml package will initialize it if necessary for unmarshalling
+// the provided data. The out parameter must not be nil.
+//
+// The type of the decoded values should be compatible with the respective
+// values in out. If one or more values cannot be decoded due to a type
+// mismatches, decoding continues partially until the end of the YAML
+// content, and a *yaml.TypeError is returned with details for all
+// missed values.
+//
+// Struct fields are only unmarshalled if they are exported (have an
+// upper case first letter), and are unmarshalled using the field name
+// lowercased as the default key. Custom keys may be defined via the
+// "yaml" name in the field tag: the content preceding the first comma
+// is used as the key, and the following comma-separated options are
+// used to tweak the marshalling process (see Marshal).
+// Conflicting names result in a runtime error.
+//
+// For example:
+//
+//     type T struct {
+//         F int `yaml:"a,omitempty"`
+//         B int
+//     }
+//     var t T
+//     yaml.Unmarshal([]byte("a: 1\nb: 2"), &t)
+//
+// See the documentation of Marshal for the format of tags and a list of
+// supported tag options.
+//
+func Unmarshal(in []byte, out interface{}) (err error) {
+       defer handleErr(&err)
+       d := newDecoder()
+       p := newParser(in)
+       defer p.destroy()
+       node := p.parse()
+       if node != nil {
+               v := reflect.ValueOf(out)
+               if v.Kind() == reflect.Ptr && !v.IsNil() {
+                       v = v.Elem()
+               }
+               d.unmarshal(node, v)
+       }
+       if len(d.terrors) > 0 {
+               return &TypeError{d.terrors}
+       }
+       return nil
+}
+
+// Marshal serializes the value provided into a YAML document. The structure
+// of the generated document will reflect the structure of the value itself.
+// Maps and pointers (to struct, string, int, etc) are accepted as the in value.
+//
+// Struct fields are only unmarshalled if they are exported (have an upper case
+// first letter), and are unmarshalled using the field name lowercased as the
+// default key. Custom keys may be defined via the "yaml" name in the field
+// tag: the content preceding the first comma is used as the key, and the
+// following comma-separated options are used to tweak the marshalling process.
+// Conflicting names result in a runtime error.
+//
+// The field tag format accepted is:
+//
+//     `(...) yaml:"[<key>][,<flag1>[,<flag2>]]" (...)`
+//
+// The following flags are currently supported:
+//
+//     omitempty    Only include the field if it's not set to the zero
+//                  value for the type or to empty slices or maps.
+//                  Does not apply to zero valued structs.
+//
+//     flow         Marshal using a flow style (useful for structs,
+//                  sequences and maps).
+//
+//     inline       Inline the field, which must be a struct or a map,
+//                  causing all of its fields or keys to be processed as if
+//                  they were part of the outer struct. For maps, keys must
+//                  not conflict with the yaml keys of other struct fields.
+//
+// In addition, if the key is "-", the field is ignored.
+//
+// For example:
+//
+//     type T struct {
+//         F int "a,omitempty"
+//         B int
+//     }
+//     yaml.Marshal(&T{B: 2}) // Returns "b: 2\n"
+//     yaml.Marshal(&T{F: 1}} // Returns "a: 1\nb: 0\n"
+//
+func Marshal(in interface{}) (out []byte, err error) {
+       defer handleErr(&err)
+       e := newEncoder()
+       defer e.destroy()
+       e.marshal("", reflect.ValueOf(in))
+       e.finish()
+       out = e.out
+       return
+}
+
+func handleErr(err *error) {
+       if v := recover(); v != nil {
+               if e, ok := v.(yamlError); ok {
+                       *err = e.err
+               } else {
+                       panic(v)
+               }
+       }
+}
+
+type yamlError struct {
+       err error
+}
+
+func fail(err error) {
+       panic(yamlError{err})
+}
+
+func failf(format string, args ...interface{}) {
+       panic(yamlError{fmt.Errorf("yaml: "+format, args...)})
+}
+
+// A TypeError is returned by Unmarshal when one or more fields in
+// the YAML document cannot be properly decoded into the requested
+// types. When this error is returned, the value is still
+// unmarshaled partially.
+type TypeError struct {
+       Errors []string
+}
+
+func (e *TypeError) Error() string {
+       return fmt.Sprintf("yaml: unmarshal errors:\n  %s", strings.Join(e.Errors, "\n  "))
+}
+
+// --------------------------------------------------------------------------
+// Maintain a mapping of keys to structure field indexes
+
+// The code in this section was copied from mgo/bson.
+
+// structInfo holds details for the serialization of fields of
+// a given struct.
+type structInfo struct {
+       FieldsMap  map[string]fieldInfo
+       FieldsList []fieldInfo
+
+       // InlineMap is the number of the field in the struct that
+       // contains an ,inline map, or -1 if there's none.
+       InlineMap int
+}
+
+type fieldInfo struct {
+       Key       string
+       Num       int
+       OmitEmpty bool
+       Flow      bool
+
+       // Inline holds the field index if the field is part of an inlined struct.
+       Inline []int
+}
+
+var structMap = make(map[reflect.Type]*structInfo)
+var fieldMapMutex sync.RWMutex
+
+func getStructInfo(st reflect.Type) (*structInfo, error) {
+       fieldMapMutex.RLock()
+       sinfo, found := structMap[st]
+       fieldMapMutex.RUnlock()
+       if found {
+               return sinfo, nil
+       }
+
+       n := st.NumField()
+       fieldsMap := make(map[string]fieldInfo)
+       fieldsList := make([]fieldInfo, 0, n)
+       inlineMap := -1
+       for i := 0; i != n; i++ {
+               field := st.Field(i)
+               if field.PkgPath != "" && !field.Anonymous {
+                       continue // Private field
+               }
+
+               info := fieldInfo{Num: i}
+
+               tag := field.Tag.Get("yaml")
+               if tag == "" && strings.Index(string(field.Tag), ":") < 0 {
+                       tag = string(field.Tag)
+               }
+               if tag == "-" {
+                       continue
+               }
+
+               inline := false
+               fields := strings.Split(tag, ",")
+               if len(fields) > 1 {
+                       for _, flag := range fields[1:] {
+                               switch flag {
+                               case "omitempty":
+                                       info.OmitEmpty = true
+                               case "flow":
+                                       info.Flow = true
+                               case "inline":
+                                       inline = true
+                               default:
+                                       return nil, errors.New(fmt.Sprintf("Unsupported flag %q in tag %q of type %s", flag, tag, st))
+                               }
+                       }
+                       tag = fields[0]
+               }
+
+               if inline {
+                       switch field.Type.Kind() {
+                       case reflect.Map:
+                               if inlineMap >= 0 {
+                                       return nil, errors.New("Multiple ,inline maps in struct " + st.String())
+                               }
+                               if field.Type.Key() != reflect.TypeOf("") {
+                                       return nil, errors.New("Option ,inline needs a map with string keys in struct " + st.String())
+                               }
+                               inlineMap = info.Num
+                       case reflect.Struct:
+                               sinfo, err := getStructInfo(field.Type)
+                               if err != nil {
+                                       return nil, err
+                               }
+                               for _, finfo := range sinfo.FieldsList {
+                                       if _, found := fieldsMap[finfo.Key]; found {
+                                               msg := "Duplicated key '" + finfo.Key + "' in struct " + st.String()
+                                               return nil, errors.New(msg)
+                                       }
+                                       if finfo.Inline == nil {
+                                               finfo.Inline = []int{i, finfo.Num}
+                                       } else {
+                                               finfo.Inline = append([]int{i}, finfo.Inline...)
+                                       }
+                                       fieldsMap[finfo.Key] = finfo
+                                       fieldsList = append(fieldsList, finfo)
+                               }
+                       default:
+                               //return nil, errors.New("Option ,inline needs a struct value or map field")
+                               return nil, errors.New("Option ,inline needs a struct value field")
+                       }
+                       continue
+               }
+
+               if tag != "" {
+                       info.Key = tag
+               } else {
+                       info.Key = strings.ToLower(field.Name)
+               }
+
+               if _, found = fieldsMap[info.Key]; found {
+                       msg := "Duplicated key '" + info.Key + "' in struct " + st.String()
+                       return nil, errors.New(msg)
+               }
+
+               fieldsList = append(fieldsList, info)
+               fieldsMap[info.Key] = info
+       }
+
+       sinfo = &structInfo{fieldsMap, fieldsList, inlineMap}
+
+       fieldMapMutex.Lock()
+       structMap[st] = sinfo
+       fieldMapMutex.Unlock()
+       return sinfo, nil
+}
+
+func isZero(v reflect.Value) bool {
+       switch v.Kind() {
+       case reflect.String:
+               return len(v.String()) == 0
+       case reflect.Interface, reflect.Ptr:
+               return v.IsNil()
+       case reflect.Slice:
+               return v.Len() == 0
+       case reflect.Map:
+               return v.Len() == 0
+       case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
+               return v.Int() == 0
+       case reflect.Float32, reflect.Float64:
+               return v.Float() == 0
+       case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
+               return v.Uint() == 0
+       case reflect.Bool:
+               return !v.Bool()
+       case reflect.Struct:
+               vt := v.Type()
+               for i := v.NumField() - 1; i >= 0; i-- {
+                       if vt.Field(i).PkgPath != "" {
+                               continue // Private field
+                       }
+                       if !isZero(v.Field(i)) {
+                               return false
+                       }
+               }
+               return true
+       }
+       return false
+}
diff --git a/vendor/gopkg.in/yaml.v2/yamlh.go b/vendor/gopkg.in/yaml.v2/yamlh.go
new file mode 100644 (file)
index 0000000..d60a6b6
--- /dev/null
@@ -0,0 +1,716 @@
+package yaml
+
+import (
+       "io"
+)
+
+// The version directive data.
+type yaml_version_directive_t struct {
+       major int8 // The major version number.
+       minor int8 // The minor version number.
+}
+
+// The tag directive data.
+type yaml_tag_directive_t struct {
+       handle []byte // The tag handle.
+       prefix []byte // The tag prefix.
+}
+
+type yaml_encoding_t int
+
+// The stream encoding.
+const (
+       // Let the parser choose the encoding.
+       yaml_ANY_ENCODING yaml_encoding_t = iota
+
+       yaml_UTF8_ENCODING    // The default UTF-8 encoding.
+       yaml_UTF16LE_ENCODING // The UTF-16-LE encoding with BOM.
+       yaml_UTF16BE_ENCODING // The UTF-16-BE encoding with BOM.
+)
+
+type yaml_break_t int
+
+// Line break types.
+const (
+       // Let the parser choose the break type.
+       yaml_ANY_BREAK yaml_break_t = iota
+
+       yaml_CR_BREAK   // Use CR for line breaks (Mac style).
+       yaml_LN_BREAK   // Use LN for line breaks (Unix style).
+       yaml_CRLN_BREAK // Use CR LN for line breaks (DOS style).
+)
+
+type yaml_error_type_t int
+
+// Many bad things could happen with the parser and emitter.
+const (
+       // No error is produced.
+       yaml_NO_ERROR yaml_error_type_t = iota
+
+       yaml_MEMORY_ERROR   // Cannot allocate or reallocate a block of memory.
+       yaml_READER_ERROR   // Cannot read or decode the input stream.
+       yaml_SCANNER_ERROR  // Cannot scan the input stream.
+       yaml_PARSER_ERROR   // Cannot parse the input stream.
+       yaml_COMPOSER_ERROR // Cannot compose a YAML document.
+       yaml_WRITER_ERROR   // Cannot write to the output stream.
+       yaml_EMITTER_ERROR  // Cannot emit a YAML stream.
+)
+
+// The pointer position.
+type yaml_mark_t struct {
+       index  int // The position index.
+       line   int // The position line.
+       column int // The position column.
+}
+
+// Node Styles
+
+type yaml_style_t int8
+
+type yaml_scalar_style_t yaml_style_t
+
+// Scalar styles.
+const (
+       // Let the emitter choose the style.
+       yaml_ANY_SCALAR_STYLE yaml_scalar_style_t = iota
+
+       yaml_PLAIN_SCALAR_STYLE         // The plain scalar style.
+       yaml_SINGLE_QUOTED_SCALAR_STYLE // The single-quoted scalar style.
+       yaml_DOUBLE_QUOTED_SCALAR_STYLE // The double-quoted scalar style.
+       yaml_LITERAL_SCALAR_STYLE       // The literal scalar style.
+       yaml_FOLDED_SCALAR_STYLE        // The folded scalar style.
+)
+
+type yaml_sequence_style_t yaml_style_t
+
+// Sequence styles.
+const (
+       // Let the emitter choose the style.
+       yaml_ANY_SEQUENCE_STYLE yaml_sequence_style_t = iota
+
+       yaml_BLOCK_SEQUENCE_STYLE // The block sequence style.
+       yaml_FLOW_SEQUENCE_STYLE  // The flow sequence style.
+)
+
+type yaml_mapping_style_t yaml_style_t
+
+// Mapping styles.
+const (
+       // Let the emitter choose the style.
+       yaml_ANY_MAPPING_STYLE yaml_mapping_style_t = iota
+
+       yaml_BLOCK_MAPPING_STYLE // The block mapping style.
+       yaml_FLOW_MAPPING_STYLE  // The flow mapping style.
+)
+
+// Tokens
+
+type yaml_token_type_t int
+
+// Token types.
+const (
+       // An empty token.
+       yaml_NO_TOKEN yaml_token_type_t = iota
+
+       yaml_STREAM_START_TOKEN // A STREAM-START token.
+       yaml_STREAM_END_TOKEN   // A STREAM-END token.
+
+       yaml_VERSION_DIRECTIVE_TOKEN // A VERSION-DIRECTIVE token.
+       yaml_TAG_DIRECTIVE_TOKEN     // A TAG-DIRECTIVE token.
+       yaml_DOCUMENT_START_TOKEN    // A DOCUMENT-START token.
+       yaml_DOCUMENT_END_TOKEN      // A DOCUMENT-END token.
+
+       yaml_BLOCK_SEQUENCE_START_TOKEN // A BLOCK-SEQUENCE-START token.
+       yaml_BLOCK_MAPPING_START_TOKEN  // A BLOCK-SEQUENCE-END token.
+       yaml_BLOCK_END_TOKEN            // A BLOCK-END token.
+
+       yaml_FLOW_SEQUENCE_START_TOKEN // A FLOW-SEQUENCE-START token.
+       yaml_FLOW_SEQUENCE_END_TOKEN   // A FLOW-SEQUENCE-END token.
+       yaml_FLOW_MAPPING_START_TOKEN  // A FLOW-MAPPING-START token.
+       yaml_FLOW_MAPPING_END_TOKEN    // A FLOW-MAPPING-END token.
+
+       yaml_BLOCK_ENTRY_TOKEN // A BLOCK-ENTRY token.
+       yaml_FLOW_ENTRY_TOKEN  // A FLOW-ENTRY token.
+       yaml_KEY_TOKEN         // A KEY token.
+       yaml_VALUE_TOKEN       // A VALUE token.
+
+       yaml_ALIAS_TOKEN  // An ALIAS token.
+       yaml_ANCHOR_TOKEN // An ANCHOR token.
+       yaml_TAG_TOKEN    // A TAG token.
+       yaml_SCALAR_TOKEN // A SCALAR token.
+)
+
+func (tt yaml_token_type_t) String() string {
+       switch tt {
+       case yaml_NO_TOKEN:
+               return "yaml_NO_TOKEN"
+       case yaml_STREAM_START_TOKEN:
+               return "yaml_STREAM_START_TOKEN"
+       case yaml_STREAM_END_TOKEN:
+               return "yaml_STREAM_END_TOKEN"
+       case yaml_VERSION_DIRECTIVE_TOKEN:
+               return "yaml_VERSION_DIRECTIVE_TOKEN"
+       case yaml_TAG_DIRECTIVE_TOKEN:
+               return "yaml_TAG_DIRECTIVE_TOKEN"
+       case yaml_DOCUMENT_START_TOKEN:
+               return "yaml_DOCUMENT_START_TOKEN"
+       case yaml_DOCUMENT_END_TOKEN:
+               return "yaml_DOCUMENT_END_TOKEN"
+       case yaml_BLOCK_SEQUENCE_START_TOKEN:
+               return "yaml_BLOCK_SEQUENCE_START_TOKEN"
+       case yaml_BLOCK_MAPPING_START_TOKEN:
+               return "yaml_BLOCK_MAPPING_START_TOKEN"
+       case yaml_BLOCK_END_TOKEN:
+               return "yaml_BLOCK_END_TOKEN"
+       case yaml_FLOW_SEQUENCE_START_TOKEN:
+               return "yaml_FLOW_SEQUENCE_START_TOKEN"
+       case yaml_FLOW_SEQUENCE_END_TOKEN:
+               return "yaml_FLOW_SEQUENCE_END_TOKEN"
+       case yaml_FLOW_MAPPING_START_TOKEN:
+               return "yaml_FLOW_MAPPING_START_TOKEN"
+       case yaml_FLOW_MAPPING_END_TOKEN:
+               return "yaml_FLOW_MAPPING_END_TOKEN"
+       case yaml_BLOCK_ENTRY_TOKEN:
+               return "yaml_BLOCK_ENTRY_TOKEN"
+       case yaml_FLOW_ENTRY_TOKEN:
+               return "yaml_FLOW_ENTRY_TOKEN"
+       case yaml_KEY_TOKEN:
+               return "yaml_KEY_TOKEN"
+       case yaml_VALUE_TOKEN:
+               return "yaml_VALUE_TOKEN"
+       case yaml_ALIAS_TOKEN:
+               return "yaml_ALIAS_TOKEN"
+       case yaml_ANCHOR_TOKEN:
+               return "yaml_ANCHOR_TOKEN"
+       case yaml_TAG_TOKEN:
+               return "yaml_TAG_TOKEN"
+       case yaml_SCALAR_TOKEN:
+               return "yaml_SCALAR_TOKEN"
+       }
+       return "<unknown token>"
+}
+
+// The token structure.
+type yaml_token_t struct {
+       // The token type.
+       typ yaml_token_type_t
+
+       // The start/end of the token.
+       start_mark, end_mark yaml_mark_t
+
+       // The stream encoding (for yaml_STREAM_START_TOKEN).
+       encoding yaml_encoding_t
+
+       // The alias/anchor/scalar value or tag/tag directive handle
+       // (for yaml_ALIAS_TOKEN, yaml_ANCHOR_TOKEN, yaml_SCALAR_TOKEN, yaml_TAG_TOKEN, yaml_TAG_DIRECTIVE_TOKEN).
+       value []byte
+
+       // The tag suffix (for yaml_TAG_TOKEN).
+       suffix []byte
+
+       // The tag directive prefix (for yaml_TAG_DIRECTIVE_TOKEN).
+       prefix []byte
+
+       // The scalar style (for yaml_SCALAR_TOKEN).
+       style yaml_scalar_style_t
+
+       // The version directive major/minor (for yaml_VERSION_DIRECTIVE_TOKEN).
+       major, minor int8
+}
+
+// Events
+
+type yaml_event_type_t int8
+
+// Event types.
+const (
+       // An empty event.
+       yaml_NO_EVENT yaml_event_type_t = iota
+
+       yaml_STREAM_START_EVENT   // A STREAM-START event.
+       yaml_STREAM_END_EVENT     // A STREAM-END event.
+       yaml_DOCUMENT_START_EVENT // A DOCUMENT-START event.
+       yaml_DOCUMENT_END_EVENT   // A DOCUMENT-END event.
+       yaml_ALIAS_EVENT          // An ALIAS event.
+       yaml_SCALAR_EVENT         // A SCALAR event.
+       yaml_SEQUENCE_START_EVENT // A SEQUENCE-START event.
+       yaml_SEQUENCE_END_EVENT   // A SEQUENCE-END event.
+       yaml_MAPPING_START_EVENT  // A MAPPING-START event.
+       yaml_MAPPING_END_EVENT    // A MAPPING-END event.
+)
+
+// The event structure.
+type yaml_event_t struct {
+
+       // The event type.
+       typ yaml_event_type_t
+
+       // The start and end of the event.
+       start_mark, end_mark yaml_mark_t
+
+       // The document encoding (for yaml_STREAM_START_EVENT).
+       encoding yaml_encoding_t
+
+       // The version directive (for yaml_DOCUMENT_START_EVENT).
+       version_directive *yaml_version_directive_t
+
+       // The list of tag directives (for yaml_DOCUMENT_START_EVENT).
+       tag_directives []yaml_tag_directive_t
+
+       // The anchor (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_ALIAS_EVENT).
+       anchor []byte
+
+       // The tag (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT).
+       tag []byte
+
+       // The scalar value (for yaml_SCALAR_EVENT).
+       value []byte
+
+       // Is the document start/end indicator implicit, or the tag optional?
+       // (for yaml_DOCUMENT_START_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_SCALAR_EVENT).
+       implicit bool
+
+       // Is the tag optional for any non-plain style? (for yaml_SCALAR_EVENT).
+       quoted_implicit bool
+
+       // The style (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT).
+       style yaml_style_t
+}
+
+func (e *yaml_event_t) scalar_style() yaml_scalar_style_t     { return yaml_scalar_style_t(e.style) }
+func (e *yaml_event_t) sequence_style() yaml_sequence_style_t { return yaml_sequence_style_t(e.style) }
+func (e *yaml_event_t) mapping_style() yaml_mapping_style_t   { return yaml_mapping_style_t(e.style) }
+
+// Nodes
+
+const (
+       yaml_NULL_TAG      = "tag:yaml.org,2002:null"      // The tag !!null with the only possible value: null.
+       yaml_BOOL_TAG      = "tag:yaml.org,2002:bool"      // The tag !!bool with the values: true and false.
+       yaml_STR_TAG       = "tag:yaml.org,2002:str"       // The tag !!str for string values.
+       yaml_INT_TAG       = "tag:yaml.org,2002:int"       // The tag !!int for integer values.
+       yaml_FLOAT_TAG     = "tag:yaml.org,2002:float"     // The tag !!float for float values.
+       yaml_TIMESTAMP_TAG = "tag:yaml.org,2002:timestamp" // The tag !!timestamp for date and time values.
+
+       yaml_SEQ_TAG = "tag:yaml.org,2002:seq" // The tag !!seq is used to denote sequences.
+       yaml_MAP_TAG = "tag:yaml.org,2002:map" // The tag !!map is used to denote mapping.
+
+       // Not in original libyaml.
+       yaml_BINARY_TAG = "tag:yaml.org,2002:binary"
+       yaml_MERGE_TAG  = "tag:yaml.org,2002:merge"
+
+       yaml_DEFAULT_SCALAR_TAG   = yaml_STR_TAG // The default scalar tag is !!str.
+       yaml_DEFAULT_SEQUENCE_TAG = yaml_SEQ_TAG // The default sequence tag is !!seq.
+       yaml_DEFAULT_MAPPING_TAG  = yaml_MAP_TAG // The default mapping tag is !!map.
+)
+
+type yaml_node_type_t int
+
+// Node types.
+const (
+       // An empty node.
+       yaml_NO_NODE yaml_node_type_t = iota
+
+       yaml_SCALAR_NODE   // A scalar node.
+       yaml_SEQUENCE_NODE // A sequence node.
+       yaml_MAPPING_NODE  // A mapping node.
+)
+
+// An element of a sequence node.
+type yaml_node_item_t int
+
+// An element of a mapping node.
+type yaml_node_pair_t struct {
+       key   int // The key of the element.
+       value int // The value of the element.
+}
+
+// The node structure.
+type yaml_node_t struct {
+       typ yaml_node_type_t // The node type.
+       tag []byte           // The node tag.
+
+       // The node data.
+
+       // The scalar parameters (for yaml_SCALAR_NODE).
+       scalar struct {
+               value  []byte              // The scalar value.
+               length int                 // The length of the scalar value.
+               style  yaml_scalar_style_t // The scalar style.
+       }
+
+       // The sequence parameters (for YAML_SEQUENCE_NODE).
+       sequence struct {
+               items_data []yaml_node_item_t    // The stack of sequence items.
+               style      yaml_sequence_style_t // The sequence style.
+       }
+
+       // The mapping parameters (for yaml_MAPPING_NODE).
+       mapping struct {
+               pairs_data  []yaml_node_pair_t   // The stack of mapping pairs (key, value).
+               pairs_start *yaml_node_pair_t    // The beginning of the stack.
+               pairs_end   *yaml_node_pair_t    // The end of the stack.
+               pairs_top   *yaml_node_pair_t    // The top of the stack.
+               style       yaml_mapping_style_t // The mapping style.
+       }
+
+       start_mark yaml_mark_t // The beginning of the node.
+       end_mark   yaml_mark_t // The end of the node.
+
+}
+
+// The document structure.
+type yaml_document_t struct {
+
+       // The document nodes.
+       nodes []yaml_node_t
+
+       // The version directive.
+       version_directive *yaml_version_directive_t
+
+       // The list of tag directives.
+       tag_directives_data  []yaml_tag_directive_t
+       tag_directives_start int // The beginning of the tag directives list.
+       tag_directives_end   int // The end of the tag directives list.
+
+       start_implicit int // Is the document start indicator implicit?
+       end_implicit   int // Is the document end indicator implicit?
+
+       // The start/end of the document.
+       start_mark, end_mark yaml_mark_t
+}
+
+// The prototype of a read handler.
+//
+// The read handler is called when the parser needs to read more bytes from the
+// source. The handler should write not more than size bytes to the buffer.
+// The number of written bytes should be set to the size_read variable.
+//
+// [in,out]   data        A pointer to an application data specified by
+//                        yaml_parser_set_input().
+// [out]      buffer      The buffer to write the data from the source.
+// [in]       size        The size of the buffer.
+// [out]      size_read   The actual number of bytes read from the source.
+//
+// On success, the handler should return 1.  If the handler failed,
+// the returned value should be 0. On EOF, the handler should set the
+// size_read to 0 and return 1.
+type yaml_read_handler_t func(parser *yaml_parser_t, buffer []byte) (n int, err error)
+
+// This structure holds information about a potential simple key.
+type yaml_simple_key_t struct {
+       possible     bool        // Is a simple key possible?
+       required     bool        // Is a simple key required?
+       token_number int         // The number of the token.
+       mark         yaml_mark_t // The position mark.
+}
+
+// The states of the parser.
+type yaml_parser_state_t int
+
+const (
+       yaml_PARSE_STREAM_START_STATE yaml_parser_state_t = iota
+
+       yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE           // Expect the beginning of an implicit document.
+       yaml_PARSE_DOCUMENT_START_STATE                    // Expect DOCUMENT-START.
+       yaml_PARSE_DOCUMENT_CONTENT_STATE                  // Expect the content of a document.
+       yaml_PARSE_DOCUMENT_END_STATE                      // Expect DOCUMENT-END.
+       yaml_PARSE_BLOCK_NODE_STATE                        // Expect a block node.
+       yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE // Expect a block node or indentless sequence.
+       yaml_PARSE_FLOW_NODE_STATE                         // Expect a flow node.
+       yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE        // Expect the first entry of a block sequence.
+       yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE              // Expect an entry of a block sequence.
+       yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE         // Expect an entry of an indentless sequence.
+       yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE           // Expect the first key of a block mapping.
+       yaml_PARSE_BLOCK_MAPPING_KEY_STATE                 // Expect a block mapping key.
+       yaml_PARSE_BLOCK_MAPPING_VALUE_STATE               // Expect a block mapping value.
+       yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE         // Expect the first entry of a flow sequence.
+       yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE               // Expect an entry of a flow sequence.
+       yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE   // Expect a key of an ordered mapping.
+       yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE // Expect a value of an ordered mapping.
+       yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE   // Expect the and of an ordered mapping entry.
+       yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE            // Expect the first key of a flow mapping.
+       yaml_PARSE_FLOW_MAPPING_KEY_STATE                  // Expect a key of a flow mapping.
+       yaml_PARSE_FLOW_MAPPING_VALUE_STATE                // Expect a value of a flow mapping.
+       yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE          // Expect an empty value of a flow mapping.
+       yaml_PARSE_END_STATE                               // Expect nothing.
+)
+
+func (ps yaml_parser_state_t) String() string {
+       switch ps {
+       case yaml_PARSE_STREAM_START_STATE:
+               return "yaml_PARSE_STREAM_START_STATE"
+       case yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE:
+               return "yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE"
+       case yaml_PARSE_DOCUMENT_START_STATE:
+               return "yaml_PARSE_DOCUMENT_START_STATE"
+       case yaml_PARSE_DOCUMENT_CONTENT_STATE:
+               return "yaml_PARSE_DOCUMENT_CONTENT_STATE"
+       case yaml_PARSE_DOCUMENT_END_STATE:
+               return "yaml_PARSE_DOCUMENT_END_STATE"
+       case yaml_PARSE_BLOCK_NODE_STATE:
+               return "yaml_PARSE_BLOCK_NODE_STATE"
+       case yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE:
+               return "yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE"
+       case yaml_PARSE_FLOW_NODE_STATE:
+               return "yaml_PARSE_FLOW_NODE_STATE"
+       case yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE:
+               return "yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE"
+       case yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE:
+               return "yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE"
+       case yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE:
+               return "yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE"
+       case yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE:
+               return "yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE"
+       case yaml_PARSE_BLOCK_MAPPING_KEY_STATE:
+               return "yaml_PARSE_BLOCK_MAPPING_KEY_STATE"
+       case yaml_PARSE_BLOCK_MAPPING_VALUE_STATE:
+               return "yaml_PARSE_BLOCK_MAPPING_VALUE_STATE"
+       case yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE:
+               return "yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE"
+       case yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE:
+               return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE"
+       case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE:
+               return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE"
+       case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE:
+               return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE"
+       case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE:
+               return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE"
+       case yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE:
+               return "yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE"
+       case yaml_PARSE_FLOW_MAPPING_KEY_STATE:
+               return "yaml_PARSE_FLOW_MAPPING_KEY_STATE"
+       case yaml_PARSE_FLOW_MAPPING_VALUE_STATE:
+               return "yaml_PARSE_FLOW_MAPPING_VALUE_STATE"
+       case yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE:
+               return "yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE"
+       case yaml_PARSE_END_STATE:
+               return "yaml_PARSE_END_STATE"
+       }
+       return "<unknown parser state>"
+}
+
+// This structure holds aliases data.
+type yaml_alias_data_t struct {
+       anchor []byte      // The anchor.
+       index  int         // The node id.
+       mark   yaml_mark_t // The anchor mark.
+}
+
+// The parser structure.
+//
+// All members are internal. Manage the structure using the
+// yaml_parser_ family of functions.
+type yaml_parser_t struct {
+
+       // Error handling
+
+       error yaml_error_type_t // Error type.
+
+       problem string // Error description.
+
+       // The byte about which the problem occured.
+       problem_offset int
+       problem_value  int
+       problem_mark   yaml_mark_t
+
+       // The error context.
+       context      string
+       context_mark yaml_mark_t
+
+       // Reader stuff
+
+       read_handler yaml_read_handler_t // Read handler.
+
+       input_file io.Reader // File input data.
+       input      []byte    // String input data.
+       input_pos  int
+
+       eof bool // EOF flag
+
+       buffer     []byte // The working buffer.
+       buffer_pos int    // The current position of the buffer.
+
+       unread int // The number of unread characters in the buffer.
+
+       raw_buffer     []byte // The raw buffer.
+       raw_buffer_pos int    // The current position of the buffer.
+
+       encoding yaml_encoding_t // The input encoding.
+
+       offset int         // The offset of the current position (in bytes).
+       mark   yaml_mark_t // The mark of the current position.
+
+       // Scanner stuff
+
+       stream_start_produced bool // Have we started to scan the input stream?
+       stream_end_produced   bool // Have we reached the end of the input stream?
+
+       flow_level int // The number of unclosed '[' and '{' indicators.
+
+       tokens          []yaml_token_t // The tokens queue.
+       tokens_head     int            // The head of the tokens queue.
+       tokens_parsed   int            // The number of tokens fetched from the queue.
+       token_available bool           // Does the tokens queue contain a token ready for dequeueing.
+
+       indent  int   // The current indentation level.
+       indents []int // The indentation levels stack.
+
+       simple_key_allowed bool                // May a simple key occur at the current position?
+       simple_keys        []yaml_simple_key_t // The stack of simple keys.
+
+       // Parser stuff
+
+       state          yaml_parser_state_t    // The current parser state.
+       states         []yaml_parser_state_t  // The parser states stack.
+       marks          []yaml_mark_t          // The stack of marks.
+       tag_directives []yaml_tag_directive_t // The list of TAG directives.
+
+       // Dumper stuff
+
+       aliases []yaml_alias_data_t // The alias data.
+
+       document *yaml_document_t // The currently parsed document.
+}
+
+// Emitter Definitions
+
+// The prototype of a write handler.
+//
+// The write handler is called when the emitter needs to flush the accumulated
+// characters to the output.  The handler should write @a size bytes of the
+// @a buffer to the output.
+//
+// @param[in,out]   data        A pointer to an application data specified by
+//                              yaml_emitter_set_output().
+// @param[in]       buffer      The buffer with bytes to be written.
+// @param[in]       size        The size of the buffer.
+//
+// @returns On success, the handler should return @c 1.  If the handler failed,
+// the returned value should be @c 0.
+//
+type yaml_write_handler_t func(emitter *yaml_emitter_t, buffer []byte) error
+
+type yaml_emitter_state_t int
+
+// The emitter states.
+const (
+       // Expect STREAM-START.
+       yaml_EMIT_STREAM_START_STATE yaml_emitter_state_t = iota
+
+       yaml_EMIT_FIRST_DOCUMENT_START_STATE       // Expect the first DOCUMENT-START or STREAM-END.
+       yaml_EMIT_DOCUMENT_START_STATE             // Expect DOCUMENT-START or STREAM-END.
+       yaml_EMIT_DOCUMENT_CONTENT_STATE           // Expect the content of a document.
+       yaml_EMIT_DOCUMENT_END_STATE               // Expect DOCUMENT-END.
+       yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE   // Expect the first item of a flow sequence.
+       yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE         // Expect an item of a flow sequence.
+       yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE     // Expect the first key of a flow mapping.
+       yaml_EMIT_FLOW_MAPPING_KEY_STATE           // Expect a key of a flow mapping.
+       yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE  // Expect a value for a simple key of a flow mapping.
+       yaml_EMIT_FLOW_MAPPING_VALUE_STATE         // Expect a value of a flow mapping.
+       yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE  // Expect the first item of a block sequence.
+       yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE        // Expect an item of a block sequence.
+       yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE    // Expect the first key of a block mapping.
+       yaml_EMIT_BLOCK_MAPPING_KEY_STATE          // Expect the key of a block mapping.
+       yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE // Expect a value for a simple key of a block mapping.
+       yaml_EMIT_BLOCK_MAPPING_VALUE_STATE        // Expect a value of a block mapping.
+       yaml_EMIT_END_STATE                        // Expect nothing.
+)
+
+// The emitter structure.
+//
+// All members are internal.  Manage the structure using the @c yaml_emitter_
+// family of functions.
+type yaml_emitter_t struct {
+
+       // Error handling
+
+       error   yaml_error_type_t // Error type.
+       problem string            // Error description.
+
+       // Writer stuff
+
+       write_handler yaml_write_handler_t // Write handler.
+
+       output_buffer *[]byte   // String output data.
+       output_file   io.Writer // File output data.
+
+       buffer     []byte // The working buffer.
+       buffer_pos int    // The current position of the buffer.
+
+       raw_buffer     []byte // The raw buffer.
+       raw_buffer_pos int    // The current position of the buffer.
+
+       encoding yaml_encoding_t // The stream encoding.
+
+       // Emitter stuff
+
+       canonical   bool         // If the output is in the canonical style?
+       best_indent int          // The number of indentation spaces.
+       best_width  int          // The preferred width of the output lines.
+       unicode     bool         // Allow unescaped non-ASCII characters?
+       line_break  yaml_break_t // The preferred line break.
+
+       state  yaml_emitter_state_t   // The current emitter state.
+       states []yaml_emitter_state_t // The stack of states.
+
+       events      []yaml_event_t // The event queue.
+       events_head int            // The head of the event queue.
+
+       indents []int // The stack of indentation levels.
+
+       tag_directives []yaml_tag_directive_t // The list of tag directives.
+
+       indent int // The current indentation level.
+
+       flow_level int // The current flow level.
+
+       root_context       bool // Is it the document root context?
+       sequence_context   bool // Is it a sequence context?
+       mapping_context    bool // Is it a mapping context?
+       simple_key_context bool // Is it a simple mapping key context?
+
+       line       int  // The current line.
+       column     int  // The current column.
+       whitespace bool // If the last character was a whitespace?
+       indention  bool // If the last character was an indentation character (' ', '-', '?', ':')?
+       open_ended bool // If an explicit document end is required?
+
+       // Anchor analysis.
+       anchor_data struct {
+               anchor []byte // The anchor value.
+               alias  bool   // Is it an alias?
+       }
+
+       // Tag analysis.
+       tag_data struct {
+               handle []byte // The tag handle.
+               suffix []byte // The tag suffix.
+       }
+
+       // Scalar analysis.
+       scalar_data struct {
+               value                 []byte              // The scalar value.
+               multiline             bool                // Does the scalar contain line breaks?
+               flow_plain_allowed    bool                // Can the scalar be expessed in the flow plain style?
+               block_plain_allowed   bool                // Can the scalar be expressed in the block plain style?
+               single_quoted_allowed bool                // Can the scalar be expressed in the single quoted style?
+               block_allowed         bool                // Can the scalar be expressed in the literal or folded styles?
+               style                 yaml_scalar_style_t // The output style.
+       }
+
+       // Dumper stuff
+
+       opened bool // If the stream was already opened?
+       closed bool // If the stream was already closed?
+
+       // The information associated with the document nodes.
+       anchors *struct {
+               references int  // The number of references.
+               anchor     int  // The anchor id.
+               serialized bool // If the node has been emitted?
+       }
+
+       last_anchor_id int // The last assigned anchor id.
+
+       document *yaml_document_t // The currently emitted document.
+}
diff --git a/vendor/gopkg.in/yaml.v2/yamlprivateh.go b/vendor/gopkg.in/yaml.v2/yamlprivateh.go
new file mode 100644 (file)
index 0000000..8110ce3
--- /dev/null
@@ -0,0 +1,173 @@
+package yaml
+
+const (
+       // The size of the input raw buffer.
+       input_raw_buffer_size = 512
+
+       // The size of the input buffer.
+       // It should be possible to decode the whole raw buffer.
+       input_buffer_size = input_raw_buffer_size * 3
+
+       // The size of the output buffer.
+       output_buffer_size = 128
+
+       // The size of the output raw buffer.
+       // It should be possible to encode the whole output buffer.
+       output_raw_buffer_size = (output_buffer_size*2 + 2)
+
+       // The size of other stacks and queues.
+       initial_stack_size  = 16
+       initial_queue_size  = 16
+       initial_string_size = 16
+)
+
+// Check if the character at the specified position is an alphabetical
+// character, a digit, '_', or '-'.
+func is_alpha(b []byte, i int) bool {
+       return b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'Z' || b[i] >= 'a' && b[i] <= 'z' || b[i] == '_' || b[i] == '-'
+}
+
+// Check if the character at the specified position is a digit.
+func is_digit(b []byte, i int) bool {
+       return b[i] >= '0' && b[i] <= '9'
+}
+
+// Get the value of a digit.
+func as_digit(b []byte, i int) int {
+       return int(b[i]) - '0'
+}
+
+// Check if the character at the specified position is a hex-digit.
+func is_hex(b []byte, i int) bool {
+       return b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'F' || b[i] >= 'a' && b[i] <= 'f'
+}
+
+// Get the value of a hex-digit.
+func as_hex(b []byte, i int) int {
+       bi := b[i]
+       if bi >= 'A' && bi <= 'F' {
+               return int(bi) - 'A' + 10
+       }
+       if bi >= 'a' && bi <= 'f' {
+               return int(bi) - 'a' + 10
+       }
+       return int(bi) - '0'
+}
+
+// Check if the character is ASCII.
+func is_ascii(b []byte, i int) bool {
+       return b[i] <= 0x7F
+}
+
+// Check if the character at the start of the buffer can be printed unescaped.
+func is_printable(b []byte, i int) bool {
+       return ((b[i] == 0x0A) || // . == #x0A
+               (b[i] >= 0x20 && b[i] <= 0x7E) || // #x20 <= . <= #x7E
+               (b[i] == 0xC2 && b[i+1] >= 0xA0) || // #0xA0 <= . <= #xD7FF
+               (b[i] > 0xC2 && b[i] < 0xED) ||
+               (b[i] == 0xED && b[i+1] < 0xA0) ||
+               (b[i] == 0xEE) ||
+               (b[i] == 0xEF && // #xE000 <= . <= #xFFFD
+                       !(b[i+1] == 0xBB && b[i+2] == 0xBF) && // && . != #xFEFF
+                       !(b[i+1] == 0xBF && (b[i+2] == 0xBE || b[i+2] == 0xBF))))
+}
+
+// Check if the character at the specified position is NUL.
+func is_z(b []byte, i int) bool {
+       return b[i] == 0x00
+}
+
+// Check if the beginning of the buffer is a BOM.
+func is_bom(b []byte, i int) bool {
+       return b[0] == 0xEF && b[1] == 0xBB && b[2] == 0xBF
+}
+
+// Check if the character at the specified position is space.
+func is_space(b []byte, i int) bool {
+       return b[i] == ' '
+}
+
+// Check if the character at the specified position is tab.
+func is_tab(b []byte, i int) bool {
+       return b[i] == '\t'
+}
+
+// Check if the character at the specified position is blank (space or tab).
+func is_blank(b []byte, i int) bool {
+       //return is_space(b, i) || is_tab(b, i)
+       return b[i] == ' ' || b[i] == '\t'
+}
+
+// Check if the character at the specified position is a line break.
+func is_break(b []byte, i int) bool {
+       return (b[i] == '\r' || // CR (#xD)
+               b[i] == '\n' || // LF (#xA)
+               b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)
+               b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)
+               b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9) // PS (#x2029)
+}
+
+func is_crlf(b []byte, i int) bool {
+       return b[i] == '\r' && b[i+1] == '\n'
+}
+
+// Check if the character is a line break or NUL.
+func is_breakz(b []byte, i int) bool {
+       //return is_break(b, i) || is_z(b, i)
+       return (        // is_break:
+       b[i] == '\r' || // CR (#xD)
+               b[i] == '\n' || // LF (#xA)
+               b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)
+               b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)
+               b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029)
+               // is_z:
+               b[i] == 0)
+}
+
+// Check if the character is a line break, space, or NUL.
+func is_spacez(b []byte, i int) bool {
+       //return is_space(b, i) || is_breakz(b, i)
+       return ( // is_space:
+       b[i] == ' ' ||
+               // is_breakz:
+               b[i] == '\r' || // CR (#xD)
+               b[i] == '\n' || // LF (#xA)
+               b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)
+               b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)
+               b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029)
+               b[i] == 0)
+}
+
+// Check if the character is a line break, space, tab, or NUL.
+func is_blankz(b []byte, i int) bool {
+       //return is_blank(b, i) || is_breakz(b, i)
+       return ( // is_blank:
+       b[i] == ' ' || b[i] == '\t' ||
+               // is_breakz:
+               b[i] == '\r' || // CR (#xD)
+               b[i] == '\n' || // LF (#xA)
+               b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85)
+               b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028)
+               b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029)
+               b[i] == 0)
+}
+
+// Determine the width of the character.
+func width(b byte) int {
+       // Don't replace these by a switch without first
+       // confirming that it is being inlined.
+       if b&0x80 == 0x00 {
+               return 1
+       }
+       if b&0xE0 == 0xC0 {
+               return 2
+       }
+       if b&0xF0 == 0xE0 {
+               return 3
+       }
+       if b&0xF8 == 0xF0 {
+               return 4
+       }
+       return 0
+
+}
diff --git a/vendor/vendor.json b/vendor/vendor.json
new file mode 100644 (file)
index 0000000..47b2cad
--- /dev/null
@@ -0,0 +1,96 @@
+{
+       "comment": "",
+       "ignore": "test",
+       "package": [
+               {
+                       "path": "github.com/Sirupsen/logrus",
+                       "revision": "4b6ea7319e214d98c938f12692336f7ca9348d6b",
+                       "revisionTime": "2016-03-17T14:11:10Z"
+               },
+               {
+                       "path": "github.com/beorn7/perks/quantile",
+                       "revision": "3ac7bf7a47d159a033b107610db8a1b6575507a4",
+                       "revisionTime": "2016-02-29T22:34:45+01:00"
+               },
+               {
+                       "path": "github.com/golang/protobuf/proto",
+                       "revision": "8d92cf5fc15a4382f8964b08e1f42a75c0591aa3",
+                       "revisionTime": "2016-03-19T05:57:00+11:00"
+               },
+               {
+                       "path": "github.com/matttproud/golang_protobuf_extensions/pbutil",
+                       "revision": "d0c3fe89de86839aecf2e0579c40ba3bb336a453",
+                       "revisionTime": "2015-10-11T12:25:29+02:00"
+               },
+               {
+                       "path": "github.com/prometheus/client_golang/prometheus",
+                       "revision": "90c15b5efa0dc32a7d259234e02ac9a99e6d3b82",
+                       "revisionTime": "2016-03-17T14:26:13+01:00"
+               },
+               {
+                       "path": "github.com/prometheus/client_model/go",
+                       "revision": "fa8ad6fec33561be4280a8f0514318c79d7f6cb6",
+                       "revisionTime": "2015-02-12T10:17:44Z"
+               },
+               {
+                       "path": "github.com/prometheus/common/config",
+                       "revision": "167b27da48d058a9b46d84b834d67f68f0243f67",
+                       "revisionTime": "2016-03-18T12:23:18Z"
+               },
+               {
+                       "path": "github.com/prometheus/common/expfmt",
+                       "revision": "167b27da48d058a9b46d84b834d67f68f0243f67",
+                       "revisionTime": "2016-03-18T12:23:18Z"
+               },
+               {
+                       "path": "github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg",
+                       "revision": "167b27da48d058a9b46d84b834d67f68f0243f67",
+                       "revisionTime": "2016-03-18T12:23:18Z"
+               },
+               {
+                       "path": "github.com/prometheus/common/model",
+                       "revision": "167b27da48d058a9b46d84b834d67f68f0243f67",
+                       "revisionTime": "2016-03-18T12:23:18Z"
+               },
+               {
+                       "path": "github.com/prometheus/log",
+                       "revision": "9a3136781e1ff7bc42736ba4acb81339b1422551",
+                       "revisionTime": "2015-10-26T02:24:52+01:00"
+               },
+               {
+                       "path": "github.com/prometheus/procfs",
+                       "revision": "406e5b7bfd8201a36e2bb5f7bdae0b03380c2ce8",
+                       "revisionTime": "2015-10-29T15:50:50-04:00"
+               },
+               {
+                       "path": "golang.org/x/net/icmp",
+                       "revision": "31df19d69da8728e9220def59b80ee577c3e48bf",
+                       "revisionTime": "2016-03-29T10:16:23+11:00"
+               },
+               {
+                       "path": "golang.org/x/net/internal/iana",
+                       "revision": "31df19d69da8728e9220def59b80ee577c3e48bf",
+                       "revisionTime": "2016-03-29T10:16:23+11:00"
+               },
+               {
+                       "path": "golang.org/x/net/ipv4",
+                       "revision": "31df19d69da8728e9220def59b80ee577c3e48bf",
+                       "revisionTime": "2016-03-29T10:16:23+11:00"
+               },
+               {
+                       "path": "golang.org/x/net/ipv6",
+                       "revision": "31df19d69da8728e9220def59b80ee577c3e48bf",
+                       "revisionTime": "2016-03-29T10:16:23+11:00"
+               },
+               {
+                       "path": "golang.org/x/sys/unix",
+                       "revision": "7a56174f0086b32866ebd746a794417edbc678a1",
+                       "revisionTime": "2016-03-02T21:58:15+02:00"
+               },
+               {
+                       "path": "gopkg.in/yaml.v2",
+                       "revision": "a83829b6f1293c91addabc89d0571c246397bbf4",
+                       "revisionTime": "2016-03-01T17:40:22-03:00"
+               }
+       ]
+}